Re: 2.5.74-mm1

Russell King
2003-07-03T21:59:40Z

On Thu, Jul 03, 2003 at 11:49:21PM +0200, Wiktor Wodecki wrote:
> On Thu, Jul 03, 2003 at 03:15:29PM +0100, Russell King wrote:
> > Ok, Wiktor has tried removing these 6 patches, and his problem persists.
> > According to bk revtool, these 6 patches are the only changes which
> > went in for to pcmcia from .73 to .74.
> >
> > If anyone else is having similar problems, they need to report them so
> > we can obtain more data points - I suspect some other change in some other
> > subsystem broke PCMCIA for Wiktor.
> >
> > Wiktor - short of anyone else responding, you could try reversing each
> > of the nightly -bk patches from .74 to .73 and work out which set of
> > changes broke it.
>
> it broke with the 2.5.73-rc2 patch. I assume it was:

Ok, looking at the -bk1-bk2 incremental patch, there's a couple of
possibilities:

- changes to the x86 PCI code
- changes to yenta_socket.c to add different overrides
- add burst support to yenta_socket.c for TI bridges
- add ISA interrupt routing work-around for TI bridges

I think the number one suspect is probably the final one. Could you try
reversing this patch please?

diff -urN linux-2.5.73-bk1/drivers/pcmcia/ti113x.h linux-2.5.73-bk2/drivers/pcmcia/ti113x.h
--- linux-2.5.73-bk1/drivers/pcmcia/ti113x.h 2003-06-22 11:32:41.000000000 -0700
+++ linux-2.5.73-bk2/drivers/pcmcia/ti113x.h 2003-06-24 13:06:59.000000000 -0700
@@ -175,6 +175,27 @@
new = reg & ~I365_INTR_ENA;
if (new != reg)
exca_writeb(socket, I365_INTCTL, new);
+
+ /*
+ * 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;
+
+ printk (KERN_INFO "ti113x: Routing card interrupts to PCI\n");
+
+ devctl = config_readb(socket, TI113X_DEVICE_CONTROL);
+ devctl &= ~TI113X_DCR_IMODE_MASK;
+
+ 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);
+ }
+
socket->socket.ss_entry->init = ti_init;
return 0;
}

--
Russell King (rmk@arm.linux.org.uk) The developer of ARM Linux