Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 26 Feb 1999 12:22:18 +0800 (CST)
From:      Michael Robinson <robinson@netrinsics.com>
To:        freebsd-questions@FreeBSD.ORG, mobile@FreeBSD.ORG, patseal@hyperhost.net
Subject:   Re: PCCARD modem trouble (fwd)
Message-ID:  <199902260422.MAA02250@netrinsics.com>
In-Reply-To: <Pine.BSF.4.05.9902252201300.9630-100000@foobar.hyperhost.net>

next in thread | previous in thread | raw e-mail | index | archive | help
Patrick Seal <patseal@hyperhost.net> writes:
>If I'm not docked I can use the modem, when I am docked it complains:
>driver allocation failed for 3COM

>The pccard.conf has irq 10 as the default for the modem. I change it to 8
>(to avoid conflict with xl0) and it won't work docked or undocked, even
>thouth the dumpcis seems to say it should work with irq 8.

When I moved from 2.2-PAO to 3.1, my pccard support stopped working entirely.
After much debugging, I found out it was due in part to how the irq's are being
allocated.  In order to get an IRQ allocated, there has to be a match between
the device IRQ mask and the PCCARD irq mask pool (which is only an
approximation of the actual irq slots available).  Furthermore, there is 
no way to control which IRQ the pcic driver grabs for itself, and, since it
gets first dibs, if it grabs an IRQ that you need for a card, you're screwed.

I added the following to /sys/pccard/pccard.c:

+#ifdef PCIC_DEBUG
+    printf("Locating IRQ...\n(slt->ctrl->irqs=%x, desc->irqmask=%x)\n", slt->ctrl->irqs, desc->irqmask); 
+#endif
	if ((slt->ctrl->irqs & desc->irqmask) == 0)
		return(EINVAL);

When I insert my PortableDock harddrive, I get the following kernel message:

	Locating IRQ...
	(slt->ctrl->irqs=e00, desc->irqmask=200)

As you can see, the PCCARD pool only consists of IRQ 10, 11, and 12 (which 
is much less than what is actually available).  The card requires IRQ 10,
and gets it (before I hacked pcic.c, the controller would grab IRQ 10 for
itself).

I would suggest you check to make sure the PCCARD IRQ pool actually has
IRQ 10 available at the time of card insertion (using my method, or something
similar).

	-Michael Robinson



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199902260422.MAA02250>