• João Paulo Rechi Vita's avatar
    platform/x86: asus-wireless: Use per-HID HSWC parameters · 4b7fb9fc
    João Paulo Rechi Vita authored
    Some Asus machines use 0x4/0x5 as their LED on/off values, while others
    use 0x0/0x1, as shown in the DSDT excerpts below. Luckily it seems this
    behavior is tied to different HIDs, after looking at 44 DSDTs from
    different Asus models.
    
    Another small difference is that a few of them call GWBL instead of
    OWGS, and SWBL instead of OWGD. That does not seem to make a difference
    for asus-wireless, and is additional reasoning to not try to call these
    methods directly.
    
    Device (ASHS)                       | Device (ASHS)
    {                                   | {
        Name (_HID, "ATK4002")          |     Name (_HID, "ATK4001")
        Method (HSWC, 1, Serialized)    |     Method (HSWC, 1, Serialized)
        {                               |     {
            If ((Arg0 < 0x02))          |         If ((Arg0 < 0x02))
            {                           |         {
                OWGD (Arg0)             |             OWGD (Arg0)
                Return (One)            |             Return (One)
            }                           |         }
            If ((Arg0 == 0x02))         |
            {                           |         If ((Arg0 == 0x02))
                Local0 = OWGS ()        |         {
                If (Local0)             |             Return (OWGS ())
                {                       |         }
                        Return (0x05)   |
                }                       |         If ((Arg0 == 0x03))
                Else                    |         {
                {                       |             Return (0xFF)
                        Return (0x04)   |         }
                }                       |
            }                           |         If ((Arg0 == 0x80))
            If ((Arg0 == 0x03))         |         {
            {                           |            Return (One)
                Return (0xFF)           |         }
            }                           |     }
            If ((Arg0 == 0x04))         |     Method (_STA, 0, NotSerialized)
            {                           |     {
                OWGD (Zero)             |         If ((MSOS () >= OSW8))
                Return (One)            |         {
            }                           |             Return (0x0F)
            If ((Arg0 == 0x05))         |         }
            {                           |         Else
                OWGD (One)              |         {
                Return (One)            |             Return (Zero)
            }                           |         }
            If ((Arg0 == 0x80))         |     }
            {                           | }
                Return (One)            |
            }                           |
        }                               |
        Method (_STA, 0, NotSerialized) |
        {                               |
            If ((MSOS () >= OSW8))      |
            {                           |
                Return (0x0F)           |
            }                           |
            Else                        |
            {                           |
                Return (Zero)           |
            }                           |
        }                               |
    }                                   |
    Signed-off-by: default avatarJoão Paulo Rechi Vita <jprvita@endlessm.com>
    Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
    4b7fb9fc
asus-wireless.c 4.98 KB