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

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

 



> > 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.  If
it does, try overriding ACPI method _L21 [3] so that you can read the
value of BSWF when the method is invoked.  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 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

-- 
Best regards,
Michał Kępień
--
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