The patch titled
yenta: no CardBus if IRQ fails
has been added to the -mm tree. Its filename is
yenta-no-cardbus-if-irq-fails.patch
Patches currently in -mm which might be from [EMAIL PROTECTED] are
yenta-no-cardbus-if-irq-fails.patch
From: Russell King <[EMAIL PROTECTED]>
If probing for the correct interrupt fails on yenta bridges, the driver falls
back to polling for interrupt actions. However, CardBus cards cannot be used
then.
Signed-off-by: Russell King <[EMAIL PROTECTED]>
Signed-off-by: Dominik Brodowski <[EMAIL PROTECTED]>
Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
---
drivers/pcmcia/cs.c | 15 +++++++++++----
drivers/pcmcia/yenta_socket.c | 10 +++++++---
2 files changed, 18 insertions(+), 7 deletions(-)
diff -puN drivers/pcmcia/cs.c~yenta-no-cardbus-if-irq-fails drivers/pcmcia/cs.c
--- devel/drivers/pcmcia/cs.c~yenta-no-cardbus-if-irq-fails 2005-07-06
01:15:43.000000000 -0700
+++ devel-akpm/drivers/pcmcia/cs.c 2005-07-06 01:15:43.000000000 -0700
@@ -215,6 +215,13 @@ int pcmcia_register_socket(struct pcmcia
list_add_tail(&socket->socket_list, &pcmcia_socket_list);
up_write(&pcmcia_socket_list_rwsem);
+#ifndef CONFIG_CARDBUS
+ /*
+ * If we do not support Cardbus, ensure that
+ * the Cardbus socket capability is disabled.
+ */
+ socket->features &= ~SS_CAP_CARDBUS;
+#endif
/* set proper values in socket->dev */
socket->dev.class_data = socket;
@@ -448,11 +455,11 @@ static int socket_setup(struct pcmcia_so
}
if (status & SS_CARDBUS) {
+ if (!(skt->features & SS_CAP_CARDBUS)) {
+ cs_err(skt, "cardbus cards are not supported.\n");
+ return CS_BAD_TYPE;
+ }
skt->state |= SOCKET_CARDBUS;
-#ifndef CONFIG_CARDBUS
- cs_err(skt, "cardbus cards are not supported.\n");
- return CS_BAD_TYPE;
-#endif
}
/*
diff -puN drivers/pcmcia/yenta_socket.c~yenta-no-cardbus-if-irq-fails
drivers/pcmcia/yenta_socket.c
--- devel/drivers/pcmcia/yenta_socket.c~yenta-no-cardbus-if-irq-fails
2005-07-06 01:15:43.000000000 -0700
+++ devel-akpm/drivers/pcmcia/yenta_socket.c 2005-07-06 01:15:43.000000000
-0700
@@ -951,14 +951,11 @@ static int yenta_probe_cb_irq(struct yen
*/
static void yenta_get_socket_capabilities(struct yenta_socket *socket, u32
isa_irq_mask)
{
- socket->socket.features |= SS_CAP_PAGE_REGS | SS_CAP_PCCARD |
SS_CAP_CARDBUS;
- socket->socket.map_size = 0x1000;
socket->socket.pci_irq = socket->cb_irq;
if (isa_probe)
socket->socket.irq_mask = yenta_probe_irq(socket, isa_irq_mask);
else
socket->socket.irq_mask = 0;
- socket->socket.cb_dev = socket->dev;
printk(KERN_INFO "Yenta: ISA IRQ mask 0x%04x, PCI irq %d\n",
socket->socket.irq_mask, socket->cb_irq);
@@ -1024,6 +1021,9 @@ static int __devinit yenta_probe (struct
socket->socket.dev.dev = &dev->dev;
socket->socket.driver_data = socket;
socket->socket.owner = THIS_MODULE;
+ socket->socket.features = SS_CAP_PAGE_REGS | SS_CAP_PCCARD;
+ socket->socket.map_size = 0x1000;
+ socket->socket.cb_dev = dev;
/* prepare struct yenta_socket */
socket->dev = dev;
@@ -1094,6 +1094,10 @@ static int __devinit yenta_probe (struct
socket->poll_timer.data = (unsigned long)socket;
socket->poll_timer.expires = jiffies + HZ;
add_timer(&socket->poll_timer);
+ printk(KERN_INFO "Yenta: no PCI IRQ, CardBus support disabled
for this socket.\n"
+ KERN_INFO "Yenta: check your BIOS CardBus, BIOS IRQ or
ACPI settings.\n");
+ } else {
+ socket->socket.features |= SS_CAP_CARDBUS;
}
/* Figure out what the dang thing can do for the PCMCIA layer... */
_
-
To unsubscribe from this list: send the line "unsubscribe mm-commits" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html