]> git.hungrycats.org Git - linux/commitdiff
Merge Linus' tree into PCMCIA tree.
authorRussell King <rmk@flint.arm.linux.org.uk>
Mon, 14 Jul 2003 01:47:01 +0000 (02:47 +0100)
committerRussell King <rmk@flint.arm.linux.org.uk>
Mon, 14 Jul 2003 01:47:01 +0000 (02:47 +0100)
1  2 
drivers/pcmcia/cs.c
drivers/pcmcia/ti113x.h

index 91078d5fff0ca0c0846c65a83522ab403f6b7098,faedd17418f98c06e307721747ce854e7823b51a..3dd5702c48b7170d105714fa3379499eb12137b0
@@@ -338,13 -301,14 +301,15 @@@ static int pcmcia_add_socket(struct cla
        socket->erase_busy.next = socket->erase_busy.prev = &socket->erase_busy;
        INIT_LIST_HEAD(&socket->cis_cache);
        spin_lock_init(&socket->lock);
 -      socket->socket = dead_socket;
 -      socket->ops->init(socket);
 -
        init_completion(&socket->thread_done);
        init_waitqueue_head(&socket->thread_wait);
        init_MUTEX(&socket->skt_sem);
        spin_lock_init(&socket->thread_lock);
-       init_socket(socket);
 +
++      socket->socket = dead_socket;
++      socket->ops->init(socket);
 +
        ret = kernel_thread(pccardd, socket, CLONE_KERNEL);
        if (ret < 0)
                return ret;
index e92158516f13740be6efe7cc2ff90a1ca469f01e,d43c9a2b1b65cf630db25cad7002a922b2ac8aaf..2cdb46d4eb3c6c4de7e9fb21d5e2c3023ddb5ce2
@@@ -182,25 -179,29 +182,30 @@@ static int ti_override(struct yenta_soc
        /*
         * If ISA interrupts don't work, then fall back to routing card
         * interrupts to the PCI interrupt of the socket.
+        *
+        * Tweaking this when we are using serial PCI IRQs causes hangs
+        *   --rmk
         */
        if (!socket->socket.irq_mask) {
-               int irqmux, devctl;
-               printk (KERN_INFO "ti113x: Routing card interrupts to PCI\n");
+               u8 irqmux, devctl;
  
                devctl = config_readb(socket, TI113X_DEVICE_CONTROL);
-               devctl &= ~TI113X_DCR_IMODE_MASK;
+               if (devctl & TI113X_DCR_IMODE_MASK != TI12XX_DCR_IMODE_ALL_SERIAL) {
+                       printk (KERN_INFO "ti113x: Routing card interrupts to PCI\n");
+                       devctl &= ~TI113X_DCR_IMODE_MASK;
  
-               irqmux = config_readl(socket, TI122X_IRQMUX);
-               irqmux = (irqmux & ~0x0f) | 0x02; /* route INTA */
-               irqmux = (irqmux & ~0xf0) | 0x20; /* route INTB */
+                       irqmux = config_readl(socket, TI122X_IRQMUX);
+                       irqmux = (irqmux & ~0x0f) | 0x02; /* route INTA */
+                       irqmux = (irqmux & ~0xf0) | 0x20; /* route INTB */
  
-               config_writel(socket, TI122X_IRQMUX, irqmux);
-               config_writeb(socket, TI113X_DEVICE_CONTROL, devctl);
+                       config_writel(socket, TI122X_IRQMUX, irqmux);
+                       config_writeb(socket, TI113X_DEVICE_CONTROL, devctl);
+               }
        }
 +#endif
  
-       socket->socket.ss_entry->init = ti_init;
+       socket->socket.ops->init = ti_init;
        return 0;
  }