From 3134de014e97d735d12f1fc4cb0017d5868b1bef Mon Sep 17 00:00:00 2001 From: "Lee, Chun-Yi" Date: Mon, 28 Mar 2011 06:34:13 -0400 Subject: [PATCH] --- yaml --- r: 243135 b: refs/heads/master c: 70a9b9047aebd53ac38837a1046da52a2f8d9636 h: refs/heads/master i: 243133: 4d5df5cc4f8d37176ce084b35b6d6abf7e8b470b 243131: 96fa5e4426d5ac79c91a5f329a0138fa334e1ae5 243127: b0cbc74e7af82b5759f398266d72c3f6d3dcce03 243119: 02bfc0dbb8cd717de3c38c1aeae59bb22de8ae24 243103: df5dfdf1698a86df818afad61a008feeb9992ca9 243071: f66158cbb298407745e32a12d3dfaba967b9d819 v: v3 --- [refs] | 2 +- trunk/drivers/platform/x86/acer-wmi.c | 20 ++++++++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index f3fefa17f4d6..0178a96a7848 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8215af019040ce9182728afee9642d8fdeb17f59 +refs/heads/master: 70a9b9047aebd53ac38837a1046da52a2f8d9636 diff --git a/trunk/drivers/platform/x86/acer-wmi.c b/trunk/drivers/platform/x86/acer-wmi.c index 652a84ec36cf..5ea6c3477d17 100644 --- a/trunk/drivers/platform/x86/acer-wmi.c +++ b/trunk/drivers/platform/x86/acer-wmi.c @@ -1234,14 +1234,17 @@ static int acer_rfkill_init(struct device *dev) rfkill_inited = true; - schedule_delayed_work(&acer_rfkill_work, round_jiffies_relative(HZ)); + if (ec_raw_mode || !wmi_has_guid(ACERWMID_EVENT_GUID)) + schedule_delayed_work(&acer_rfkill_work, + round_jiffies_relative(HZ)); return 0; } static void acer_rfkill_exit(void) { - cancel_delayed_work_sync(&acer_rfkill_work); + if (ec_raw_mode || !wmi_has_guid(ACERWMID_EVENT_GUID)) + cancel_delayed_work_sync(&acer_rfkill_work); rfkill_unregister(wireless_rfkill); rfkill_destroy(wireless_rfkill); @@ -1338,6 +1341,19 @@ static void acer_wmi_notify(u32 value, void *context) switch (return_value.function) { case WMID_HOTKEY_EVENT: + if (return_value.device_state) { + u16 device_state = return_value.device_state; + pr_debug("deivces states: 0x%x\n", device_state); + if (has_cap(ACER_CAP_WIRELESS)) + rfkill_set_sw_state(wireless_rfkill, + !(device_state & ACER_WMID3_GDS_WIRELESS)); + if (has_cap(ACER_CAP_BLUETOOTH)) + rfkill_set_sw_state(bluetooth_rfkill, + !(device_state & ACER_WMID3_GDS_BLUETOOTH)); + if (has_cap(ACER_CAP_THREEG)) + rfkill_set_sw_state(threeg_rfkill, + !(device_state & ACER_WMID3_GDS_THREEG)); + } if (!sparse_keymap_report_event(acer_wmi_input_dev, return_value.key_num, 1, true)) pr_warning("Unknown key number - 0x%x\n",