From: "João Paulo Rechi Vita" <jprvita@gmail.com>
To: Darren Hart <dvhart@infradead.org>
Cc: "Corentin Chary" <corentin.chary@gmail.com>,
platform-driver-x86@vger.kernel.org,
acpi4asus-user@lists.sourceforge.net,
linux-kernel@vger.kernel.org, linux@endlessm.com,
"João Paulo Rechi Vita" <jprvita@endlessm.com>
Subject: [PATCH 2/5] asus-wmi: Create quirk for airplane_mode LED
Date: Mon, 8 Feb 2016 12:05:20 -0500 [thread overview]
Message-ID: <1454951123-27470-3-git-send-email-jprvita@endlessm.com> (raw)
In-Reply-To: <1454951123-27470-1-git-send-email-jprvita@endlessm.com>
Some Asus laptops that have an "airplane mode" indicator LED, also have
the WMI WLAN user bit set, and the following bits in their DSDT:
Scope (_SB)
{
(...)
Device (ATKD)
{
(...)
Method (WMNB, 3, Serialized)
{
(...)
If (LEqual (IIA0, 0x00010002))
{
OWGD (IIA1)
Return (One)
}
}
}
}
So when asus-wmi uses ASUS_WMI_DEVID_WLAN_LED (0x00010002) to store the
wlan state, it drives the airplane mode indicator LED (through the call
to OWGD) in an inverted fashion: the LED is ON when airplane mode is OFF
(since wlan is ON), and vice-versa.
This commit creates a quirk to not register a RFKill switch at all for
these laptops, to allow the asus-wireless driver to drive the airplane
mode LED correctly. It also adds a match to that quirk for the Asus
X555UB.
Signed-off-by: João Paulo Rechi Vita <jprvita@endlessm.com>
---
drivers/platform/x86/asus-nb-wmi.c | 13 +++++++++++++
drivers/platform/x86/asus-wmi.c | 8 +++++---
drivers/platform/x86/asus-wmi.h | 1 +
3 files changed, 19 insertions(+), 3 deletions(-)
diff --git a/drivers/platform/x86/asus-nb-wmi.c b/drivers/platform/x86/asus-nb-wmi.c
index 131fee2..cfee863 100644
--- a/drivers/platform/x86/asus-nb-wmi.c
+++ b/drivers/platform/x86/asus-nb-wmi.c
@@ -78,6 +78,10 @@ static struct quirk_entry quirk_asus_x200ca = {
.wapf = 2,
};
+static struct quirk_entry quirk_no_rfkill = {
+ .no_rfkill = true,
+};
+
static int dmi_matched(const struct dmi_system_id *dmi)
{
quirks = dmi->driver_data;
@@ -297,6 +301,15 @@ static const struct dmi_system_id asus_quirks[] = {
},
.driver_data = &quirk_asus_x200ca,
},
+ {
+ .callback = dmi_matched,
+ .ident = "ASUSTeK COMPUTER INC. X555UB",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
+ DMI_MATCH(DMI_PRODUCT_NAME, "X555UB"),
+ },
+ .driver_data = &quirk_no_rfkill,
+ },
{},
};
diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c
index a96630d..370fa347 100644
--- a/drivers/platform/x86/asus-wmi.c
+++ b/drivers/platform/x86/asus-wmi.c
@@ -2064,9 +2064,11 @@ static int asus_wmi_add(struct platform_device *pdev)
if (err)
goto fail_leds;
- err = asus_wmi_rfkill_init(asus);
- if (err)
- goto fail_rfkill;
+ if (!asus->driver->quirks->no_rfkill) {
+ err = asus_wmi_rfkill_init(asus);
+ if (err)
+ goto fail_rfkill;
+ }
/* Some Asus desktop boards export an acpi-video backlight interface,
stop this from showing up */
diff --git a/drivers/platform/x86/asus-wmi.h b/drivers/platform/x86/asus-wmi.h
index 4da4c8b..5de1df5 100644
--- a/drivers/platform/x86/asus-wmi.h
+++ b/drivers/platform/x86/asus-wmi.h
@@ -38,6 +38,7 @@ struct key_entry;
struct asus_wmi;
struct quirk_entry {
+ bool no_rfkill;
bool hotplug_wireless;
bool scalar_panel_brightness;
bool store_backlight_power;
--
2.5.0
next prev parent reply other threads:[~2016-02-08 17:05 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-08 17:05 [PATCH 0/5] asus-wireless: LED control João Paulo Rechi Vita
2016-02-08 17:05 ` [PATCH 1/5] asus-wireless: Toggle airplane mode LED João Paulo Rechi Vita
2016-02-08 17:05 ` João Paulo Rechi Vita [this message]
2016-05-25 7:13 ` [PATCH 2/5] asus-wmi: Create quirk for airplane_mode LED Corentin Chary
2016-05-25 16:20 ` João Paulo Rechi Vita
2016-05-25 21:24 ` Darren Hart
2016-06-13 21:02 ` João Paulo Rechi Vita
2016-02-08 17:05 ` [PATCH 3/5] asus-wmi: Add quirk_no_rfkill for the Asus X552VW João Paulo Rechi Vita
2016-02-08 17:05 ` [PATCH 4/5] asus-wmi: Add quirk_no_rfkill for the Asus U303LB João Paulo Rechi Vita
2016-02-08 17:05 ` [PATCH 5/5] asus-wmi: Add quirk_no_rfkill for the Asus Z550MA João Paulo Rechi Vita
2016-02-08 21:03 ` Darren Hart
2016-02-09 21:39 ` João Paulo Rechi Vita
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1454951123-27470-3-git-send-email-jprvita@endlessm.com \
--to=jprvita@gmail.com \
--cc=acpi4asus-user@lists.sourceforge.net \
--cc=corentin.chary@gmail.com \
--cc=dvhart@infradead.org \
--cc=jprvita@endlessm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@endlessm.com \
--cc=platform-driver-x86@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®