Date: Tue, 18 Jan 2000 15:38:00 +0800 (+0800) From: Michael Robinson <robinson@netrinsics.com> To: imp@village.org, robinson@netrinsics.com Cc: freebsd-mobile@freebsd.org Subject: Re: 3Com 3CCFE574BT works. Message-ID: <200001180738.PAA03315@netrinsics.com> In-Reply-To: <200001180612.XAA14850@harmony.village.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Warner Losh <imp@village.org> writes:
>: The official way to hardwire a pccard to an IRQ in -STABLE is what, then?
>
>/etc/pccard.conf supports this, does it not?
No, it does not. At the very best, /etc/pccard.conf supports a suggestion
of an IRQ, which the system is perfectly willing to ignore, depending on the
the imask value returned by wave_dead_chicken().
If you require deterministic assignment of an IRQ to a pccard, you have to
hardcode an imask value in pccard_alloc_intr(), and build a kernel
specifically for that case.
-Michael
P.S. To save people the trouble of verifying that this is the case, I
include the relevant code from sys/pccard/pccard.c:
---------------------------------------------------------------
/*
* pccard_alloc_intr - allocate an interrupt from the
* free interrupts and return its number. The interrupts
* allowed are passed as a mask.
*/
int
pccard_alloc_intr(u_int imask, inthand2_t *hand, int unit,
u_int *maskp, u_int *pcic_imask)
{
int irq;
unsigned int mask;
for (irq = 1; irq < ICU_LEN; irq++) {
mask = 1ul << irq;
if (!(mask & imask))
continue;
INTRMASK(*maskp, mask);
if (register_intr(irq, 0, 0, hand, maskp, unit) == 0) {
/* add this to the PCIC controller's mask */
if (pcic_imask)
INTRMASK(*pcic_imask, (1 << irq));
update_intr_masks();
INTREN(mask);
return(irq);
}
/* No luck, remove from mask again... */
INTRUNMASK(*maskp, mask);
update_intr_masks();
}
return(-1);
}
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-mobile" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200001180738.PAA03315>
