ThinkPad x60 and FN keys

Nate Lawson nate at root.org
Tue Mar 20 07:55:26 UTC 2007


Rong-en Fan wrote:
> On 3/19/07, Taku YAMAMOTO <taku at tackymt.homeip.net> wrote:
>> On Sat, 17 Mar 2007 17:10:38 +0800
>> "Rong-en Fan" <grafan at gmail.com> wrote:
>>
>> > Tested with newer acpica (available on acpi@). Without acpi_video,
>> > brightness control (FN+Home, End) works. Bluetooth control
>> > (fn+f5) works and the dev.acpi_ibm.0.bluetooth seems not flip flop.
>> > FN+F7 still not work.
>> >
>> > With acpi_video, brightness control does not work.
>> >
>> > Thank you.
>> >
>> > Regards,
>> > Rong-En Fan
>>
>> Fine.
>> It's expected that brightness hotkeys aren't functional with
>> acpi_video on
>> recent ThinkPads because their BIOS stop handling of the brightness and
>> rely on OS once acpi_video gets involved.
>>
>> The acpi_video module should of cource be enhanced to handle these
>> brightness events defined in ACPI 3.0 spec. If I would have some spare
>> time...
> 
> Thank you. In the mean time, could we get the patch committed?
> (I'm CC'ing Nate Lawson)
> 
> BTW, if I understand you correctly, when acpi_video is loaded, fn+home/end
> will generate some events to acpi_video, but our acpi_video does not handle
> these events so the brightness are not adjusted? Is that right?
> 
> Regards,
> Rong-En Fan
> 
> ==
> 
> --- acpi_ec.c-1.69    Tue Feb 27 09:14:20 2007
> +++ sys/dev/acpica/acpi_ec.c    Tue Feb 27 14:39:52 2007
> @@ -825,6 +825,11 @@ EcGpeHandler(void *Context)
>     CTR1(KTR_ACPI, "ec event was IBE/OBF, status %#x", EcStatus);
>     sc->ec_csrvalue = EcStatus;
>     wakeup(&sc->ec_csrvalue);
> +    if (!sc->ec_sci_pend) {
> +        Status = AcpiEnableGpe(sc->ec_gpehandle, sc->ec_gpebit, ACPI_ISR);
> +        if (ACPI_FAILURE(Status))
> +        printf("EcGpeHandler: AcpiEnableEvent failed\n");
> +    }
>     } else if (!sc->ec_sci_pend) {
>     /* SCI bit set and no pending query handler, so schedule one. */
>     CTR0(KTR_ACPI, "ec queueing gpe handler");

Crap, that is a bug.  In the path where the event was an SCI, we now no
longer re-enable the GPE.  Thanks for pointing this out.

I've committed a fix in rev 1.71.  See if it helps.

-- 
Nate


More information about the freebsd-mobile mailing list