From 4ffcbfa26ca5b33b6194dfaeb0bc200317aaf9a7 Mon Sep 17 00:00:00 2001 From: Daniel Drake Date: Wed, 18 Apr 2012 18:08:21 +0100 Subject: [PATCH] --- yaml --- r: 310140 b: refs/heads/master c: bc7ab495c7532f06bc03021c0d78ac384fb13c14 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/platform/x86/xo1-rfkill.c | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index e75ee45f7599..68f88c1a0558 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 14b234b10544046544a81095c9ab372842f80eea +refs/heads/master: bc7ab495c7532f06bc03021c0d78ac384fb13c14 diff --git a/trunk/drivers/platform/x86/xo1-rfkill.c b/trunk/drivers/platform/x86/xo1-rfkill.c index 41781ed8301c..b57ad8641480 100644 --- a/trunk/drivers/platform/x86/xo1-rfkill.c +++ b/trunk/drivers/platform/x86/xo1-rfkill.c @@ -15,15 +15,26 @@ #include +static bool card_blocked; + static int rfkill_set_block(void *data, bool blocked) { unsigned char cmd; + int r; + + if (blocked == card_blocked) + return 0; + if (blocked) cmd = EC_WLAN_ENTER_RESET; else cmd = EC_WLAN_LEAVE_RESET; - return olpc_ec_cmd(cmd, NULL, 0, NULL, 0); + r = olpc_ec_cmd(cmd, NULL, 0, NULL, 0); + if (r == 0) + card_blocked = blocked; + + return r; } static const struct rfkill_ops rfkill_ops = {