From owner-freebsd-mobile Wed Sep 12 9:49:40 2001 Delivered-To: freebsd-mobile@freebsd.org Received: from rover.village.org (rover.bsdimp.com [204.144.255.66]) by hub.freebsd.org (Postfix) with ESMTP id 8B07137B406 for ; Wed, 12 Sep 2001 09:49:33 -0700 (PDT) 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 f8CGnW614268; Wed, 12 Sep 2001 10:49:32 -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 f8CGnWt41331; Wed, 12 Sep 2001 10:49:32 -0600 (MDT) (envelope-from imp@harmony.village.org) Message-Id: <200109121649.f8CGnWt41331@harmony.village.org> To: Lars Eggert Subject: Re: Partial Success! (Re: PC-Card broken: 4.4-RC4 & Dell Latitude C600) Cc: mobile@FreeBSD.ORG In-reply-to: Your message of "Wed, 12 Sep 2001 09:12:35 PDT." <3B9F8973.C53A0ED4@isi.edu> References: <3B9F8973.C53A0ED4@isi.edu> <3B9F85BB.70DE18A6@isi.edu> <3B9EC74D.CF3DECBD@isi.edu> <3B9E81C4.5CB017D@isi.edu> <3B9D0A4C.2090203@isi.edu> <200109111837.f8BIbft34551@harmony.village.org> <200109112134.f8BLYkt35748@harmony.village.org> <3B9E843A.54EA07A7@isi.edu> <200109121453.f8CEr2t39965@harmony.village.org> <200109121604.f8CG45t40527@harmony.village.org> Date: Wed, 12 Sep 2001 10:49:32 -0600 From: Warner Losh Sender: owner-freebsd-mobile@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org Actually, here's a more complete single patch. Although, to be honest, the code paths involved don't reallyt need the last hunk of this patch. Warner Index: pcic_pci.c =================================================================== RCS file: /home/imp/FreeBSD/CVS/src/sys/pccard/pcic_pci.c,v retrieving revision 1.54.2.16 diff -u -r1.54.2.16 pcic_pci.c --- pcic_pci.c 2001/09/06 20:59:49 1.54.2.16 +++ pcic_pci.c 2001/09/12 16:48:26 @@ -908,10 +908,15 @@ u_int32_t event; u_int32_t stat; int present; + int s; event = bus_space_read_4(sp->bst, sp->bsh, CB_SOCKET_EVENT); if (event != 0) { stat = bus_space_read_4(sp->bst, sp->bsh, CB_SOCKET_STATE); + + /* Ack the interrupt */ + bus_space_write_4(sp->bst, sp->bsh, 0, event); + if (bootverbose) device_printf(sc->dev, "Event mask 0x%x stat 0x%x\n", event, stat); @@ -928,14 +933,14 @@ sc->cd_pending = 1; } else { sc->cd_present = 0; + s = splhigh(); pccard_event(sp->slt, card_removed); + splx(s); } } if (stat & CB_SS_BADVCC) device_printf(sc->dev, "BAD Vcc request\n"); - /* Ack the interrupt */ - bus_space_write_4(sp->bst, sp->bsh, 0, event); } /* @@ -1314,7 +1319,7 @@ DEVMETHOD(bus_activate_resource, pcic_activate_resource), DEVMETHOD(bus_deactivate_resource, pcic_deactivate_resource), DEVMETHOD(bus_setup_intr, pcic_setup_intr), - DEVMETHOD(bus_teardown_intr, bus_generic_teardown_intr), + DEVMETHOD(bus_teardown_intr, pcic_teardown_intr), /* Card interface */ DEVMETHOD(card_set_res_flags, pcic_set_res_flags), To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-mobile" in the body of the message