Re: hp-wmi is not notified to run hotkey query...

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

 



Thank you Joey for sharing these debug methods.

> You might need check those buttons emit Q event or WMI event.
>
> watch -n 1 cat /sys/firmware/acpi/interrupts/gpe_all
> watch -n 1 cat /sys/firmware/acpi/interrupts/gpe[0123][0123456789ABCDEF]
>
> The value should increased when you press hotkey.
> Then reference Corentin's article: http://lwn.net/Articles/391230/
>
I found that nothing happens in gpe_all when I push a hotkey button. I
also found that GPE03 calls _Q15. _Q15 is the wireless switch method,
which I have reprogrammed to notify hp-wmi of a keypress. Where is it
defined that GPE03 runs method _Q15?

> Use wmidump to parse out wmi, find out the wmi event we might want to
> listen, the flags should has ACPI_WMI_EVENT.
>
> Then, the hard thing is we need try to poke and try to reverse engineer
> to GUESS the input/output format from event.
I did not run wmidump because first, it was not installed, and second,
because I have determined that the wmi component works.

> If the EC emit Q event when press hotkey, you can enable acpi debug log:
> acpi.debug_level=0x0000000F acpi.debug_layer=0xffffffff log_buf_len=5M
>
> To monitor which method does it run when you press hotkey.
The EC not emitting a Q event is indeed my problem. It should run
method _Q16, which is defined to notify wmi of a keypress.

> And, it's also possibility for EC direct emit scancode, you can use:
> showkey command to grub it or look at dmesg should has some messages.
The way the DSDT is written, this is not the case. However, this may
be something to look at since the EC is the one that reads the button
via SMBus. I can read the internal code via ec_read(0xA2,tmp), a.k.a
QBBB.


Here is my current thinking, something in the EC should trigger method
_Q16. Ideally, SMBus should do it when it receives the button code.
Unfortunately, that function looks like it started with ACPIspec-2
section 5.6.2.2.2. Although the manufacturer's website indicates the
EC, ENE KB3926 supports ACPI v2, my dsdt.dsl only indicates ACPI v1.
Another possibility, although probably not, is that the buttons also
trigger a GPIO when one is pressed and that the correct GPIO pin needs
to be programmed correctly. My final thought is to do polling in the
EC instead of in the kernel by programming one of the GP Timers to
check for a button press and emit a wmi event in such a case.

The problem I face now is that the GPIO pin configuration is at
0xFCxx, and the GPT configuration is at 0xFExx, neither of which can
be accessed with ec_read/write, as it is confined to 0xFFxx. Maybe
there is another function that I do not find?

Thanks,
Kyle
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux