diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2000-03-27 23:54:12 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2000-03-27 23:54:12 +0000 |
commit | d3e71cb08747743fce908122bab08b479eb403a5 (patch) | |
tree | cbec6948fdbdee9af81cf3ecfb504070d2745d7b /drivers/pcmcia | |
parent | fe7ff1706e323d0e5ed83972960a1ecc1ee538b3 (diff) |
Merge with Linux 2.3.99-pre3.
Diffstat (limited to 'drivers/pcmcia')
-rw-r--r-- | drivers/pcmcia/ti113x.h | 26 | ||||
-rw-r--r-- | drivers/pcmcia/yenta.c | 19 |
2 files changed, 21 insertions, 24 deletions
diff --git a/drivers/pcmcia/ti113x.h b/drivers/pcmcia/ti113x.h index 16c881f7d..e47662901 100644 --- a/drivers/pcmcia/ti113x.h +++ b/drivers/pcmcia/ti113x.h @@ -137,16 +137,32 @@ #ifdef CONFIG_CARDBUS /* - * Generic TI open - TI has an extension for the + * Generic TI init - TI has an extension for the * INTCTL register that sets the PCI CSC interrupt. * Make sure we set it correctly at open and init - * time. + * time + * - open: disable the PCI CSC interrupt. This makes + * it possible to use the CSC interrupt to probe the + * ISA interrupts. + * - init: set the interrupt to match our PCI state. + * This makes us correctly get PCI CSC interrupt + * events. */ static int ti_open(pci_socket_t *socket) { u8 new, reg = exca_readb(socket, I365_INTCTL); new = reg & ~I365_INTR_ENA; + if (new != reg) + exca_writeb(socket, I365_INTCTL, new); + return 0; +} + +static int ti_intctl(pci_socket_t *socket) +{ + u8 new, reg = exca_readb(socket, I365_INTCTL); + + new = reg & ~I365_INTR_ENA; if (socket->cb_irq) new |= I365_INTR_ENA; if (new != reg) @@ -157,7 +173,7 @@ static int ti_open(pci_socket_t *socket) static int ti_init(pci_socket_t *socket) { yenta_init(socket); - ti_open(socket); + ti_intctl(socket); return 0; } @@ -200,7 +216,7 @@ static int ti113x_init(pci_socket_t *socket) config_writel(socket, TI113X_SYSTEM_CONTROL, ti_sysctl(socket)); config_writeb(socket, TI113X_CARD_CONTROL, ti_cardctl(socket)); config_writeb(socket, TI113X_DEVICE_CONTROL, ti_devctl(socket)); - ti_open(socket); + ti_intctl(socket); return 0; } @@ -237,7 +253,7 @@ static int ti1250_init(pci_socket_t *socket) yenta_init(socket); config_writeb(socket, TI1250_DIAGNOSTIC, ti_diag(socket)); - ti_open(socket); + ti_intctl(socket); return 0; } diff --git a/drivers/pcmcia/yenta.c b/drivers/pcmcia/yenta.c index a8b311780..294895733 100644 --- a/drivers/pcmcia/yenta.c +++ b/drivers/pcmcia/yenta.c @@ -851,22 +851,3 @@ struct pci_socket_ops yenta_operations = { yenta_proc_setup }; EXPORT_SYMBOL(yenta_operations); - -/* - * Ricoh cardbus bridge: standard cardbus, except it needs - * some extra init code to set timings etc. - */ -struct pci_socket_ops ricoh_operations = { - yenta_open, - yenta_close, - ricoh_init, - yenta_suspend, - yenta_get_status, - yenta_get_socket, - yenta_set_socket, - yenta_get_io_map, - yenta_set_io_map, - yenta_get_mem_map, - yenta_set_mem_map, - yenta_proc_setup -}; |