Date: Wed, 27 Nov 2002 10:03:23 -0700 (MST) From: "M. Warner Losh" <imp@bsdimp.com> To: dirkx@webweaving.org Cc: freebsd-hackers@FreeBSD.ORG Subject: Re: Understanding PCI intr routing on a Cirrus Logic PD6729 Message-ID: <20021127.100323.111035160.imp@bsdimp.com> In-Reply-To: <20021127111749.V2484-100000@foem.leiden.webweaving.org> References: <20021127111749.V2484-100000@foem.leiden.webweaving.org>
next in thread | previous in thread | raw e-mail | index | archive | help
In message: <20021127111749.V2484-100000@foem.leiden.webweaving.org> Dirk-Willem van Gulik <dirkx@webweaving.org> writes: : I've got a "Compaq" "WL200_11Mbps_Wireless_PCI_Card" here. This is a PCI : card with a CL-PD6729 pci<->pcmcia bridge on it. You poor bastard. The 6729 is a many magical and wonderful beast that's different in subtle and not so subtle ways from all other parts. : The trouble is either a hang on detection (when pd6729_intr_path=2 is : used) or a Timeout (with pd6729_intr_path=1/default) when trying to use : this card with either 4.6 or -CURRENT. -current has a better chance of working, but it is still busted. You definitely want pd6729_intr_path=2. In my testing I've almost gotten this card to work, but never completely. :-( : Now it seems that all 4 PCI interrupt pins #A to #D of the PD6729 as well : as IRQ9-12 are all wired together and all are routed to the same INT#A pin : on the PCI bus. : : The INT#B, C and D pints of the PCI bus are not connected to anything. : : Now what exactly does this mean ? : : Should all PCI cards and their PCMCIA children all share the same IRQ and : use polling only ? Yes and no. : How is that configured ? As I am guessing that any of : the IRQ setup by /sys/pccard/pcic_pci.c is rather ignored by having the : wiring on the physical card all going to #A ? In theory, you'd set the pd6729_intr_path to 2. However, there's still some stubtle bug that precludes this wfrom working. Well, right now the following code is trying to force INTA#: /* * Ohterwise we're doing PCI interrupts. For those cardbus bridges * that follow yenta (and the one pcmcia bridge that does), we don't * do a thing to get the IRQ mapped into the system. However, * for other controllers that are PCI, but not yetna compliant, we * need to do some special mapping. * * XXX Maybe we shouldn't assume INTA#, but rather as the function * XXX what Intline to use. */ if (sp->controller == PCIC_PD6729) { /* * INTA - 3 * INTB - 4 * INTC - 5 * INTD - 7 */ sp->putb(sp, PCIC_INT_GEN, /* Assume INTA# */ (sp->getb(sp, PCIC_INT_GEN) & 0xF0) | 3); return (0); } This doesn't force the interrupt to be IRQ3, but rather tells the card to use INTA#. The probe line for wi card should say irq N where N is the same as the bridge's irq. I don't suppose you could enable a serial console and use that to get me a dmesg? I'll help you debug this, but am a little busy with 5.0 issues right now to take another swing at it. Warner To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021127.100323.111035160.imp>