diff options
Diffstat (limited to 'drivers/pcmcia/pxa2xx_palmld.c')
| -rw-r--r-- | drivers/pcmcia/pxa2xx_palmld.c | 59 | 
1 files changed, 11 insertions, 48 deletions
diff --git a/drivers/pcmcia/pxa2xx_palmld.c b/drivers/pcmcia/pxa2xx_palmld.c index 6fb6f7f0672..ed7d4dbc39f 100644 --- a/drivers/pcmcia/pxa2xx_palmld.c +++ b/drivers/pcmcia/pxa2xx_palmld.c @@ -4,7 +4,7 @@   * Driver for Palm LifeDrive PCMCIA   *   * Copyright (C) 2006 Alex Osborne <ato@meshy.org> - * Copyright (C) 2007-2008 Marek Vasut <marek.vasut@gmail.com> + * Copyright (C) 2007-2011 Marek Vasut <marek.vasut@gmail.com>   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License version 2 as @@ -20,59 +20,33 @@  #include <mach/palmld.h>  #include "soc_common.h" +static struct gpio palmld_pcmcia_gpios[] = { +	{ GPIO_NR_PALMLD_PCMCIA_POWER,	GPIOF_INIT_LOW,	"PCMCIA Power" }, +	{ GPIO_NR_PALMLD_PCMCIA_RESET,	GPIOF_INIT_HIGH,"PCMCIA Reset" }, +}; +  static int palmld_pcmcia_hw_init(struct soc_pcmcia_socket *skt)  {  	int ret; -	ret = gpio_request(GPIO_NR_PALMLD_PCMCIA_POWER, "PCMCIA PWR"); -	if (ret) -		goto err1; -	ret = gpio_direction_output(GPIO_NR_PALMLD_PCMCIA_POWER, 0); -	if (ret) -		goto err2; - -	ret = gpio_request(GPIO_NR_PALMLD_PCMCIA_RESET, "PCMCIA RST"); -	if (ret) -		goto err2; -	ret = gpio_direction_output(GPIO_NR_PALMLD_PCMCIA_RESET, 1); -	if (ret) -		goto err3; - -	ret = gpio_request(GPIO_NR_PALMLD_PCMCIA_READY, "PCMCIA RDY"); -	if (ret) -		goto err3; -	ret = gpio_direction_input(GPIO_NR_PALMLD_PCMCIA_READY); -	if (ret) -		goto err4; +	ret = gpio_request_array(palmld_pcmcia_gpios, +				ARRAY_SIZE(palmld_pcmcia_gpios)); -	skt->socket.pci_irq = IRQ_GPIO(GPIO_NR_PALMLD_PCMCIA_READY); -	return 0; +	skt->stat[SOC_STAT_RDY].gpio = GPIO_NR_PALMLD_PCMCIA_READY; +	skt->stat[SOC_STAT_RDY].name = "PCMCIA Ready"; -err4: -	gpio_free(GPIO_NR_PALMLD_PCMCIA_READY); -err3: -	gpio_free(GPIO_NR_PALMLD_PCMCIA_RESET); -err2: -	gpio_free(GPIO_NR_PALMLD_PCMCIA_POWER); -err1:  	return ret;  }  static void palmld_pcmcia_hw_shutdown(struct soc_pcmcia_socket *skt)  { -	gpio_free(GPIO_NR_PALMLD_PCMCIA_READY); -	gpio_free(GPIO_NR_PALMLD_PCMCIA_RESET); -	gpio_free(GPIO_NR_PALMLD_PCMCIA_POWER); +	gpio_free_array(palmld_pcmcia_gpios, ARRAY_SIZE(palmld_pcmcia_gpios));  }  static void palmld_pcmcia_socket_state(struct soc_pcmcia_socket *skt,  					struct pcmcia_state *state)  {  	state->detect = 1; /* always inserted */ -	state->ready  = !!gpio_get_value(GPIO_NR_PALMLD_PCMCIA_READY); -	state->bvd1   = 1; -	state->bvd2   = 1; -	state->wrprot = 0;  	state->vs_3v  = 1;  	state->vs_Xv  = 0;  } @@ -87,14 +61,6 @@ static int palmld_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,  	return 0;  } -static void palmld_pcmcia_socket_init(struct soc_pcmcia_socket *skt) -{ -} - -static void palmld_pcmcia_socket_suspend(struct soc_pcmcia_socket *skt) -{ -} -  static struct pcmcia_low_level palmld_pcmcia_ops = {  	.owner			= THIS_MODULE, @@ -106,9 +72,6 @@ static struct pcmcia_low_level palmld_pcmcia_ops = {  	.socket_state		= palmld_pcmcia_socket_state,  	.configure_socket	= palmld_pcmcia_configure_socket, - -	.socket_init		= palmld_pcmcia_socket_init, -	.socket_suspend		= palmld_pcmcia_socket_suspend,  };  static struct platform_device *palmld_pcmcia_device;  | 
