Date: Sun, 18 Jun 2000 11:40:52 +0200 From: Gary Jennejohn <garyj@peedub.muc.de> To: Paul Herman <pherman@frenchfries.net> Cc: Gerhard Sittig <Gerhard.Sittig@gmx.net>, freebsd-isdn@FreeBSD.ORG Subject: Re: i4b hangs during boot with ELSA Microlink Message-ID: <200006180940.LAA01642@peedub.muc.de> In-Reply-To: Your message of "Sun, 18 Jun 2000 10:21:54 %2B0200." <Pine.BSF.4.21.0006180954060.353-100000@bagabeedaboo.security.at12.de>
next in thread | previous in thread | raw e-mail | index | archive | help
Paul Herman writes: >On Sat, 17 Jun 2000, Gerhard Sittig wrote: > >> The Linux driver (HiSax) had a similar problem in a former version >> -- it hung at load time when the Elsa card was plugged into an >> active bus. Do I remember right that you saw the very same >> symptom? Maybe it's helpful to browse the Changelog of the Linux >> driver from, say 2.2.10 up to now (2.2.16). > >Yes, that does indeed sound like the same problem I'm having. > >Thanks Gerhard, for the tip. I'm looking at the current i4linux code >and the main difference I see is that the their loop bails out after >five tries. I tried that in i4b, but the interrupts still keep coming >(even after the function exits.) I must be missing something. > >Is anyone familiar with this problem (i.e. ELSA PCI hanging on an >active bus)? I really have _zero_ clue about ISDN hardware, and I >could use a little direction. I will continue to search through CVS >trees and mailing lists, but due to my lack of expertise in this area, >I can very easily overlook something. > It looks like the card has a problem in the early stages of startup when the cable is plugged in. It's generating interrupts which don't seem to be getting cleared in the interrupt handler. I'm not familiar with this card, so I can't really help. Actually, the Linux driver does quite a bit more. It reads the interrupt register on the card (in FreeBSD parlance iobase1 + 0x4c) and checks whether the card actually interrupted. This is missing from i4b. Unfortunately, iobase1 is never saved anywhere that I can see, so it would be difficult to do the same thing, but IMO necessary. And there's also the limitation on how often the code goes through the loop in Linux. The driver should be modified so that the interrupt routine is actually in i4b_elsa_qs1p.c. This routine could then call isic_pci_intr_sc in i4b_isic_pci.c. Or, even better, clone the code from i4b_isic_pci.c. That would be a much cleaner solution. That's the way I did it in the Fritz!PCI driver. And save iobase1 so that it can be reused in the interrupt routine. --- Gary Jennejohn / garyj@muc.de gj@freebsd.org To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-isdn" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200006180940.LAA01642>