summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Ritz <daniel.ritz@gmx.ch>2005-09-09 22:03:25 +0200
committerLinus Torvalds <torvalds@g5.osdl.org>2005-09-09 22:57:47 +0200
commitc181e0e00ff778623c7fda055fd404a06d2c7845 (patch)
tree4d105c0d9653ad575b66017c163ac437a1a2b793
parent[PATCH] pcmcia/cs: fix possible missed wakeup (diff)
downloadlinux-c181e0e00ff778623c7fda055fd404a06d2c7845.tar.xz
linux-c181e0e00ff778623c7fda055fd404a06d2c7845.zip
[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@gmx.ch> Cc: Dominik Brodowski <linux@dominikbrodowski.net> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--drivers/pcmcia/pcmcia_resource.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/pcmcia/pcmcia_resource.c b/drivers/pcmcia/pcmcia_resource.c
index 599b116d9747..c0f4eb49177b 100644
--- a/drivers/pcmcia/pcmcia_resource.c
+++ b/drivers/pcmcia/pcmcia_resource.c
@@ -832,7 +832,8 @@ int pcmcia_request_irq(struct pcmcia_device *p_dev, irq_req_t *req)
}
}
#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;