Viewing file: soc_common.h (2.77 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* SPDX-License-Identifier: GPL-2.0 */ #include <pcmcia/ss.h>
struct module; struct cpufreq_freqs;
struct soc_pcmcia_regulator { struct regulator *reg; bool on; };
struct pcmcia_state { unsigned detect: 1, ready: 1, bvd1: 1, bvd2: 1, wrprot: 1, vs_3v: 1, vs_Xv: 1; };
/* * This structure encapsulates per-socket state which we might need to * use when responding to a Card Services query of some kind. */ struct soc_pcmcia_socket { struct pcmcia_socket socket;
/* * Info from low level handler */ unsigned int nr; struct clk *clk;
/* * Core PCMCIA state */ const struct pcmcia_low_level *ops;
unsigned int status; socket_state_t cs_state;
unsigned short spd_io[MAX_IO_WIN]; unsigned short spd_mem[MAX_WIN]; unsigned short spd_attr[MAX_WIN];
struct resource res_skt; struct resource res_io; struct resource res_io_io; struct resource res_mem; struct resource res_attr;
struct { int gpio; struct gpio_desc *desc; unsigned int irq; const char *name; } stat[6]; #define SOC_STAT_CD 0 /* Card detect */ #define SOC_STAT_BVD1 1 /* BATDEAD / IOSTSCHG */ #define SOC_STAT_BVD2 2 /* BATWARN / IOSPKR */ #define SOC_STAT_RDY 3 /* Ready / Interrupt */ #define SOC_STAT_VS1 4 /* Voltage sense 1 */ #define SOC_STAT_VS2 5 /* Voltage sense 2 */
struct gpio_desc *gpio_reset; struct gpio_desc *gpio_bus_enable; struct soc_pcmcia_regulator vcc; struct soc_pcmcia_regulator vpp;
unsigned int irq_state;
#ifdef CONFIG_CPU_FREQ struct notifier_block cpufreq_nb; #endif struct timer_list poll_timer; struct list_head node; void *driver_data; };
struct pcmcia_low_level { struct module *owner;
/* first socket in system */ int first; /* nr of sockets */ int nr;
int (*hw_init)(struct soc_pcmcia_socket *); void (*hw_shutdown)(struct soc_pcmcia_socket *);
void (*socket_state)(struct soc_pcmcia_socket *, struct pcmcia_state *); int (*configure_socket)(struct soc_pcmcia_socket *, const socket_state_t *);
/* * Enable card status IRQs on (re-)initialisation. This can * be called at initialisation, power management event, or * pcmcia event. */ void (*socket_init)(struct soc_pcmcia_socket *);
/* * Disable card status IRQs and PCMCIA bus on suspend. */ void (*socket_suspend)(struct soc_pcmcia_socket *);
/* * Hardware specific timing routines. * If provided, the get_timing routine overrides the SOC default. */ unsigned int (*get_timing)(struct soc_pcmcia_socket *, unsigned int, unsigned int); int (*set_timing)(struct soc_pcmcia_socket *); int (*show_timing)(struct soc_pcmcia_socket *, char *);
#ifdef CONFIG_CPU_FREQ /* * CPUFREQ support. */ int (*frequency_change)(struct soc_pcmcia_socket *, unsigned long, struct cpufreq_freqs *); #endif };
|