diff options
Diffstat (limited to 'drivers/pcmcia/pxa2xx_palmtx.c')
| -rw-r--r-- | drivers/pcmcia/pxa2xx_palmtx.c | 43 |
1 files changed, 20 insertions, 23 deletions
diff --git a/drivers/pcmcia/pxa2xx_palmtx.c b/drivers/pcmcia/pxa2xx_palmtx.c index 4abde190c1f..069b6bbcf31 100644 --- a/drivers/pcmcia/pxa2xx_palmtx.c +++ b/drivers/pcmcia/pxa2xx_palmtx.c @@ -3,7 +3,7 @@ * * Driver for Palm T|X PCMCIA * - * 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 @@ -13,32 +13,40 @@ #include <linux/module.h> #include <linux/platform_device.h> +#include <linux/gpio.h> #include <asm/mach-types.h> - -#include <asm/arch/gpio.h> -#include <asm/arch/palmtx.h> - +#include <mach/palmtx.h> #include "soc_common.h" +static struct gpio palmtx_pcmcia_gpios[] = { + { GPIO_NR_PALMTX_PCMCIA_POWER1, GPIOF_INIT_LOW, "PCMCIA Power 1" }, + { GPIO_NR_PALMTX_PCMCIA_POWER2, GPIOF_INIT_LOW, "PCMCIA Power 2" }, + { GPIO_NR_PALMTX_PCMCIA_RESET, GPIOF_INIT_HIGH,"PCMCIA Reset" }, +}; + static int palmtx_pcmcia_hw_init(struct soc_pcmcia_socket *skt) { - skt->irq = IRQ_GPIO(GPIO_NR_PALMTX_PCMCIA_READY); - return 0; + int ret; + + ret = gpio_request_array(palmtx_pcmcia_gpios, + ARRAY_SIZE(palmtx_pcmcia_gpios)); + + skt->stat[SOC_STAT_RDY].gpio = GPIO_NR_PALMTX_PCMCIA_READY; + skt->stat[SOC_STAT_RDY].name = "PCMCIA Ready"; + + return ret; } static void palmtx_pcmcia_hw_shutdown(struct soc_pcmcia_socket *skt) { + gpio_free_array(palmtx_pcmcia_gpios, ARRAY_SIZE(palmtx_pcmcia_gpios)); } static void palmtx_pcmcia_socket_state(struct soc_pcmcia_socket *skt, struct pcmcia_state *state) { state->detect = 1; /* always inserted */ - state->ready = !!gpio_get_value(GPIO_NR_PALMTX_PCMCIA_READY); - state->bvd1 = 1; - state->bvd2 = 1; - state->wrprot = 0; state->vs_3v = 1; state->vs_Xv = 0; } @@ -55,14 +63,6 @@ palmtx_pcmcia_configure_socket(struct soc_pcmcia_socket *skt, return 0; } -static void palmtx_pcmcia_socket_init(struct soc_pcmcia_socket *skt) -{ -} - -static void palmtx_pcmcia_socket_suspend(struct soc_pcmcia_socket *skt) -{ -} - static struct pcmcia_low_level palmtx_pcmcia_ops = { .owner = THIS_MODULE, @@ -74,9 +74,6 @@ static struct pcmcia_low_level palmtx_pcmcia_ops = { .socket_state = palmtx_pcmcia_socket_state, .configure_socket = palmtx_pcmcia_configure_socket, - - .socket_init = palmtx_pcmcia_socket_init, - .socket_suspend = palmtx_pcmcia_socket_suspend, }; static struct platform_device *palmtx_pcmcia_device; @@ -109,7 +106,7 @@ static void __exit palmtx_pcmcia_exit(void) platform_device_unregister(palmtx_pcmcia_device); } -fs_initcall(palmtx_pcmcia_init); +module_init(palmtx_pcmcia_init); module_exit(palmtx_pcmcia_exit); MODULE_AUTHOR("Marek Vasut <marek.vasut@gmail.com>"); |
