From 20db88e32d139e7646c61b23b027a7471f343fae Mon Sep 17 00:00:00 2001 From: Corentin Chary Date: Thu, 15 Dec 2011 08:27:39 +0100 Subject: samsung-laptop: fix seclinux rfkill and us it as fallback Signed-off-by: Corentin Chary Signed-off-by: Matthew Garrett --- drivers/platform/x86/samsung-laptop.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'drivers/platform') 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 */ -- cgit v1.2.3