diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2022-01-11 21:41:13 +0100 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2022-01-11 21:41:13 +0100 |
commit | 4aa1b8257fba5931511a7e152bcbbb3dd673c6c1 (patch) | |
tree | 3397acac34b441d04724774de7b253c5b0a0c87f /drivers/pcmcia/pxa2xx_cm_x255.c | |
parent | Merge tag 'gpio-updates-for-v5.17' of git://git.kernel.org/pub/scm/linux/kern... (diff) | |
parent | pcmcia: fix setting of kthread task states (diff) | |
download | linux-4aa1b8257fba5931511a7e152bcbbb3dd673c6c1.tar.xz linux-4aa1b8257fba5931511a7e152bcbbb3dd673c6c1.zip |
Merge branch 'pcmcia-next' of git://git.kernel.org/pub/scm/linux/kernel/git/brodo/linux
Pull pcmcia updates from Dominik Brodowski:
"A number of odd cleanups and fixes, including one for a small race in
the handling of the pccardd kernel thread"
* 'pcmcia-next' of git://git.kernel.org/pub/scm/linux/kernel/git/brodo/linux:
pcmcia: fix setting of kthread task states
MAINTAINERS: update PCMCIA tree
pcmcia: use sysfs_emit{,_at} for sysfs output
pcmcia: make pcmcia_release_io() void, as no-one is interested in return value
pcmcia: rsrc_nonstatic: Fix a NULL pointer dereference in nonstatic_find_mem_region()
pcmcia: rsrc_nonstatic: Fix a NULL pointer dereference in __nonstatic_find_io_region()
pcmcia: comment out unused exca_readw() function
pcmcia: Make use of the helper macro SET_NOIRQ_SYSTEM_SLEEP_PM_OPS()
pcmcia: clean up dead drivers for CompuLab CM-X255/CM-X270 boards
Diffstat (limited to 'drivers/pcmcia/pxa2xx_cm_x255.c')
-rw-r--r-- | drivers/pcmcia/pxa2xx_cm_x255.c | 124 |
1 files changed, 0 insertions, 124 deletions
diff --git a/drivers/pcmcia/pxa2xx_cm_x255.c b/drivers/pcmcia/pxa2xx_cm_x255.c deleted file mode 100644 index c0b6b846fbaa..000000000000 --- a/drivers/pcmcia/pxa2xx_cm_x255.c +++ /dev/null @@ -1,124 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-only -/* - * linux/drivers/pcmcia/pxa/pxa_cm_x255.c - * - * Compulab Ltd., 2003, 2007, 2008 - * Mike Rapoport <mike@compulab.co.il> - */ - -#include <linux/platform_device.h> -#include <linux/irq.h> -#include <linux/delay.h> -#include <linux/gpio.h> -#include <linux/export.h> - -#include "soc_common.h" - -#define GPIO_PCMCIA_SKTSEL (54) -#define GPIO_PCMCIA_S0_CD_VALID (16) -#define GPIO_PCMCIA_S1_CD_VALID (17) -#define GPIO_PCMCIA_S0_RDYINT (6) -#define GPIO_PCMCIA_S1_RDYINT (8) -#define GPIO_PCMCIA_RESET (9) - -static int cmx255_pcmcia_hw_init(struct soc_pcmcia_socket *skt) -{ - int ret = gpio_request(GPIO_PCMCIA_RESET, "PCCard reset"); - if (ret) - return ret; - gpio_direction_output(GPIO_PCMCIA_RESET, 0); - - 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 0; -} - -static void cmx255_pcmcia_shutdown(struct soc_pcmcia_socket *skt) -{ - gpio_free(GPIO_PCMCIA_RESET); -} - - -static void cmx255_pcmcia_socket_state(struct soc_pcmcia_socket *skt, - struct pcmcia_state *state) -{ - state->vs_3v = 0; - state->vs_Xv = 0; -} - - -static int cmx255_pcmcia_configure_socket(struct soc_pcmcia_socket *skt, - const socket_state_t *state) -{ - switch (skt->nr) { - case 0: - if (state->flags & SS_RESET) { - gpio_set_value(GPIO_PCMCIA_SKTSEL, 0); - udelay(1); - gpio_set_value(GPIO_PCMCIA_RESET, 1); - udelay(10); - gpio_set_value(GPIO_PCMCIA_RESET, 0); - } - break; - case 1: - if (state->flags & SS_RESET) { - gpio_set_value(GPIO_PCMCIA_SKTSEL, 1); - udelay(1); - gpio_set_value(GPIO_PCMCIA_RESET, 1); - udelay(10); - gpio_set_value(GPIO_PCMCIA_RESET, 0); - } - break; - } - - return 0; -} - -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, - .nr = 1, -}; - -static struct platform_device *cmx255_pcmcia_device; - -int __init cmx255_pcmcia_init(void) -{ - int ret; - - cmx255_pcmcia_device = platform_device_alloc("pxa2xx-pcmcia", -1); - - if (!cmx255_pcmcia_device) - return -ENOMEM; - - ret = platform_device_add_data(cmx255_pcmcia_device, &cmx255_pcmcia_ops, - sizeof(cmx255_pcmcia_ops)); - - if (ret == 0) { - printk(KERN_INFO "Registering cm-x255 PCMCIA interface.\n"); - ret = platform_device_add(cmx255_pcmcia_device); - } - - if (ret) - platform_device_put(cmx255_pcmcia_device); - - return ret; -} - -void __exit cmx255_pcmcia_exit(void) -{ - platform_device_unregister(cmx255_pcmcia_device); -} |