Re: Brightness and "touchpad dis-/enable" keys not working for Fujitsu e7x6

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 23.06.2016 um 13:18 schrieb Michał Kępień:
>>> I played with my Lifebook E744 a bit and there is a chance it is not as
>>> different from the Skylake machines as I originally imagined.  Earlier
>>> in this thread, I already mentioned that pure ACPI brightness control
>>> doesn't work, just like it doesn't work on Skylakes.  However, input
>>> events are correctly generated when Fn+F6 or Fn+F7 is pressed.
>>
>> That's no mystery, because the brightness control ACPI device (AKA
>> FUJ02B1 is available on e7x4 notebooks and the diriver also generates
>> the keycodes in addition.
> 
> No, at least not on Haswells.  For proof, do an `rmmod fujitsu-laptop'
> on a Haswell machine and press Fn+F6 or Fn+F7.  The input event will
> still be generated.  What happens is that pressing Fn+F6 or Fn+F7 raises
> a certain GPE (General-Purpose Event; 0x11 on Haswells).  This causes
> the corresponding ACPI method (_L11) to be called, which in turn sends
> notifications to both FUJ02B1 and the ACPI video device.  On my Haswell
> machine, the former [1] effectively does nothing, because subsequent
> calls to GBLL keep returning the same brightness level, apparently
> ignoring key presses, but the latter [2] is enough because it causes
> acpi_video to generate an input event.  For further proof, boot a 4.5+
> kernel on a Haswell machine with command line parameter
> video.report_key_events=1.  Brightness-related input events will not be
> generated any more.
> 
> I looked at the ACPI tables you sent me and it looks like
> brightness-related keys should be handled by ACPI method _L21 on
> Skylakes.  As far as I can tell without playing with the hardware
> myself, the ACPI code doesn't strike me as outright broken, so the first
> step would be to confirm whether the relevant GPE is raised at all when
> you press brightness-related keys.  To check it, launch the following
> command in a terminal:
> 
>     watch -n 1 cat /sys/firmware/acpi/interrupts/gpe21
> 
> and press Fn+F6 or Fn+F7.  The counter should get increased by one.

Yup - great. This works :-)
I would be interested to know, how you came to this conclusion. Is this
encoded in the ssdt tables? I really want to understand this. Should I
read the ACPI specs?

> If it does, try overriding ACPI method _L21 [3] so that you can read
> the value of BSWF when the method is invoked.

I'll read [3] and report back later.

> If that value is 0, it's
> obviously a vendor bug as it would prevent the ACPI video device from
> being notified.  If the GPE count isn't increased when
> brightness-related keys are pressed, it means some hardware
> initialization may be required before these keys are handled.  In that
> case we would likely be screwed without assistance from Fujitsu.
> 
> To sum up, I see no immediate reason for brightness control not to work
> on Skylakes, so you will have to get your hands a bit dirty to get to
> the bottom of this (and it might still not yield a solution).

The brightness buttons work in Windows 7 with the Fujitsu button driver.
Didn't check, if they even work without. I can get my hands on a Windows
7 laptop, but that'll take some time, if this additional info would help.

>> The diff between e7x4 and e7x6 DSDT is ~43k lines or 1.3MB
>> And the DSDT of 736 and 756 is identical.
>>
>>> And I am
>>> sure these events are generated by ACPI code as booting with acpi=off
>>> makes the input events disappear, while also causing brightness to be
>>> correctly adjusted.  Thus, I can try to figure out which part of the
>>> ACPI code causes the input events to be generated.  That information
>>> combined with your DSDT dump might help us in figuring out how to make
>>> it work for your machine.  However, it might just as well turn out that
>>> Fujitsu switched to using WMI or some opaque vendor-specific magic.
>>
>> The ACPI code doesn't generate the keycodes.
>> Look at the acpi_fujitsu_notify function in
>> drivers/platform/x86/fujitsu-laptop.c
>>
>> And sure, without ACPI no ACPI driver will be loaded.
>>
>> So without ACPI, the brightness buttons work correctly (not that's an
>> option to run a laptop without ACPI)?
> 
> Indeed.  My understanding is that on an operating system without ACPI
> support, brightness is adjusted directly by the BIOS.
> 
> [1] Notify (\_SB.PCI0.LPCB.FJEX, 0x80)
> [2] \_SB.PCI0.GFX0.LCD.BLNF ()
> [3] see: Documentation/acpi/method-customizing.txt
> 

--
To unsubscribe from this list: send the line "unsubscribe platform-driver-x86" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel Development]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux