Mail cced to linux-acpi@xxxxxxxxxxxxxxx, they may be able to help us =) Le Saturday 24 March 2007 13:43:26 Szymon Olko, vous avez écrit : > Dear *, > > Finally I found some time to play with buttons in my V1j. At first > thanks for great work!!! > > I'm not acpi nor dsdt guru, but I looked into the code and this is what > I found out. > Module is working very good, almost all buttons are working. So I > decided to play with my DSDT. > I had few problems, and this is how I solved them or I think should be > solved. > > 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@xxxxxxxxxxxxxxx > 2. This laptop has doubled buttons. Thanks asus :D > 3. Brightness buttons (F5 ; F6). They ware generation exceptions like: > > ACPI Error (psargs-0355): [\_SB_.PCI0.P0P2.VGA_.LCDD] Namespace lookup > failure, AE_NOT_FOUND ACPI Error (psparse-0537): Method parse/execution > failed [\_SB_.PCI0.SBRG.EC0_._Q0E] (Node c194bf40), AE_NOT_FOUND > > As far as I understand this problem it is a problem of DSDT which tries > to notify about an event with not defined namespace. This is this line > Notify (\_SB.PCI0.P0P2.VGA.LCDD, 0x87) > I will try to solve that later, because method that process F5 also > decrement brightness, for now the hack is as follows: > > Method (_Q0F, 0, NotSerialized) //bright F5 > { > /* > If (LEqual (OSFG, OSVT)) > { > Notify (\_SB.PCI0.P0P2.VGA.LCDD, 0x87) > } > Else > { > If (LGreater (LBTN, 0x00)) > { > Decrement (LBTN) > } > > If (LGreater (LBTN, 0x0F)) > { > Store (0x0F, LBTN) > } > > STBR () > */ > If (\_SB.ATKP) > { > // Notify (\_SB.ATKD, Add (LBTN, 0x20)) > Notify (\_SB.ATKD, 0x52) > } > /* > } > > Return (One) > */ > } > > I commented whole code of that method and just notify about button > pressed. As for now backlight is working with video module or with > asus_laptop via /sys/class/backlight/asus-laptop/brightness it can be > easily workaround with simple script. But as I said I will try to fix > DSDT later. For F6 code is similar. Hum, you can just remove the If (LEqual (OSFG, OSVT)) { Notify (\_SB.PCI0.P0P2.VGA.LCDD, 0x87) } Else { and it shall work .. But it's a serious issue, as this problem have been reported on other laptop .... What should we do with Notify (\_SB.PCI0.P0P2.VGA.LCDD, 0x87) ? (I think OSVT is for Os Vista). > 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. > > 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 ? > --------------- > That is all about buttons. Summarizing, all except (play, stop, rewind, > forward) are working, multimedia is working once. > This laptop does not have TLED but DSDT says so. I don't know why it is > for. From looking into DSDT WLED and BLED are handled almost the same as > MLED. Is it possible to make a change in asus_laptop to have those leds > visible in /sys/class/leds? I didn't find a way to know if BLED and WLED will handle the device, the led, or both .. So I can't move them to /sys/class/leds .. > Asus laptops in Windows notifies about plugin connector into sound > device. I think that this code: > Method (_L05, 0, NotSerialized) > { > Notify (\_SB.PCI0.MC97, 0x02) > Notify (\_SB.PCI0.HDAC, 0x02) > } > Maybe responsible for that. Are any modules that handles this? Am I wright? I don't think any modules handles this .. But MC97 seems to be a modem controller. Thanks =) -- CHARY 'Iksaif' Corentin http://xf.iksaif.net - 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