]> git.neil.brown.name Git - history.git/commitdiff
Import 2.3.99pre3-2 2.3.99pre3-2
authorLinus Torvalds <torvalds@linuxfoundation.org>
Fri, 23 Nov 2007 20:33:15 +0000 (15:33 -0500)
committerLinus Torvalds <torvalds@linuxfoundation.org>
Fri, 23 Nov 2007 20:33:15 +0000 (15:33 -0500)
drivers/pcmcia/ti113x.h
drivers/pcmcia/yenta.c

index 16c881f7d4ab73d3fb3bec9bbff37c809460abc9..e47662901738595855543e29379fd4fb8da9b79b 100644 (file)
 #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;
@@ -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;
 }
 
index a8b3117801957a0ca176576153047c84f0614b5e..2948957335917c1c6a7bccfa2c1b2256479112b2 100644 (file)
@@ -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
-};