From owner-freebsd-hackers Thu Nov 28 9:47: 6 2002 Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 4F01137B401 for ; Thu, 28 Nov 2002 09:47:04 -0800 (PST) Received: from harmony.village.org (rover.bsdimp.com [204.144.255.66]) by mx1.FreeBSD.org (Postfix) with ESMTP id 614BA43E4A for ; Thu, 28 Nov 2002 09:47:03 -0800 (PST) (envelope-from imp@bsdimp.com) Received: from localhost (warner@rover2.village.org [10.0.0.1]) by harmony.village.org (8.12.3/8.12.3) with ESMTP id gASHl0pk064782; Thu, 28 Nov 2002 10:47:01 -0700 (MST) (envelope-from imp@bsdimp.com) Date: Thu, 28 Nov 2002 10:46:29 -0700 (MST) Message-Id: <20021128.104629.127817773.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 From: "M. Warner Losh" 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> X-Mailer: Mew version 2.1 on Emacs 21.2 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG In message: <20021128152214.U2484-100000@foem.leiden.webweaving.org> Dirk-Willem van Gulik 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