Date: Sat, 15 Jan 2000 20:55:21 +0900 From: Tatsumi Hosokawa <hosokawa@itc.keio.ac.jp> To: mobile@FreeBSD.org Subject: Re: Working pcic polling mode patch (Re: Polling mode of pcic as default?) Message-ID: <86iu0vh7me.wl@ringo.FromTo.Cc> In-Reply-To: In your message of "Sat, 15 Jan 2000 18:39:05 %2B0900" <86ln5rhdxi.wl@ringo.FromTo.Cc> References: <86oganhgj8.wl@ringo.FromTo.Cc> <86ln5rhdxi.wl@ringo.FromTo.Cc>
next in thread | previous in thread | raw e-mail | index | archive | help
At Sat, 15 Jan 2000 18:39:05 +0900, Tatsumi Hosokawa <hosokawa@itc.keio.ac.jp> wrote: > I tested polling mode of -current and it does not work. > I wrote a patch to fix this bug. > If there's no objection, I'll commit it as soon as possible > because 4.0 will soon be frozen. Last patch have a minor bug. (if pcic_irq was not defined in loader.rc, polling mode was selected) I fixed this bug. New patch: Index: pcic.c =================================================================== RCS file: /home/ncvs/src/sys/pccard/pcic.c,v retrieving revision 1.85 diff -u -r1.85 pcic.c --- pcic.c 1999/12/10 07:02:41 1.85 +++ pcic.c 2000/01/15 11:49:18 @@ -263,7 +263,7 @@ char *name; int i; int error; - struct resource *res; + struct resource *res = 0; int rid; static int maybe_vlsi = 0; @@ -452,10 +452,14 @@ if (pcic_irq == 0) { /* See if the user has requested a specific IRQ */ if (!getenv_int("machdep.pccard.pcic_irq", &pcic_irq)) - pcic_irq = 0; + pcic_irq = -1; rid = 0; - res = bus_alloc_resource(dev, SYS_RES_IRQ, - &rid, pcic_irq, ~0, 1, RF_ACTIVE); + if (pcic_irq) { + if (pcic_irq < 0) + pcic_irq = 0; + res = bus_alloc_resource(dev, SYS_RES_IRQ, + &rid, pcic_irq, ~0, 1, RF_ACTIVE); + } if (res) { error = bus_setup_intr(dev, res, INTR_TYPE_MISC, pcicintr, NULL, &ih); @@ -465,9 +469,14 @@ return error; } pcic_irq = rman_get_start(res); + printf("pcic: management irq %d\n", pcic_irq); } else { - printf("pcic: polling, can't alloc %d\n", - pcic_irq); + if (pcic_irq) + printf("pcic: polling mode, can't alloc %d\n", + pcic_irq); + else + printf("pcic: polling mode\n"); + pcic_irq = 0; } } /* @@ -496,6 +505,8 @@ */ if (pcic_irq > 0) sp->putb(sp, PCIC_STAT_INT, (pcic_irq << 4) | 0xF); + else if (pcic_irq == 0) + sp->putb(sp, PCIC_STAT_INT, 0xF); } if (validslots && pcic_irq <= 0) pcictimeout_ch = timeout(pcictimeout, 0, hz/2); To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-mobile" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?86iu0vh7me.wl>