Date: Thu, 28 Nov 2002 10:46:29 -0700 (MST) From: "M. Warner Losh" <imp@bsdimp.com> To: dirkx@webweaving.org Cc: freebsd-hackers@FreeBSD.ORG, wleiden@xs4all.nl Subject: Re: Understanding PCI intr routing on a Cirrus Logic PD6729 Message-ID: <20021128.104629.127817773.imp@bsdimp.com> In-Reply-To: <20021128152214.U2484-100000@foem.leiden.webweaving.org> References: <20021128150022.T2484-100000@foem.leiden.webweaving.org> <20021128152214.U2484-100000@foem.leiden.webweaving.org>
next in thread | previous in thread | raw e-mail | index | archive | help
In message: <20021128152214.U2484-100000@foem.leiden.webweaving.org>
Dirk-Willem van Gulik <dirkx@webweaving.org> writes:
:
:
: On Thu, 28 Nov 2002, Dirk-Willem van Gulik wrote:
:
: > On Thu, 28 Nov 2002, Dirk-Willem van Gulik wrote:
: >
: > > > 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
: >
: > I may be mistaken - but it seems that
: >
: > pcic_pci_pd67xx_csc(struct pcic_slot *sp, enum pcic_intr_way way)
: > pcic_pci_pd67xx_func(struct pcic_slot *sp, enum pcic_intr_way way)
: >
: > are not called to ensure that the PCI/ISA interrupts are set up
: > (correctly). Or is this not required ?
:
: Calling
:
: pcic_pci_cardbus_init()
:
: from inside
:
: pcic_pci_pd67xx_init()
:
: to push the INTA-D and ISAIRQ's into the PCI state seems to case things to
: no longer freeze up, and I am getting at least some traffic through
: without timeouts.
:
: Dw
:
:
:
: static void
: pcic_pci_pd67xx_init(device_t dev)
: {
: struct pcic_softc *sc = device_get_softc(dev);
:
: if (sc->csc_route == pcic_iw_pci || sc->func_route == pcic_iw_pci)
: device_printf(dev, "PD67xx maybe broken for PCI routing.\n");
:
: #ifdef DIRKX_AT_APACHE_ORG_PRIVATE_HACKS
: /* XXX DIRKX lets try SOME routing of sorts */
: pcic_pci_cardbus_init(dev);
: #endif
this is bogus. However, a less bogus version is:
/*
* Tell the chip to do its routing thing.
*/
sc->chip->func_intr_way(&sc->slots[0], sc->func_route);
sc->chip->csc_intr_way(&sc->slots[0], sc->csc_route);
: }
The reason that cardbus_init is bogus in this context is that it
messes with pci config registers that aren't present on the 6729. Can
you try that out?
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?20021128.104629.127817773.imp>
