Date: Wed, 10 May 2000 09:07:24 +0100 (BST) From: Doug Rabson <dfr@nlsystems.com> To: John Baldwin <jhb@freebsd.org> Cc: n_hibma@freebsd.org, freebsd-new-bus@freebsd.org, "John H. Baldwin" <jobaldwi@cslab.vt.edu> Subject: Re: Alpha USB difficulties... Message-ID: <Pine.BSF.4.21.0005100851440.47945-100000@salmon.nlsystems.com> In-Reply-To: <200005092103.RAA05315@server.baldwin.cx>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 9 May 2000, John Baldwin wrote: > > On 09-May-00 Doug Rabson wrote: > > On Tue, 9 May 2000, John H. Baldwin wrote: > > > >> On Tue, 9 May 2000, Doug Rabson wrote: > >> > >> > There is already a function isa_alloc_intr() which does most of what you > >> > need so perhaps you don't need to add isa_alloc_intrs(). On the other > >> > hand, your function is slightly more general. > >> > >> I did see the isa_alloc_intr() function, it was what I modeled my function > >> on. I did use the intrs() function solely for the general case. I > >> figured it would be bad to assume that all IRQ requests would always > >> contain just one IRQ. If that is the case, however, then I'll change it > >> to use isa_alloc_intr() instead. > > If you prefer the more general interface, I'll go through and convert all > of the calls to isa_alloc_intr() to the isa_alloc_intrs() interface, and > rename isa_alloc_intrs() to isa_alloc_intr() if that is preferred as well. > That way we would only have one interface in the tree. > > >> > To make interrupt delivery work, you also need to hook pci_setup_intr and > >> > pci_teardown_intr and vector them to the isa functions too. > >> > >> Hmmm, it looks like I'll need to override this /sys/pci/pcisupport.c > >> conditional on #ifdef alpha? Or is this only a USB thing and thus should > >> only be done for the ohci and uhci drivers? I was assuming that this was > >> a general problem with SRM and PCI devices with ISA IRQ's. > > > > Hmm. I forgot that each chipset provides its own setup/teardown code. You > > don't need to change any mi code but you probably need to add some extra > > logic to cia_setup_intr() and tsunami_setup_intr(). Those are the main > > chipsets which are affected although really this should happen for all > > chipsets which don't use the ISA pic for routing all interrupts. > > Ok, done. For lack of a better name, I just renamed the functions to > cia_tsunami_{setup,teardown}_intr(), and patched the cia and tsunami > driver appropriately. Latest patch is at the same place as the others. The patch looks good. I'm not too keen on the name cia_tsunami_*_intr(). Maybe something more generic like alpha_pci_{setup,teardown}_intr(). The code in pci_alloc_resource which looks for the ISA range should be conditional on NISA>0 so that the file can work even if ISA is not built. Apart from that, it looks ready to commit. With this fix, it should be possible to simplify some of the alpha-specific hacks in the ata driver which have to work around the same interrupt mapping hassle. -- Doug Rabson Mail: dfr@nlsystems.com Nonlinear Systems Ltd. Phone: +44 20 8442 9037 To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-new-bus" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0005100851440.47945-100000>