From owner-freebsd-hackers Fri Aug 3 0:30:45 2001 Delivered-To: freebsd-hackers@freebsd.org Received: from rover.village.org (rover.bsdimp.com [204.144.255.66]) by hub.freebsd.org (Postfix) with ESMTP id 840FE37B406 for ; Fri, 3 Aug 2001 00:30:42 -0700 (PDT) (envelope-from imp@harmony.village.org) Received: from harmony.village.org (harmony.village.org [10.0.0.6]) by rover.village.org (8.11.3/8.11.3) with ESMTP id f737UfF02331; Fri, 3 Aug 2001 01:30:41 -0600 (MDT) (envelope-from imp@harmony.village.org) Received: from harmony.village.org (localhost.village.org [127.0.0.1]) by harmony.village.org (8.11.3/8.11.4) with ESMTP id f737UfH62560; Fri, 3 Aug 2001 01:30:41 -0600 (MDT) (envelope-from imp@harmony.village.org) Message-Id: <200108030730.f737UfH62560@harmony.village.org> To: lists Subject: Re: NewCard / pccbb Cc: freebsd-hackers@FreeBSD.ORG In-reply-to: Your message of "Thu, 02 Aug 2001 14:53:20 +0200." References: Date: Fri, 03 Aug 2001 01:30:41 -0600 From: Warner Losh 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 : wi0: 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