| From 4b200b4604bec3388426159f1656109d19fadf6e Mon Sep 17 00:00:00 2001 |
| From: Arnd Bergmann <arnd@arndb.de> |
| Date: Sat, 13 Jun 2015 15:23:33 +0200 |
| Subject: ideapad: fix software rfkill setting |
| |
| From: Arnd Bergmann <arnd@arndb.de> |
| |
| commit 4b200b4604bec3388426159f1656109d19fadf6e upstream. |
| |
| This fixes a several year old regression that I found while trying |
| to get the Yoga 3 11 to work. The ideapad_rfk_set function is meant |
| to send a command to the embedded controller through ACPI, but |
| as of c1f73658ed, it sends the index of the rfkill device instead |
| of the command, and ignores the opcode field. |
| |
| This changes it back to the original behavior, which indeed |
| flips the rfkill state as seen in the debugfs interface. |
| |
| Signed-off-by: Arnd Bergmann <arnd@arndb.de> |
| Fixes: c1f73658ed ("ideapad: pass ideapad_priv as argument (part 2)") |
| Signed-off-by: Darren Hart <dvhart@linux.intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/platform/x86/ideapad-laptop.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/platform/x86/ideapad-laptop.c |
| +++ b/drivers/platform/x86/ideapad-laptop.c |
| @@ -464,8 +464,9 @@ static const struct ideapad_rfk_data ide |
| static int ideapad_rfk_set(void *data, bool blocked) |
| { |
| struct ideapad_rfk_priv *priv = data; |
| + int opcode = ideapad_rfk_data[priv->dev].opcode; |
| |
| - return write_ec_cmd(priv->priv->adev->handle, priv->dev, !blocked); |
| + return write_ec_cmd(priv->priv->adev->handle, opcode, !blocked); |
| } |
| |
| static struct rfkill_ops ideapad_rfk_ops = { |