cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

soc_common.h (2841B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#include <pcmcia/ss.h>
      3
      4struct module;
      5struct cpufreq_freqs;
      6
      7struct soc_pcmcia_regulator {
      8	struct regulator	*reg;
      9	bool			on;
     10};
     11
     12struct pcmcia_state {
     13  unsigned detect: 1,
     14            ready: 1,
     15             bvd1: 1,
     16             bvd2: 1,
     17           wrprot: 1,
     18            vs_3v: 1,
     19            vs_Xv: 1;
     20};
     21
     22/*
     23 * This structure encapsulates per-socket state which we might need to
     24 * use when responding to a Card Services query of some kind.
     25 */
     26struct soc_pcmcia_socket {
     27	struct pcmcia_socket	socket;
     28
     29	/*
     30	 * Info from low level handler
     31	 */
     32	unsigned int		nr;
     33	struct clk		*clk;
     34
     35	/*
     36	 * Core PCMCIA state
     37	 */
     38	const struct pcmcia_low_level *ops;
     39
     40	unsigned int		status;
     41	socket_state_t		cs_state;
     42
     43	unsigned short		spd_io[MAX_IO_WIN];
     44	unsigned short		spd_mem[MAX_WIN];
     45	unsigned short		spd_attr[MAX_WIN];
     46
     47	struct resource		res_skt;
     48	struct resource		res_io;
     49	struct resource		res_io_io;
     50	struct resource		res_mem;
     51	struct resource		res_attr;
     52
     53	struct {
     54		int		gpio;
     55		struct gpio_desc *desc;
     56		unsigned int	irq;
     57		const char	*name;
     58	} stat[6];
     59#define SOC_STAT_CD		0	/* Card detect */
     60#define SOC_STAT_BVD1		1	/* BATDEAD / IOSTSCHG */
     61#define SOC_STAT_BVD2		2	/* BATWARN / IOSPKR */
     62#define SOC_STAT_RDY		3	/* Ready / Interrupt */
     63#define SOC_STAT_VS1		4	/* Voltage sense 1 */
     64#define SOC_STAT_VS2		5	/* Voltage sense 2 */
     65
     66	struct gpio_desc	*gpio_reset;
     67	struct gpio_desc	*gpio_bus_enable;
     68	struct soc_pcmcia_regulator vcc;
     69	struct soc_pcmcia_regulator vpp;
     70
     71	unsigned int		irq_state;
     72
     73#ifdef CONFIG_CPU_FREQ
     74	struct notifier_block	cpufreq_nb;
     75#endif
     76	struct timer_list	poll_timer;
     77	struct list_head	node;
     78	void *driver_data;
     79};
     80
     81
     82struct pcmcia_low_level {
     83	struct module *owner;
     84
     85	/* first socket in system */
     86	int first;
     87	/* nr of sockets */
     88	int nr;
     89
     90	int (*hw_init)(struct soc_pcmcia_socket *);
     91	void (*hw_shutdown)(struct soc_pcmcia_socket *);
     92
     93	void (*socket_state)(struct soc_pcmcia_socket *, struct pcmcia_state *);
     94	int (*configure_socket)(struct soc_pcmcia_socket *, const socket_state_t *);
     95
     96	/*
     97	 * Enable card status IRQs on (re-)initialisation.  This can
     98	 * be called at initialisation, power management event, or
     99	 * pcmcia event.
    100	 */
    101	void (*socket_init)(struct soc_pcmcia_socket *);
    102
    103	/*
    104	 * Disable card status IRQs and PCMCIA bus on suspend.
    105	 */
    106	void (*socket_suspend)(struct soc_pcmcia_socket *);
    107
    108	/*
    109	 * Hardware specific timing routines.
    110	 * If provided, the get_timing routine overrides the SOC default.
    111	 */
    112	unsigned int (*get_timing)(struct soc_pcmcia_socket *, unsigned int, unsigned int);
    113	int (*set_timing)(struct soc_pcmcia_socket *);
    114	int (*show_timing)(struct soc_pcmcia_socket *, char *);
    115
    116#ifdef CONFIG_CPU_FREQ
    117	/*
    118	 * CPUFREQ support.
    119	 */
    120	int (*frequency_change)(struct soc_pcmcia_socket *, unsigned long, struct cpufreq_freqs *);
    121#endif
    122};
    123
    124
    125