mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-29 17:25:38 +00:00
ARM: pxa: move pcmcia board data into mach-pxa
The drivers/pcmcia/pxa2xx_*.c are essentially part of the board files, but for historic reasons located in drivers/pcmcia. Move them into the same place as the actual board file to avoid lots of machine header inclusions. Cc: Marek Vasut <marek.vasut@gmail.com> Cc: Dominik Brodowski <linux@dominikbrodowski.net> Cc: Jonathan Cameron <jic23@cam.ac.uk> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
parent
2548e6c76e
commit
b83deaa741
@ -37,7 +37,8 @@ obj-$(CONFIG_MACH_SAAR) += saar.o
|
||||
obj-$(CONFIG_ARCH_PXA_IDP) += idp.o
|
||||
obj-$(CONFIG_ARCH_VIPER) += viper.o
|
||||
obj-$(CONFIG_MACH_ARCOM_ZEUS) += zeus.o
|
||||
obj-$(CONFIG_MACH_BALLOON3) += balloon3.o
|
||||
obj-$(CONFIG_ARCOM_PCMCIA) += viper-pcmcia.o
|
||||
obj-$(CONFIG_MACH_BALLOON3) += balloon3.o balloon3-pcmcia.o
|
||||
obj-$(CONFIG_MACH_CSB726) += csb726.o
|
||||
obj-$(CONFIG_CSB726_CSB701) += csb701.o
|
||||
obj-$(CONFIG_MACH_CM_X300) += cm-x300.o
|
||||
@ -47,18 +48,20 @@ obj-$(CONFIG_GUMSTIX_AM200EPD) += am200epd.o
|
||||
obj-$(CONFIG_GUMSTIX_AM300EPD) += am300epd.o
|
||||
obj-$(CONFIG_MACH_XCEP) += xcep.o
|
||||
obj-$(CONFIG_MACH_TRIZEPS4) += trizeps4.o
|
||||
obj-$(CONFIG_TRIZEPS_PCMCIA) += trizeps4-pcmcia.o
|
||||
obj-$(CONFIG_MACH_LOGICPD_PXA270) += lpd270.o
|
||||
obj-$(CONFIG_MACH_PCM027) += pcm027.o
|
||||
obj-$(CONFIG_MACH_PCM990_BASEBOARD) += pcm990-baseboard.o
|
||||
obj-$(CONFIG_MACH_COLIBRI) += colibri-pxa270.o
|
||||
obj-$(CONFIG_MACH_COLIBRI) += colibri-pxa270.o colibri-pcmcia.o
|
||||
obj-$(CONFIG_MACH_COLIBRI_EVALBOARD) += colibri-evalboard.o
|
||||
obj-$(CONFIG_MACH_COLIBRI_PXA270_INCOME) += colibri-pxa270-income.o
|
||||
obj-$(CONFIG_MACH_COLIBRI300) += colibri-pxa3xx.o colibri-pxa300.o
|
||||
obj-$(CONFIG_MACH_COLIBRI320) += colibri-pxa3xx.o colibri-pxa320.o
|
||||
obj-$(CONFIG_MACH_VPAC270) += vpac270.o
|
||||
obj-$(CONFIG_MACH_COLIBRI320) += colibri-pxa3xx.o colibri-pxa320.o colibri-pcmcia.o
|
||||
obj-$(CONFIG_MACH_VPAC270) += vpac270.o vpac270-pcmcia.o
|
||||
|
||||
# End-user Products
|
||||
obj-$(CONFIG_MACH_H4700) += hx4700.o
|
||||
obj-$(CONFIG_MACH_H4700) += hx4700-pcmcia.o
|
||||
obj-$(CONFIG_MACH_H5000) += h5000.o
|
||||
obj-$(CONFIG_MACH_HIMALAYA) += himalaya.o
|
||||
obj-$(CONFIG_MACH_MAGICIAN) += magician.o
|
||||
@ -66,12 +69,12 @@ obj-$(CONFIG_MACH_MIOA701) += mioa701.o mioa701_bootresume.o
|
||||
obj-$(CONFIG_PXA_EZX) += ezx.o
|
||||
obj-$(CONFIG_MACH_MP900C) += mp900.o
|
||||
obj-$(CONFIG_MACH_PALMTE2) += palmte2.o
|
||||
obj-$(CONFIG_MACH_PALMTC) += palmtc.o
|
||||
obj-$(CONFIG_MACH_PALMTC) += palmtc.o palmtc-pcmcia.o
|
||||
obj-$(CONFIG_MACH_PALM27X) += palm27x.o
|
||||
obj-$(CONFIG_MACH_PALMT5) += palmt5.o
|
||||
obj-$(CONFIG_MACH_PALMTX) += palmtx.o
|
||||
obj-$(CONFIG_MACH_PALMTX) += palmtx.o palmtx-pcmcia.o
|
||||
obj-$(CONFIG_MACH_PALMZ72) += palmz72.o
|
||||
obj-$(CONFIG_MACH_PALMLD) += palmld.o
|
||||
obj-$(CONFIG_MACH_PALMLD) += palmld.o palmld-pcmcia.o
|
||||
obj-$(CONFIG_PALM_TREO) += palmtreo.o
|
||||
obj-$(CONFIG_PXA_SHARP_C7xx) += corgi.o sharpsl_pm.o corgi_pm.o
|
||||
obj-$(CONFIG_PXA_SHARP_Cxx00) += spitz.o sharpsl_pm.o spitz_pm.o
|
||||
@ -79,6 +82,7 @@ obj-$(CONFIG_MACH_POODLE) += poodle.o
|
||||
obj-$(CONFIG_MACH_TOSA) += tosa.o
|
||||
obj-$(CONFIG_MACH_ICONTROL) += icontrol.o mxm8x10.o
|
||||
obj-$(CONFIG_ARCH_PXA_ESERIES) += eseries.o
|
||||
obj-$(CONFIG_MACH_E740) += e740-pcmcia.o
|
||||
obj-$(CONFIG_MACH_ZIPIT2) += z2.o
|
||||
|
||||
obj-$(CONFIG_PXA_SYSTEMS_CPLDS) += pxa_cplds_irqs.o
|
||||
|
@ -20,11 +20,11 @@
|
||||
#include <linux/irq.h>
|
||||
#include <linux/io.h>
|
||||
|
||||
#include <mach/balloon3.h>
|
||||
#include "balloon3.h"
|
||||
|
||||
#include <asm/mach-types.h>
|
||||
|
||||
#include "soc_common.h"
|
||||
#include <pcmcia/soc_common.h>
|
||||
|
||||
static int balloon3_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
|
||||
{
|
@ -40,7 +40,7 @@
|
||||
#include <asm/mach/flash.h>
|
||||
|
||||
#include "pxa27x.h"
|
||||
#include <mach/balloon3.h>
|
||||
#include "balloon3.h"
|
||||
#include <linux/platform_data/asoc-pxa.h>
|
||||
#include <linux/platform_data/video-pxafb.h>
|
||||
#include <linux/platform_data/mmc-pxamci.h>
|
||||
|
@ -11,7 +11,7 @@
|
||||
#ifndef ASM_ARCH_BALLOON3_H
|
||||
#define ASM_ARCH_BALLOON3_H
|
||||
|
||||
#include "irqs.h" /* PXA_NR_BUILTIN_GPIO */
|
||||
#include <mach/irqs.h> /* PXA_NR_BUILTIN_GPIO */
|
||||
|
||||
enum balloon3_features {
|
||||
BALLOON3_FEATURE_OHCI,
|
@ -14,7 +14,7 @@
|
||||
|
||||
#include <asm/mach-types.h>
|
||||
|
||||
#include "soc_common.h"
|
||||
#include <pcmcia/soc_common.h>
|
||||
|
||||
#define COLIBRI270_RESET_GPIO 53
|
||||
#define COLIBRI270_PPEN_GPIO 107
|
@ -18,7 +18,7 @@
|
||||
#include <asm/irq.h>
|
||||
#include <asm/mach-types.h>
|
||||
|
||||
#include "soc_common.h"
|
||||
#include <pcmcia/soc_common.h>
|
||||
|
||||
static int e740_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
|
||||
{
|
@ -12,7 +12,7 @@
|
||||
#include <asm/mach-types.h>
|
||||
#include <mach/hx4700.h>
|
||||
|
||||
#include "soc_common.h"
|
||||
#include <pcmcia/soc_common.h>
|
||||
|
||||
static struct gpio gpios[] = {
|
||||
{ GPIO114_HX4700_CF_RESET, GPIOF_OUT_INIT_LOW, "CF reset" },
|
@ -14,7 +14,7 @@
|
||||
|
||||
#include <asm/mach-types.h>
|
||||
#include <mach/palmld.h>
|
||||
#include "soc_common.h"
|
||||
#include <pcmcia/soc_common.h>
|
||||
|
||||
static struct gpio palmld_pcmcia_gpios[] = {
|
||||
{ GPIO_NR_PALMLD_PCMCIA_POWER, GPIOF_INIT_LOW, "PCMCIA Power" },
|
@ -14,8 +14,8 @@
|
||||
#include <linux/delay.h>
|
||||
|
||||
#include <asm/mach-types.h>
|
||||
#include <mach/palmtc.h>
|
||||
#include "soc_common.h"
|
||||
#include "palmtc.h"
|
||||
#include <pcmcia/soc_common.h>
|
||||
|
||||
static struct gpio palmtc_pcmcia_gpios[] = {
|
||||
{ GPIO_NR_PALMTC_PCMCIA_POWER1, GPIOF_INIT_LOW, "PCMCIA Power 1" },
|
@ -30,7 +30,7 @@
|
||||
|
||||
#include "pxa25x.h"
|
||||
#include <linux/platform_data/asoc-pxa.h>
|
||||
#include <mach/palmtc.h>
|
||||
#include "palmtc.h"
|
||||
#include <linux/platform_data/mmc-pxamci.h>
|
||||
#include <linux/platform_data/video-pxafb.h>
|
||||
#include <linux/platform_data/irda-pxaficp.h>
|
||||
|
@ -12,7 +12,7 @@
|
||||
#ifndef _INCLUDE_PALMTC_H_
|
||||
#define _INCLUDE_PALMTC_H_
|
||||
|
||||
#include "irqs.h" /* PXA_GPIO_TO_IRQ */
|
||||
#include <mach/irqs.h> /* PXA_GPIO_TO_IRQ */
|
||||
|
||||
/** HERE ARE GPIOs **/
|
||||
|
@ -12,8 +12,8 @@
|
||||
#include <linux/gpio.h>
|
||||
|
||||
#include <asm/mach-types.h>
|
||||
#include <mach/palmtx.h>
|
||||
#include "soc_common.h"
|
||||
#include "palmtx.h"
|
||||
#include <pcmcia/soc_common.h>
|
||||
|
||||
static struct gpio palmtx_pcmcia_gpios[] = {
|
||||
{ GPIO_NR_PALMTX_PCMCIA_POWER1, GPIOF_INIT_LOW, "PCMCIA Power 1" },
|
@ -33,7 +33,7 @@
|
||||
|
||||
#include "pxa27x.h"
|
||||
#include <linux/platform_data/asoc-pxa.h>
|
||||
#include <mach/palmtx.h>
|
||||
#include "palmtx.h"
|
||||
#include <linux/platform_data/mmc-pxamci.h>
|
||||
#include <linux/platform_data/video-pxafb.h>
|
||||
#include <linux/platform_data/irda-pxaficp.h>
|
||||
|
@ -12,7 +12,7 @@
|
||||
#ifndef _INCLUDE_PALMTX_H_
|
||||
#define _INCLUDE_PALMTX_H_
|
||||
|
||||
#include "irqs.h" /* PXA_GPIO_TO_IRQ */
|
||||
#include <mach/irqs.h> /* PXA_GPIO_TO_IRQ */
|
||||
|
||||
/** HERE ARE GPIOs **/
|
||||
|
@ -20,9 +20,9 @@
|
||||
#include <asm/irq.h>
|
||||
|
||||
#include <mach/pxa2xx-regs.h>
|
||||
#include <mach/trizeps4.h>
|
||||
#include "trizeps4.h"
|
||||
|
||||
#include "soc_common.h"
|
||||
#include <pcmcia/soc_common.h>
|
||||
|
||||
extern void board_pcmcia_power(int power);
|
||||
|
@ -40,7 +40,7 @@
|
||||
#include <asm/mach/flash.h>
|
||||
|
||||
#include "pxa27x.h"
|
||||
#include <mach/trizeps4.h>
|
||||
#include "trizeps4.h"
|
||||
#include <linux/platform_data/asoc-pxa.h>
|
||||
#include <linux/platform_data/video-pxafb.h>
|
||||
#include <linux/platform_data/mmc-pxamci.h>
|
||||
|
@ -12,7 +12,7 @@
|
||||
#define _TRIPEPS4_H_
|
||||
|
||||
#include <mach/addr-map.h>
|
||||
#include "irqs.h" /* PXA_GPIO_TO_IRQ */
|
||||
#include <mach/irqs.h> /* PXA_GPIO_TO_IRQ */
|
||||
|
||||
/* physical memory regions */
|
||||
#define TRIZEPS4_FLASH_PHYS (PXA_CS0_PHYS) /* Flash region */
|
@ -22,13 +22,11 @@
|
||||
#include <linux/gpio.h>
|
||||
|
||||
#include <pcmcia/ss.h>
|
||||
#include <pcmcia/soc_common.h>
|
||||
|
||||
#include <asm/irq.h>
|
||||
|
||||
#include <linux/platform_data/pcmcia-pxa2xx_viper.h>
|
||||
|
||||
#include "soc_common.h"
|
||||
#include "pxa2xx_base.h"
|
||||
#include "viper-pcmcia.h"
|
||||
|
||||
static struct platform_device *arcom_pcmcia_dev;
|
||||
|
@ -49,7 +49,7 @@
|
||||
#include <linux/platform_data/asoc-pxa.h>
|
||||
#include <linux/platform_data/video-pxafb.h>
|
||||
#include "regs-uart.h"
|
||||
#include <linux/platform_data/pcmcia-pxa2xx_viper.h>
|
||||
#include "viper-pcmcia.h"
|
||||
#include "viper.h"
|
||||
|
||||
#include <asm/setup.h>
|
||||
|
@ -13,9 +13,9 @@
|
||||
|
||||
#include <asm/mach-types.h>
|
||||
|
||||
#include <mach/vpac270.h>
|
||||
#include "vpac270.h"
|
||||
|
||||
#include "soc_common.h"
|
||||
#include <pcmcia/soc_common.h>
|
||||
|
||||
static struct gpio vpac270_pcmcia_gpios[] = {
|
||||
{ GPIO107_VPAC270_PCMCIA_PPEN, GPIOF_INIT_LOW, "PCMCIA PPEN" },
|
@ -30,7 +30,7 @@
|
||||
|
||||
#include "pxa27x.h"
|
||||
#include <linux/platform_data/asoc-pxa.h>
|
||||
#include <mach/vpac270.h>
|
||||
#include "vpac270.h"
|
||||
#include <linux/platform_data/mmc-pxamci.h>
|
||||
#include <linux/platform_data/video-pxafb.h>
|
||||
#include <linux/platform_data/usb-ohci-pxa27x.h>
|
||||
|
@ -47,7 +47,7 @@
|
||||
#include <linux/platform_data/video-pxafb.h>
|
||||
#include "pm.h"
|
||||
#include <linux/platform_data/asoc-pxa.h>
|
||||
#include <linux/platform_data/pcmcia-pxa2xx_viper.h>
|
||||
#include "viper-pcmcia.h"
|
||||
#include "zeus.h"
|
||||
#include <mach/smemc.h>
|
||||
|
||||
|
@ -50,18 +50,5 @@ sa1100_cs-$(CONFIG_SA1100_SIMPAD) += sa1100_simpad.o
|
||||
|
||||
pxa2xx-obj-$(CONFIG_MACH_MAINSTONE) += pxa2xx_mainstone.o
|
||||
pxa2xx-obj-$(CONFIG_PXA_SHARPSL) += pxa2xx_sharpsl.o
|
||||
pxa2xx-obj-$(CONFIG_ARCOM_PCMCIA) += pxa2xx_viper.o
|
||||
pxa2xx-obj-$(CONFIG_TRIZEPS_PCMCIA) += pxa2xx_trizeps4.o
|
||||
pxa2xx-obj-$(CONFIG_MACH_PALMTX) += pxa2xx_palmtx.o
|
||||
pxa2xx-obj-$(CONFIG_MACH_PALMTC) += pxa2xx_palmtc.o
|
||||
pxa2xx-obj-$(CONFIG_MACH_PALMLD) += pxa2xx_palmld.o
|
||||
pxa2xx-obj-$(CONFIG_MACH_E740) += pxa2xx_e740.o
|
||||
pxa2xx-obj-$(CONFIG_MACH_VPAC270) += pxa2xx_vpac270.o
|
||||
pxa2xx-obj-$(CONFIG_MACH_BALLOON3) += pxa2xx_balloon3.o
|
||||
pxa2xx-obj-$(CONFIG_MACH_COLIBRI) += pxa2xx_colibri.o
|
||||
pxa2xx-obj-$(CONFIG_MACH_COLIBRI320) += pxa2xx_colibri.o
|
||||
pxa2xx-obj-$(CONFIG_MACH_H4700) += pxa2xx_hx4700.o
|
||||
|
||||
obj-$(CONFIG_PCMCIA_PXA2XX) += pxa2xx_base.o $(pxa2xx-obj-y)
|
||||
|
||||
obj-$(CONFIG_PCMCIA_XXS1500) += xxs1500_ss.o
|
||||
|
@ -18,7 +18,7 @@
|
||||
#include <asm/irq.h>
|
||||
#include <asm/hardware/scoop.h>
|
||||
|
||||
#include "soc_common.h"
|
||||
#include <pcmcia/soc_common.h>
|
||||
|
||||
#define NO_KEEP_VS 0x0001
|
||||
#define SCOOP_DEV platform_scoop_config->devs
|
||||
|
@ -13,137 +13,19 @@
|
||||
/* include the world */
|
||||
#include <linux/clk.h>
|
||||
#include <linux/cpufreq.h>
|
||||
#include <pcmcia/ss.h>
|
||||
#include <pcmcia/cistpl.h>
|
||||
|
||||
#include <pcmcia/soc_common.h>
|
||||
|
||||
struct device;
|
||||
struct gpio_desc;
|
||||
struct pcmcia_low_level;
|
||||
struct regulator;
|
||||
|
||||
struct soc_pcmcia_regulator {
|
||||
struct regulator *reg;
|
||||
bool on;
|
||||
};
|
||||
|
||||
/*
|
||||
* 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_mem;
|
||||
struct resource res_attr;
|
||||
void __iomem *virt_io;
|
||||
|
||||
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 skt_dev_info {
|
||||
int nskt;
|
||||
struct soc_pcmcia_socket skt[];
|
||||
};
|
||||
|
||||
struct pcmcia_state {
|
||||
unsigned detect: 1,
|
||||
ready: 1,
|
||||
bvd1: 1,
|
||||
bvd2: 1,
|
||||
wrprot: 1,
|
||||
vs_3v: 1,
|
||||
vs_Xv: 1;
|
||||
};
|
||||
|
||||
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
|
||||
};
|
||||
|
||||
|
||||
struct soc_pcmcia_timing {
|
||||
unsigned short io;
|
||||
unsigned short mem;
|
||||
|
125
include/pcmcia/soc_common.h
Normal file
125
include/pcmcia/soc_common.h
Normal file
@ -0,0 +1,125 @@
|
||||
/* 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_mem;
|
||||
struct resource res_attr;
|
||||
void __iomem *virt_io;
|
||||
|
||||
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
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user