Date: Thu, 09 May 2002 07:26:07 -0400 (EDT) From: John Baldwin <jhb@FreeBSD.org> To: "M. Warner Losh" <imp@village.org> Cc: freebsd-mobile@FreeBSD.ORG Subject: Re: Problems with Dell Inspiron 2500/NEWCARD/Xircom CBEM56G Message-ID: <XFMail.20020509072607.jhb@FreeBSD.org> In-Reply-To: <20020508.213149.133750004.imp@village.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 09-May-2002 M. Warner Losh wrote: > In message: <002801c1f503$c6db1c80$0128a8c0@SCOTT> > "Scott Penno" <scott.penno@gennex.com.au> writes: >: I removed apm from the kernel which appeared to be playing having with acpi >: and things are now working a treat. The card works fine, however I do >: receive the following message, 'cardbus0: <unknown card> (vendor=0x115d, >: dev=0x0103) at 0.1 irq 5'. I've had a look through various lists and >: couldn't find a resolution. Is this a real drama and if so, how do I >: correct it? > > That's caused by the sioprobe routine not likeing the cardbus card for > reasons that I've not had time to adequately track down. Speaking of sio, I have an unrelated patch I'd like you to review that makes sio play nicer and share it's IRQ resource for PCI and pccard. I needed this for work last week: Index: sio.c =================================================================== RCS file: /usr/cvs/src/sys/dev/sio/sio.c,v retrieving revision 1.374 diff -u -r1.374 sio.c --- sio.c 26 Apr 2002 20:24:10 -0000 1.374 +++ sio.c 5 May 2002 03:35:19 -0000 @@ -866,10 +866,11 @@ #endif /* COM_ESP */ int -sioattach(dev, xrid, rclk) +sioattach(dev, xrid, rclk, shareirq) device_t dev; int xrid; u_long rclk; + int shareirq; { struct com_s *com; #ifdef COM_ESP @@ -1114,16 +1115,17 @@ rid = 0; com->irqres = bus_alloc_resource(dev, SYS_RES_IRQ, &rid, 0ul, ~0ul, 1, - RF_ACTIVE); + shareirq ? RF_ACTIVE | RF_SHAREABLE : RF_ACTIVE); if (com->irqres) { - ret = BUS_SETUP_INTR(device_get_parent(dev), dev, com->irqres, - INTR_TYPE_TTY | INTR_FAST, - siointr, com, &com->cookie); - if (ret) { + if (!shareirq) + ret = BUS_SETUP_INTR(device_get_parent(dev), dev, + com->irqres, INTR_TYPE_TTY | INTR_FAST, siointr, + com, &com->cookie); + if (shareirq || ret) { ret = BUS_SETUP_INTR(device_get_parent(dev), dev, com->irqres, INTR_TYPE_TTY, siointr, com, &com->cookie); - if (ret == 0) + if (!shareirq && ret == 0) device_printf(dev, "unable to activate interrupt in fast mode - using normal mode\n"); } if (ret) Index: sio_isa.c =================================================================== RCS file: /usr/cvs/src/sys/dev/sio/sio_isa.c,v retrieving revision 1.8 diff -u -r1.8 sio_isa.c --- sio_isa.c 23 Mar 2002 12:13:34 -0000 1.8 +++ sio_isa.c 2 May 2002 14:23:26 -0000 @@ -158,7 +158,7 @@ sio_isa_attach(dev) device_t dev; { - return (sioattach(dev, 0, 0UL)); + return (sioattach(dev, 0, 0UL, 0)); } DRIVER_MODULE(sio, isa, sio_isa_driver, sio_devclass, 0, 0); Index: sio_pccard.c =================================================================== RCS file: /usr/cvs/src/sys/dev/sio/sio_pccard.c,v retrieving revision 1.6 diff -u -r1.6 sio_pccard.c --- sio_pccard.c 20 Mar 2002 02:07:41 -0000 1.6 +++ sio_pccard.c 2 May 2002 14:23:38 -0000 @@ -105,7 +105,7 @@ sio_pccard_attach(dev) device_t dev; { - return (sioattach(dev, 0, 0UL)); + return (sioattach(dev, 0, 0UL, 1)); } static int Index: sio_pci.c =================================================================== RCS file: /usr/cvs/src/sys/dev/sio/sio_pci.c,v retrieving revision 1.7 diff -u -r1.7 sio_pci.c --- sio_pci.c 20 Mar 2002 19:38:26 -0000 1.7 +++ sio_pci.c 2 May 2002 14:24:14 -0000 @@ -93,7 +93,7 @@ if (id->desc == NULL) return (ENXIO); sio_pci_kludge_unit(dev); - return (sioattach(dev, id->rid, 0UL)); + return (sioattach(dev, id->rid, 0UL, 1)); } /* Index: sio_puc.c =================================================================== RCS file: /usr/cvs/src/sys/dev/sio/sio_puc.c,v retrieving revision 1.3 diff -u -r1.3 sio_puc.c --- sio_puc.c 20 Mar 2002 02:07:41 -0000 1.3 +++ sio_puc.c 2 May 2002 14:24:09 -0000 @@ -71,7 +71,7 @@ if (BUS_READ_IVAR(device_get_parent(dev), dev, PUC_IVAR_FREQ, &rclk) != 0) rclk = DEFAULT_RCLK; - return (sioattach(dev, 0, rclk)); + return (sioattach(dev, 0, rclk, 1)); } static int Index: siovar.h =================================================================== RCS file: /usr/cvs/src/sys/dev/sio/siovar.h,v retrieving revision 1.5 diff -u -r1.5 siovar.h --- siovar.h 20 Mar 2002 02:07:41 -0000 1.5 +++ siovar.h 2 May 2002 14:20:21 -0000 @@ -63,7 +63,7 @@ #define CLR_FLAG(dev, bit) device_set_flags(dev, device_get_flags(dev) & ~(bit)) #endif /* PC98 */ -int sioattach(device_t dev, int xrid, u_long rclk); +int sioattach(device_t dev, int xrid, u_long rclk, int shareirq); int siodetach(device_t dev); int sioprobe(device_t dev, int xrid, u_long rclk, int noprobe); -- John Baldwin <jhb@FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve!" - http://www.FreeBSD.org/ 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?XFMail.20020509072607.jhb>