[PATCH] fix pcmcia_request_irq() for multifunction card

Daniel Ritz daniel.ritz at gmx.ch
Wed Aug 17 16:54:46 EDT 2005


[PATCH] fix pcmcia_request_irq() for multifunction card

multifunction cards need to have the same irq assigned to both functions.
the code tries that but fails because ret is still set to CS_IN_USE
which results in the function having the CB irq assigned. yenta_set_socket
then just changes the irq routing to use the PCI interrupt but the first
functions irq handler is registered on an ISA interrupt. boom.

Signed-off-by: Daniel Ritz <daniel.ritz at gmx.ch>

diff --git a/drivers/pcmcia/pcmcia_resource.c b/drivers/pcmcia/pcmcia_resource.c
--- a/drivers/pcmcia/pcmcia_resource.c
+++ b/drivers/pcmcia/pcmcia_resource.c
@@ -831,7 +831,8 @@ int pcmcia_request_irq(struct pcmcia_dev
 		}
 	}
 #endif
-	if (ret) {
+	/* only assign PCI irq if no IRQ already assigned */
+	if (ret && !s->irq.AssignedIRQ) {
 		if (!s->pci_irq)
 			return ret;
 		irq = s->pci_irq;



More information about the linux-pcmcia mailing list