Re: Notify(0x88) (was Re: Asus V1j)

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

 



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

According 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


[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