diff options
Diffstat (limited to 'drivers/pcmcia/pxa2xx_cm_x255.c')
| -rw-r--r-- | drivers/pcmcia/pxa2xx_cm_x255.c | 51 | 
1 files changed, 13 insertions, 38 deletions
diff --git a/drivers/pcmcia/pxa2xx_cm_x255.c b/drivers/pcmcia/pxa2xx_cm_x255.c index 05913d0bbdb..da40908b29d 100644 --- a/drivers/pcmcia/pxa2xx_cm_x255.c +++ b/drivers/pcmcia/pxa2xx_cm_x255.c @@ -14,8 +14,7 @@  #include <linux/irq.h>  #include <linux/delay.h>  #include <linux/gpio.h> - -#include <asm/mach-types.h> +#include <linux/export.h>  #include "soc_common.h" @@ -26,17 +25,6 @@  #define GPIO_PCMCIA_S1_RDYINT	(8)  #define GPIO_PCMCIA_RESET	(9) -#define PCMCIA_S0_CD_VALID	IRQ_GPIO(GPIO_PCMCIA_S0_CD_VALID) -#define PCMCIA_S1_CD_VALID	IRQ_GPIO(GPIO_PCMCIA_S1_CD_VALID) -#define PCMCIA_S0_RDYINT	IRQ_GPIO(GPIO_PCMCIA_S0_RDYINT) -#define PCMCIA_S1_RDYINT	IRQ_GPIO(GPIO_PCMCIA_S1_RDYINT) - - -static struct pcmcia_irqs irqs[] = { -	{ 0, PCMCIA_S0_CD_VALID, "PCMCIA0 CD" }, -	{ 1, PCMCIA_S1_CD_VALID, "PCMCIA1 CD" }, -}; -  static int cmx255_pcmcia_hw_init(struct soc_pcmcia_socket *skt)  {  	int ret = gpio_request(GPIO_PCMCIA_RESET, "PCCard reset"); @@ -44,17 +32,23 @@ static int cmx255_pcmcia_hw_init(struct soc_pcmcia_socket *skt)  		return ret;  	gpio_direction_output(GPIO_PCMCIA_RESET, 0); -	skt->socket.pci_irq = skt->nr == 0 ? PCMCIA_S0_RDYINT : PCMCIA_S1_RDYINT; -	ret = soc_pcmcia_request_irqs(skt, irqs, ARRAY_SIZE(irqs)); -	if (!ret) -		gpio_free(GPIO_PCMCIA_RESET); +	if (skt->nr == 0) { +		skt->stat[SOC_STAT_CD].gpio = GPIO_PCMCIA_S0_CD_VALID; +		skt->stat[SOC_STAT_CD].name = "PCMCIA0 CD"; +		skt->stat[SOC_STAT_RDY].gpio = GPIO_PCMCIA_S0_RDYINT; +		skt->stat[SOC_STAT_RDY].name = "PCMCIA0 RDY"; +	} else { +		skt->stat[SOC_STAT_CD].gpio = GPIO_PCMCIA_S1_CD_VALID; +		skt->stat[SOC_STAT_CD].name = "PCMCIA1 CD"; +		skt->stat[SOC_STAT_RDY].gpio = GPIO_PCMCIA_S1_RDYINT; +		skt->stat[SOC_STAT_RDY].name = "PCMCIA1 RDY"; +	} -	return ret; +	return 0;  }  static void cmx255_pcmcia_shutdown(struct soc_pcmcia_socket *skt)  { -	soc_pcmcia_free_irqs(skt, irqs, ARRAY_SIZE(irqs));  	gpio_free(GPIO_PCMCIA_RESET);  } @@ -62,16 +56,8 @@ static void cmx255_pcmcia_shutdown(struct soc_pcmcia_socket *skt)  static void cmx255_pcmcia_socket_state(struct soc_pcmcia_socket *skt,  				       struct pcmcia_state *state)  { -	int cd = skt->nr ? GPIO_PCMCIA_S1_CD_VALID : GPIO_PCMCIA_S0_CD_VALID; -	int rdy = skt->nr ? GPIO_PCMCIA_S1_RDYINT : GPIO_PCMCIA_S0_RDYINT; - -	state->detect = !gpio_get_value(cd); -	state->ready  = !!gpio_get_value(rdy); -	state->bvd1   = 1; -	state->bvd2   = 1;  	state->vs_3v  = 0;  	state->vs_Xv  = 0; -	state->wrprot = 0;  /* not available */  } @@ -102,23 +88,12 @@ static int cmx255_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,  	return 0;  } -static void cmx255_pcmcia_socket_init(struct soc_pcmcia_socket *skt) -{ -} - -static void cmx255_pcmcia_socket_suspend(struct soc_pcmcia_socket *skt) -{ -} - -  static struct pcmcia_low_level cmx255_pcmcia_ops __initdata = {  	.owner			= THIS_MODULE,  	.hw_init		= cmx255_pcmcia_hw_init,  	.hw_shutdown		= cmx255_pcmcia_shutdown,  	.socket_state		= cmx255_pcmcia_socket_state,  	.configure_socket	= cmx255_pcmcia_configure_socket, -	.socket_init		= cmx255_pcmcia_socket_init, -	.socket_suspend		= cmx255_pcmcia_socket_suspend,  	.nr			= 1,  };  | 
