From 20db88e32d139e7646c61b23b027a7471f343fae Mon Sep 17 00:00:00 2001
From: Corentin Chary <corentincj@iksaif.net>
Date: Thu, 15 Dec 2011 08:27:39 +0100
Subject: [PATCH] samsung-laptop: fix seclinux rfkill and us it as fallback

Signed-off-by: Corentin Chary <corentincj@iksaif.net>
Signed-off-by: Matthew Garrett <mjg@redhat.com>
---
 drivers/platform/x86/samsung-laptop.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/platform/x86/samsung-laptop.c b/drivers/platform/x86/samsung-laptop.c
index 5047642d1662..7d7109fdbd63 100644
--- a/drivers/platform/x86/samsung-laptop.c
+++ b/drivers/platform/x86/samsung-laptop.c
@@ -541,7 +541,8 @@ static const struct backlight_ops backlight_ops = {
 
 static int seclinux_rfkill_set(void *data, bool blocked)
 {
-	struct samsung_laptop *samsung = data;
+	struct samsung_rfkill *srfkill = data;
+	struct samsung_laptop *samsung = srfkill->samsung;
 	const struct sabi_commands *commands = &samsung->config->commands;
 
 	return sabi_set_commandb(samsung, commands->set_wireless_button,
@@ -889,8 +890,13 @@ static int __init samsung_rfkill_init_swsmi(struct samsung_laptop *samsung)
 	int ret;
 
 	ret = swsmi_wireless_status(samsung, &data);
-	if (ret)
+	if (ret) {
+		/* Some swsmi laptops use the old seclinux way to control
+		 * wireless devices */
+		if (ret == -EINVAL)
+			ret = samsung_rfkill_init_seclinux(samsung);
 		return ret;
+	}
 
 	/* 0x02 seems to mean that the device is no present/available */
 
-- 
GitLab