From: Daniel Ritz <daniel.ritz@gmx.ch>

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>
---

 drivers/pcmcia/pcmcia_resource.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletion(-)

diff -puN drivers/pcmcia/pcmcia_resource.c~fix-pcmcia_request_irq-for-multifunction-card drivers/pcmcia/pcmcia_resource.c
--- devel/drivers/pcmcia/pcmcia_resource.c~fix-pcmcia_request_irq-for-multifunction-card	2005-08-30 18:42:18.000000000 -0700
+++ devel-akpm/drivers/pcmcia/pcmcia_resource.c	2005-08-30 18:42:18.000000000 -0700
@@ -832,7 +832,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;
_