Re: Wifi switch not working, linux on IdeaPad S205

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



於 五,2011-06-17 於 17:03 +0200,Florian Heyer 提到:
> On 17.06.2011 15:09, Joey Lee wrote:
> > Could you pleas share the dmidecode information to me? just need: 
> > 	dmidecode > dmidecode.log
> > 
> 
> No problem, see attachment.
> 
> > I want to generate a acer-wmi patch to test AMW0 method on your machine.
> > 
> > For IdeaPad S205, this case is too special for acer machines, I still
> > thought that will be better support it in ideapad-laptop. But, we can
> > test on acer-wmi first.
> 
> To me it seems logical to solve the problem in ideapad-laptop and not in
> acer-wmi as the laptop is obviously of ideapad type :)
> I will be happily testing patches to solve the issue.
> 

Could you please help to test this patch? This is just a test patch, and
I didn't evaluation AWM0 in update rfkill state polling because I didn't
think evaluate AWM0 per second is a good idea.

Please probe acer-wmi driver then report rfkill state. That's see what
the situation, then we add AWM0 part in next patch.

PS:
Sorry for I didn't compiler and test this patch because I didn't take
acer netbook back to home.


Thank's
Joey Lee


>From 0e0602a099775fafa21b3428d50bcca2be58c3fb Mon Sep 17 00:00:00 2001
From: Lee, Chun-Yi <jlee@xxxxxxxxxx>
Date: Sat, 18 Jun 2011 08:32:03 +0800
Subject: [PATCH] acer-wmi: support Lenovo S205

Just for testing. I didn't evaluate AMW0 in polling.

Signed-off-by: Lee, Chun-Yi <jlee@xxxxxxxxxx>
---
 drivers/platform/x86/acer-wmi.c |   30 ++++++++++++++++++++++++++++--
 1 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c
index 005417b..424b83e 100644
--- a/drivers/platform/x86/acer-wmi.c
+++ b/drivers/platform/x86/acer-wmi.c
@@ -304,6 +304,10 @@ static struct quirk_entry quirk_fujitsu_amilo_li_1718 = {
 	.wireless = 2,
 };
 
+static struct quirk_entry quirk_lenovo_ideapad_s205 = {
+	.wireless = 3,
+};
+
 /* The Aspire One has a dummy ACPI-WMI interface - disable it */
 static struct dmi_system_id __devinitdata acer_blacklist[] = {
 	{
@@ -450,6 +454,15 @@ static struct dmi_system_id acer_quirks[] = {
 		},
 		.driver_data = &quirk_medion_md_98300,
 	},
+	{
+		.callback = dmi_matched,
+		.ident = "Lenovo Ideapad S205",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "10382LG"),
+		},
+		.driver_data = &quirk_lenovo_ideapad_s205,
+	},
 	{}
 };
 
@@ -542,6 +555,12 @@ struct wmi_interface *iface)
 				return AE_ERROR;
 			*value = result & 0x1;
 			return AE_OK;
+		case 3:
+			err = ec_read(0x78, &result);
+			if (err)
+				return AE_ERROR;
+			*value = result & 0x1;
+			return AE_OK;
 		default:
 			err = ec_read(0xA, &result);
 			if (err)
@@ -1266,8 +1285,15 @@ static void acer_rfkill_update(struct work_struct *ignored)
 	acpi_status status;
 
 	status = get_u32(&state, ACER_CAP_WIRELESS);
-	if (ACPI_SUCCESS(status))
-		rfkill_set_sw_state(wireless_rfkill, !state);
+	if (ACPI_SUCCESS(status)) {
+		if (quirks->wireless == 3) {
+			pr_info("acer_rfkill_update state: %d", state);
+			rfkill_set_hw_state(wireless_rfkill, !state);
+			/* TODO: set AWM0? */
+		} else {
+			rfkill_set_sw_state(wireless_rfkill, !state);
+		}
+	}
 
 	if (has_cap(ACER_CAP_BLUETOOTH)) {
 		status = get_u32(&state, ACER_CAP_BLUETOOTH);
-- 
1.6.0.2




--
To unsubscribe from this list: send the line "unsubscribe platform-driver-x86" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux