Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 3 Aug 2001 10:23:21 +0200 (SAST)
From:      lists <lists@security.za.net>
To:        Warner Losh <imp@harmony.village.org>
Cc:        freebsd-hackers@FreeBSD.ORG
Subject:   Re: NewCard / pccbb 
Message-ID:  <Pine.BSF.4.21.0108031021110.43318-100000@security.za.net>
In-Reply-To: <200108030730.f737UfH62560@harmony.village.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Tried the patch, interesting thing, for some reason or other its always
routing the IRQ to the same IRQ as the realtek network card I have in
here, and with the patch in (before nothing worked at all on the pccbb),
now if the network card is in slot0 it doesnt work, and the wavelan does,
if the wavelan comes first on the pcibus it doesnt work and the network
card does.  For some reason it always seems to be trying to share an IRQ
between these 2, any reason for this?

Andrew

On Fri, 3 Aug 2001, Warner Losh wrote:

> : wi0: <WaveLan/IEEE> at port 0x100-0x13f irq 3 function 0 config 1 on
> : pccard0
> : 
> : Could that irq sharing be breaking something?  
> 
> It could also be that the pccard interrupt routing code (in
> src/sys/dev/pccard/pccard.c) is busted.  If you look at it:
> 
> static void
> pccard_intr(void *arg)
> {
> 	struct pccard_softc *sc = (struct pccard_softc *) arg;
> 	struct pccard_function *pf;
> 	STAILQ_FOREACH(pf, &sc->card.pf_head, pf_list) {
> 		if (pf->intr_handler != NULL) {
> 			int reg = pccard_ccr_read(pf, PCCARD_CCR_STATUS);
> 			if (reg & PCCARD_CCR_STATUS_INTR) {
> 				pccard_ccr_write(pf, PCCARD_CCR_STATUS,
> 				    reg & ~PCCARD_CCR_STATUS_INTR);
> 				pf->intr_handler(pf->intr_handler_arg);
> 			}
> 		}
> 	}
> }
> 
> But if you look at the pccard stnadard, you'll find that the
> PCCARD_CCR_STATUS_INTR bit is only defined for MFC cards.  So, try the
> following:
> 
> static void
> pccard_intr(void *arg)
> {
> 	struct pccard_softc *sc = (struct pccard_softc *) arg;
> 	struct pccard_function *pf;
> 	STAILQ_FOREACH(pf, &sc->card.pf_head, pf_list) {
> 		if (pf->intr_handler != NULL) {
> 			pf->intr_handler(pf->intr_handler_arg);
> 		}
> 	}
> }
> 
> in its place.
> 
> Warner
> 
> To Unsubscribe: send mail to majordomo@FreeBSD.org
> with "unsubscribe freebsd-hackers" in the body of the message
> 


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?Pine.BSF.4.21.0108031021110.43318-100000>