4. Multimedia button, the first on the left side from top buttons. On
windows it runs full screen application to what movies, presentation and listen music. I made a change like with brightness buttons: Method (_Q51, 0, NotSerialized) //multimedia (top) { /* \_SB.PCI0.SBRG.EC0.WRAM (0x04, 0xCB, 0x09) Store (One, Local0) While (Local0) { If (\_SB.ATKP) { SPIN (0x23, 0x00) Sleep (0x32) SPIN (0x23, 0x01) } Store (Zero, Local2) If (\_SB.PCI0.SBRG.EC0.RPIN (0x43)) { Or (Local2, 0x04, Local2) } If (\_SB.PCI0.SBRG.EC0.RPIN (0x43)) { Or (Local2, 0x02, Local2) } If (\_SB.PCI0.SBRG.EC0.RPIN (0x43)) { Or (Local2, 0x01, Local2) } If (LEqual (Local2, 0x07)) { \_SB.PCI0.SBRG.EC0.WRAM (0x04, 0xCB, 0x89) Notify (\_SB.ATKD, 0x95) Store (Zero, Local0) } } */ If (\_SB.ATKP) { Notify (\_SB.ATKD, 0x68) } } But it notify to the /proc/acpi/event for the first time it is pressed. Next time I press it, it does do nothing. Again I need more time to look what this method should do but looking on the code it is strange that \_SB.PCI0.SBRG.EC0.RPIN (0x43) is checked few times. This is still pending to be solved. Maybe I commended to much, and there is no state wrote to memory, and that is why it is not called again.
I uncommented fully this method. I only changed code 0x95 to 0x68 and now it works very well. I noticed that when method was commented pressing method worked once time only. After soft reboot BIOS test screen was very ugly, colors ware not the one that should be, and letters look like on broken screen. Now everything is ok. This lead to problem with codes bigger than 0x80.
5. The last big mystery are media control buttons (play, stop, rewind, forward). I cannot find the in DSDT. I found something that I think should be connected to those keys. Method (_Q6E, 0, NotSerialized) //unknown 1 { If (\_SB.ATKP) { // Notify (\_SB.ATKD, 0x8A) Notify (\_SB.ATKD, 0x65) } } //////////////////////////////////// Method (_Q6F, 0, NotSerialized) //unknown 3 { If (\_SB.ATKP) { // Notify (\_SB.ATKD, 0x99) Notify (\_SB.ATKD, 0x67) } } But those are two keys not four. And my values are not reported in /proc/acpi/events.
Does they work on the other OS ? Those buttons works with Microsoft Media Player as described on keys. I had to install nothing for them to work.How to find those buttons? Please help me with that. I'm attaching my dsdt.
1. In /proc/acpi/events few keys which looks normal in DSDT are not reported. I found that all of them have code bigger than 0x80. I founded those lines and changed them to return codes below 0x80 (to ones that are not used) and that solved problem. I did not have time to look into acpi source code and maybe my solution is not the best way to do it, and maybe not solves the problem, but works for me. Example: - F2 wifi button //Notify (\_SB.ATKD, 0x88) Notify (\_SB.ATKD, 0x56) The only exception is sleep button F1 but it is notified not to \_SB.ATKD but to \_SB.SLPB and is processed by buttons module. Notify (\_SB.SLPB, 0x80) Is it a bug or a feature that codes over 0x80 are not reported?I don't know :/ So, let's ask linux-acpi@xxxxxxxxxxxxxxxAccording to the ACPI spec, section 5.6.3 "Device Object Notifications" 0-7f common for all devices 80-bf device specific c0-ff vendor specific so I think that what happens to codes of 80 and above should depend on the device driver that is bound to the device that handles the notify. I'll venture that SLPB is the sleep button, and the standard button driver is already bound to handle that one.
Thanks for pointing that Len.How this can be made in asus_laptop driver? I do not know acpi interfaces, but i assume it should be done during handler installation. Am I wright?
Attachment:
asus_v1j.gz
Description: application/gzip