Re: hang with pcmcia wlan card

Russell King (rmk@arm.linux.org.uk)
Sun, 13 Jul 2003 11:00:16 +0100


On Sun, Jul 13, 2003 at 12:50:33PM +0300, Jaakko Niemi wrote:
> Alan Cox <alan@lxorguk.ukuu.org.uk> writes:
> > On Sad, 2003-07-12 at 17:48, Wiktor Wodecki wrote:
> >> > + * If ISA interrupts don't work, then fall back to routing card
> >> > + * interrupts to the PCI interrupt of the socket.
> >> > + */
> >> > + if (!socket->socket.irq_mask) {
> >> > + int irqmux, devctl;
> >> > +
> >
> > See the fix posted to the list a while ago and apply that and all should
> > be well. The change you refer to breaks for some setups
>
> Was the fix against drivers/pcmcia/ti113x.h ? (other than backing off
> that patch..). If so, then I'm unable to locate it. Looks like I need
> local lkml archive anyway :)

The patch never went anywhere near lkml. It was sent to Pat Mochel
primerily for testing (since Pat was able to produce the feedback
last time around to solve the problem.) However, I haven't heard back
from Pat.

I won't even bother putting this into my bk tree and asking Linus to
pull; I'm sure someone else will integrate this into the kernel tree
for me. (as happened previously, and as a result I need to sort out
my bk tree.)

--- orig/drivers/pcmcia/ti113x.h Wed Jul 2 22:44:06 2003
+++ linux/drivers/pcmcia/ti113x.h Sun Jul 6 22:52:41 2003
@@ -179,21 +179,26 @@
/*
* 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);
+ }
}

socket->socket.ss_entry->init = ti_init;

-- 
Russell King (rmk@arm.linux.org.uk)                The developer of ARM Linux
             http://www.arm.linux.org.uk/personal/aboutme.html

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/