Date: Sat, 15 Jul 2006 21:01:23 -0400 (EDT) From: john@utzweb.net To: "Bruno Ducrot" <ducrot@poupinou.org> Cc: freebsd-acpi@freebsd.org, freebsd-mobile@freebsd.org Subject: Re: ch to fix this Re: Dell/acpi_video hw.acpi.video.out0 is probably a bug, and an important one. Re: Dell laptops Message-ID: <46050.69.93.78.27.1153011683.squirrel@69.93.78.27> In-Reply-To: <20060715183804.GN17014@poupinou.org> References: <Pine.GSO.4.64.0607112352430.27869@sea.ntplx.net> <200607122136.54293.mistry.7@osu.edu> <Pine.GSO.4.64.0607130824240.6165@sea.ntplx.net> <44B6401F.8050507@centtech.com> <Pine.GSO.4.64.0607130848190.6165@sea.ntplx.net> <44B641F2.2020500@centtech.com> <Pine.GSO.4.64.0607130900460.6165@sea.ntplx.net> <32884.69.93.78.27.1152831695.squirrel@69.93.78.27> <34247.69.93.78.27.1152835592.squirrel@69.93.78.27> <39062.69.93.78.27.1152857140.squirrel@69.93.78.27> <20060715183804.GN17014@poupinou.org>
next in thread | previous in thread | raw e-mail | index | archive | help
> Hi John,
Hello Bruno
> On Fri, Jul 14, 2006 at 02:05:40AM -0400, john@utzweb.net wrote:
>> acpi_video.c expects the lcd to be identified as 0x0110, but my Dell
>> Latitude C400 (and probably others) id's the lcd at 0x0400:
>>
>> Device (LCD)
>> {
>> Method (_ADR, 0, NotSerialized)
>> {
>> Return (0x0400)
>> }
>>
>>
>> so, acpi_video needs to account for this.
>>
>>
>> got this sorted, and now the display turns back on, here's the patch, i
>> already send-pr'd it
>
> Youre somewhat right, but your patch is wrong.
Thankyou for taking interest and reviewing my analysis and patch.
I would beg to differ with your assertions concerning the patch's
correctness, because the operation you mention below is handled a few
lines above the patch.
> Actually you have to check if ((adr & 0x0400) == 0x0400).
the & occurs at the top of the switch, here's the destroy case:
static void
acpi_video_vo_destroy(struct acpi_video_output *vo)
{
struct acpi_video_output_queue *voqh;
ACPI_SERIAL_ASSERT(video);
if (vo->vo_sysctl_tree != NULL) {
vo->vo_sysctl_tree = NULL;
sysctl_ctx_free(&vo->vo_sysctl_ctx);
}
if (vo->vo_levels != NULL)
AcpiOsFree(vo->vo_levels);
switch (vo->adr & DOD_DEVID_MASK) {
case DOD_DEVID_MONITOR:
voqh = &crt_units;
break;
case DOD_DEVID_PANEL:
case 0x400:
voqh = &lcd_units;
break;
case DOD_DEVID_TV:
voqh = &tv_units;
break;
default:
voqh = &other_units;
}
STAILQ_REMOVE(voqh, vo, acpi_video_output, vo_unit.next);
free(vo, M_ACPIVIDEO);
}
there is also the indisputable fact that it worked:
[spaz@minime /usr/home/spaz]$ sysctl hw.acpi.video
hw.acpi.video.crt0.active: 0
hw.acpi.video.lcd0.active: 1 <-- used to be out0
[spaz@minime /usr/home/spaz]$
> In fact, acpi_video.c is
> correct for ACPI spec2, but ACPI spec3 have changed in that regard, and
> only the value 0x110 (LCD internal panel) should be kept for
> backward compatility.
>
> Please look at the two specifications (v2.0c and v3) at the ACPI
> info website: http://www.acpi.info for more.
ah, the spec. thankyou!
i will take the time to read it carefully.
currently, i think that the next areas of despair with my dell are the
following:
from dmesg on boot:
pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
ACPI: Found matching pin for 0.31.INTA at func 1: 255
ACPI: Found matching pin for 0.31.INTB at func 5: 11
pci_link1: BIOS IRQ 11 for 0.31.INTB is invalid
from dmesg post quitting xorg:
"Interrupt storm detected on irq 11; throttling interrupt source"
i would think that if i could figure out how to fix the invalid INTB, i'd
probably not get the interrupt storm
> (pseudo patch snipped)
>
> Cheers,
>
> --
> Bruno Ducrot
>
> -- Which is worse: ignorance or apathy?
> -- Don't know. Don't care.
>
>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?46050.69.93.78.27.1153011683.squirrel>
