Xircom pcmcia CEM56 eth/modem combo works on thinkpad 390 but not 600

Daniel Ritz daniel.ritz-ml at swissonline.ch
Tue Oct 11 17:00:10 EDT 2005


[since my free mail provider GMX made it once again the the DSBL blacklist,
 nobody can receive my mails. got sick of it, created a new address...]

----------  Forwarded Message  ----------

hi

could you please also post the following data from both laptops:
- full dmesg
- cat /proc/interrupts with card inserted

since this is multifunciton card i would guess that the attached patch
could fix the problem. it's already merged in 2.6.14-rc. i guess that one
would be a -stable candidate anyway..

rgds
-daniel

------------

[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