diff options
author | Daniel Ritz <daniel.ritz@gmx.ch> | 2005-09-09 13:03:25 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-09-09 13:57:47 -0700 |
commit | c181e0e00ff778623c7fda055fd404a06d2c7845 (patch) | |
tree | 4d105c0d9653ad575b66017c163ac437a1a2b793 | |
parent | bf4de6f2db79f3c396bd884f546cd2ea91a686f2 (diff) | |
download | blackbird-op-linux-c181e0e00ff778623c7fda055fd404a06d2c7845.tar.gz blackbird-op-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.c | 3 |
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; |