pcmcia: IOCARD is also required for using IRQs
Dominik Brodowski [Fri, 22 Oct 2010 06:46:36 +0000 (08:46 +0200)]
Dave Hinds pointed out to me that 37979e1546a7 will break b43 and
ray_cs, as IOCARD is not -- as the name would suggest -- only needed
for cards using IO ports. Instead, as it re-deines several pins, it
is also required for using interrupts.

Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

drivers/pcmcia/pcmcia_resource.c
include/pcmcia/ds.h

index a9af0d7..0bdda5b 100644 (file)
@@ -514,7 +514,9 @@ int pcmcia_enable_device(struct pcmcia_device *p_dev)
        }
 
        /* Pick memory or I/O card, DMA mode, interrupt */
-       if (p_dev->_io)
+       if (p_dev->_io || flags & CONF_ENABLE_IRQ)
+               flags |= CONF_ENABLE_IOCARD;
+       if (flags & CONF_ENABLE_IOCARD)
                s->socket.flags |= SS_IOCARD;
        if (flags & CONF_ENABLE_SPKR) {
                s->socket.flags |= SS_SPKR_ENA;
index d830c87..8479b66 100644 (file)
@@ -259,6 +259,8 @@ void pcmcia_disable_device(struct pcmcia_device *p_dev);
 #define CONF_ENABLE_SPKR        0x0002
 #define CONF_ENABLE_PULSE_IRQ   0x0004
 #define CONF_ENABLE_ESR         0x0008
+#define CONF_ENABLE_IOCARD     0x0010 /* auto-enabled if IO resources or IRQ
+                                       * (CONF_ENABLE_IRQ) in use */
 
 /* flags used by pcmcia_loop_config() autoconfiguration */
 #define CONF_AUTO_CHECK_VCC    0x0100 /* check for matching Vcc? */