Commit f4869d75 authored by Russell King's avatar Russell King

Merge flint.arm.linux.org.uk:/usr/src/linux-bk-2.5/linux-2.5

into flint.arm.linux.org.uk:/usr/src/linux-bk-2.5/linux-2.5-pcmcia
parents 7000fe76 ae05e325
......@@ -175,6 +175,27 @@ static int ti_override(struct yenta_socket *socket)
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;
}
......@@ -241,6 +262,17 @@ static int ti1250_override(struct yenta_socket *socket)
return 0;
}
static int ti12xx_override(struct yenta_socket *socket)
{
/* make sure that memory burst is active */
ti_sysctl(socket) = config_readl(socket, TI113X_SYSTEM_CONTROL);
ti_sysctl(socket) |= TI122X_SCR_MRBURSTUP;
config_writel(socket, TI113X_SYSTEM_CONTROL, ti_sysctl(socket));
return ti113x_override(socket);
}
#endif /* CONFIG_CARDBUS */
#endif /* _LINUX_TI113X_H */
......
......@@ -807,23 +807,30 @@ struct cardbus_override_struct {
unsigned short device;
int (*override) (struct yenta_socket *socket);
} cardbus_override[] = {
{ PD(TI,1130), &ti113x_override },
{ PD(TI,1031), &ti_override },
{ PD(TI,1131), &ti113x_override },
{ PD(TI,1250), &ti1250_override },
{ PD(TI,1220), &ti_override },
{ PD(TI,1221), &ti_override },
/* TBD: Check if these TI variants can use more
* advanced overrides instead */
{ PD(TI,1210), &ti_override },
{ PD(TI,1450), &ti_override },
{ PD(TI,1225), &ti_override },
{ PD(TI,1251A), &ti_override },
{ PD(TI,1211), &ti_override },
{ PD(TI,1251A), &ti_override },
{ PD(TI,1251B), &ti_override },
{ PD(TI,1410), ti1250_override },
{ PD(TI,1420), &ti_override },
{ PD(TI,1450), &ti_override },
{ PD(TI,4410), &ti_override },
{ PD(TI,4451), &ti_override },
{ PD(TI,1130), &ti113x_override },
{ PD(TI,1131), &ti113x_override },
{ PD(TI,1220), &ti12xx_override },
{ PD(TI,1221), &ti12xx_override },
{ PD(TI,1225), &ti12xx_override },
{ PD(TI,1520), &ti12xx_override },
{ PD(TI,1250), &ti1250_override },
{ PD(TI,1410), &ti1250_override },
{ PD(RICOH,RL5C465), &ricoh_override },
{ PD(RICOH,RL5C466), &ricoh_override },
{ PD(RICOH,RL5C475), &ricoh_override },
......
......@@ -668,7 +668,6 @@
#define PCI_DEVICE_ID_TI_1220 0xac17
#define PCI_DEVICE_ID_TI_1221 0xac19
#define PCI_DEVICE_ID_TI_1210 0xac1a
#define PCI_DEVICE_ID_TI_1410 0xac50
#define PCI_DEVICE_ID_TI_1450 0xac1b
#define PCI_DEVICE_ID_TI_1225 0xac1c
#define PCI_DEVICE_ID_TI_1251A 0xac1d
......@@ -676,7 +675,9 @@
#define PCI_DEVICE_ID_TI_1251B 0xac1f
#define PCI_DEVICE_ID_TI_4410 0xac41
#define PCI_DEVICE_ID_TI_4451 0xac42
#define PCI_DEVICE_ID_TI_1410 0xac50
#define PCI_DEVICE_ID_TI_1420 0xac51
#define PCI_DEVICE_ID_TI_1520 0xac55
#define PCI_VENDOR_ID_SONY 0x104d
#define PCI_DEVICE_ID_SONY_CXD3222 0x8039
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment