Date: Wed, 23 Jul 2008 10:23:49 -0400 From: John Baldwin <jhb@freebsd.org> To: freebsd-acpi@freebsd.org Cc: Brock Williams <brock@cottonwoodcomputer.com> Subject: Re: acpi no sound, acpi disabled no serial on IBM kiosk Message-ID: <200807231023.50029.jhb@freebsd.org> In-Reply-To: <200807221652.43618.brock@cottonwoodcomputer.com> References: <200807220958.55060.brock@cottonwoodcomputer.com> <4886639E.4050201@root.org> <200807221652.43618.brock@cottonwoodcomputer.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday 22 July 2008 06:52:38 pm Brock Williams wrote: > On Tuesday 22 July 2008 4:47:58 pm Nate Lawson wrote: > > John Baldwin wrote: > > > On Tuesday 22 July 2008 05:28:45 pm Brock Williams wrote: > > >> Yeah, I guess I should have said more about the problem. in the ACPI > > >> case I do see the devices there, but they don't work. For example, > > >> the machine has an elotouch touchscreen which works great w/o ACPI > > >> but doesn't with. When I try to cat the device with ACPI enabled, I > > >> get nothing. Without acpi I get the expected touchscreen data when > > >> touching the screen. We also have a dallas ibutton reader hooked up > > >> to another port and it acts the same way. > > > > > > Hmm, they seem to have all the same I/O resources (ports and IRQs), so > > > I don't see anything that would make them not work. Also, there isn't > > > anything in the AML for these devices that I can see that would help > > > (no _INI or _REG methods, etc.). > > > > Just to confirm -- you are switching the device names when you "cat the > > device", right (sio0, 1, 2)? > > Yep, I've tried cat'ing every cuad device that shows up, and I can't get > data out of any of them when I enable acpi. Also while catting with ACPI I > regularly get a message like: > > sio1: 5 more silo overflows (total 5) > > Thanks for the help, Oh, it looks like your brain-damaged BIOS has told us that the interrupts are active-low instead of active-high, so you probably aren't getting any interrupts. Stupid BIOS writers. A quick hack would be to #if 0 the call to 'acpi_config_intr()' in acpi_alloc_resource() in sys/dev/acpica/acpi.c. You could also patch your ASL by fixing each "PNP0501" device like so: --- brock-ibm-anyplace.asl.orig 2008-07-23 10:20:57.000000000 -0400 +++ brock-ibm-anyplace.asl 2008-07-23 10:21:29.000000000 -0400 @@ -5307,7 +5307,7 @@ 0x00, // Alignment 0x08, // Length _Y0F) - IRQ (Edge, ActiveLow, Shared, _Y10) + IRQ (Edge, ActiveHigh, Shared, _Y10) {} }) CreateByteField (BUF1, \_SB.PCI0.UAR1._CRS._Y0F._MIN, IOLO) Unfortunately, there are some systems where we really need the acpi_config_intr() to work (some serial ports on ia64 machines have interrupts that are level/low like PCI interrupts, and w/o the acpi_config_intr() call they end up being edge/high), so we can't just disable them altogether in FreeBSD proper. -- John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200807231023.50029.jhb>