aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/platform/x86/asus-wireless.c
Commit message (Collapse)AuthorAge
* asus-wireless: Toggle airplane mode LEDJoão Paulo Rechi Vita2016-07-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the ASHS device we have the HSWC method, which calls either OWGD or OWGS, depending on its parameter: Device (ASHS) { Name (_HID, "ATK4002") // _HID: Hardware ID Method (HSWC, 1, Serialized) { If ((Arg0 < 0x02)) { OWGD (Arg0) Return (One) } If ((Arg0 == 0x02)) { Local0 = OWGS () If (Local0) { Return (0x05) } Else { Return (0x04) } } If ((Arg0 == 0x03)) { Return (0xFF) } If ((Arg0 == 0x04)) { OWGD (Zero) Return (One) } If ((Arg0 == 0x05)) { OWGD (One) Return (One) } If ((Arg0 == 0x80)) { Return (One) } } Method (_STA, 0, NotSerialized) // _STA: Status { If ((MSOS () >= OSW8)) { Return (0x0F) } Else { Return (Zero) } } } On the Asus laptops that do not have an airplane mode LED, OWGD has an empty implementation and OWGS simply returns 0. On the ones that have an airplane mode LED these methods have the following implementation: Method (OWGD, 1, Serialized) { SGPL (0x0203000F, Arg0) SGPL (0x0203000F, Arg0) } Method (OWGS, 0, Serialized) { Store (RGPL (0x0203000F), Local0) Return (Local0) } Where OWGD(1) sets the airplane mode LED ON, OWGD(0) set it off, and OWGS() returns its state. This commit exposes the airplane mode indicator LED to userspace under the name asus-wireless::airplane, so it can be driven according to userspace's policy. Signed-off-by: João Paulo Rechi Vita <jprvita@endlessm.com> Reviewed-by: Corentin Chary <corentin.chary@gmail.com> Signed-off-by: Darren Hart <dvhart@linux.intel.com>
* asus-wireless: Add ACPI HID ATK4001João Paulo Rechi Vita2016-01-19
| | | | | | | | | | As reported in https://bugzilla.kernel.org/show_bug.cgi?id=98931#c22 in the Asus UX31A the Asus Wireless Radio Control device (ASHS) uses the HID "ATK4001". Signed-off-by: João Paulo Rechi Vita <jprvita@endlessm.com> Reported-by: Tasev Nikola <tasev.stefanoska@skynet.be> Signed-off-by: Darren Hart <dvhart@linux.intel.com>
* platform/x86: Add Asus Wireless Radio Control driverJoão Paulo Rechi Vita2016-01-19
Some Asus notebooks like the Asus E202SA and the Asus X555UB have a separate ACPI device for notifications from the airplane mode hotkey. This device is called "Wireless Radio Control" in Asus websites and ASHS in the DSDT, and its ACPI _HID is ATK4002 in the two models mentioned above. For these models, when the airplane mode hotkey (Fn+F2) is pressed, a query 0x0B is started in the Embedded Controller, and all this query does is a notify ASHS with the value 0x88 (for acpi_osi >= "Windows 2012"): Scope (_SB.PCI0.SBRG.EC0) { (...) Method (_Q0B, 0, NotSerialized) // _Qxx: EC Query { If ((MSOS () >= OSW8)) { Notify (ASHS, 0x88) // Device-Specific } Else { (...) } } } Signed-off-by: João Paulo Rechi Vita <jprvita@endlessm.com> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> Signed-off-by: Darren Hart <dvhart@linux.intel.com>