diff options
author | Daniel Ritz <daniel.ritz@gmx.ch> | 2005-09-09 16:03:25 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-09-09 16:57:47 -0400 |
commit | c181e0e00ff778623c7fda055fd404a06d2c7845 (patch) | |
tree | 4d105c0d9653ad575b66017c163ac437a1a2b793 | |
parent | bf4de6f2db79f3c396bd884f546cd2ea91a686f2 (diff) |
[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) | |||
832 | } | 832 | } |
833 | } | 833 | } |
834 | #endif | 834 | #endif |
835 | if (ret) { | 835 | /* only assign PCI irq if no IRQ already assigned */ |
836 | if (ret && !s->irq.AssignedIRQ) { | ||
836 | if (!s->pci_irq) | 837 | if (!s->pci_irq) |
837 | return ret; | 838 | return ret; |
838 | irq = s->pci_irq; | 839 | irq = s->pci_irq; |