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 14:35 schrieb Michał Kępień:
>>> 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?
> 
> First I figured out (using a command almost identical to the one I
> suggested to you) which GPE is used for signalling brightness-related
> key presses on my Haswell machine.  This immediately led me to ACPI
> method _L11.  I selectively commented out ACPI code from this method,
> recompiling and overriding it using /sys/kernel/debug/acpi/custom_method
> after every change until I figured out exactly which method invocation
> causes the key events to be generated.  Once I knew that, I searched for
> a similar invocation in a Skylake DSDT dump.  This led me to ACPI method
> _L21, which is very similar to Haswell's _L11.

Thanks for this info. I guess I can also debug the "disable touchpad"
button with this method.

I'm currently to recompiling my Ubuntu kernel, as it doesn't set
CONFIG_ACPI_CUSTOM_METHOD

Reading _L21, there are quite a few calls to Notify (\_SB.FEXT, 0x80),
which is exactly the notify function for the Fujitsu ACPI device.

Actually there are a few more GPEs, which emit Notify (\_SB.FEXT, 0x80)
calls, which are caught by the fujitsu-notebook driver.

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

What's the easiest way to report the value to userspace? I don't think I
can add variables.

My idea was to add a Notify (\_SB.FEXT, 0x80) into the BSWF branch, and
remove the Notify calls from all other branches.

Probably even start by removing all Notify calls to be sure the function
actually is overwritten.

>>> 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).

Regards,

Jan-Marek

--
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