Skip to contentSkip to conversation

Sony laptop: Sony Vaio laptops do not enable wwan power by default.

PATCH New Tim Gardner 1 participant 1 message Apr 22, 2009

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 Sony laptop: Sony Vaio laptops do not enable wwan power by default.

Mattia,

Ok, it would help if I sent a patch against the right kernel (2.6.30-rc3).

rtg
--------------------

Quoted 1 line

From f24d04392307d990fcc9a46721c8494effee58c9 Mon Sep 17 00:00:00 2001

From: Tim Gardner <[email protected]>
Date: Tue, 21 Apr 2009 11:09:10 -0600
Subject: [PATCH v2] UBUNTU: Sony laptop: Sony Vaio laptops do not enable wwan power by default.

Added quirk to enable wwan power based on DMI information already present in the module. It appears that Vaio's do not enable power to wwan from a cold boot.

---
 drivers/platform/x86/sony-laptop.c |   24 +++++++++++++++++++++++-
 1 files changed, 23 insertions(+), 1 deletions(-)
drivers/platform/x86/sony-laptop.c +23 -1
index d3c92d7..74ab174 100644
@@ -1440,10 +1440,13 @@ struct device_ctrl {
 	u16				evport_offset;
 	u8				has_camera;
 	u8				has_bluetooth;
-	u8				has_wwan;
 	struct sonypi_eventtypes	*event_types;
 };
 
+struct sony_pic_quirk_entry {
+	u8				set_wwan_power;
+};
+
 struct sony_pic_dev {
 	struct device_ctrl	*control;
 	struct acpi_device	*acpi_dev;
@@ -1452,6 +1455,7 @@ struct sony_pic_dev {
 	struct list_head	interrupts;
 	struct list_head	ioports;
 	struct mutex		lock;
+	struct sony_pic_quirk_entry *quirks;
 	u8			camera_power;
 	u8			bluetooth_power;
 	u8			wwan_power;
@@ -2885,6 +2889,12 @@ static int sony_pic_add(struct acpi_device *device)
 	if (result)
 		goto err_remove_pf;
 
+	if (spic_dev.quirks && spic_dev.quirks->set_wwan_power) {
+		/*
+		 * Power isn't enabled by default.
+		 */
+		__sony_pic_set_wwanpower(1);
+	}
 	return 0;
 
 err_remove_pf:
@@ -2955,6 +2965,16 @@ static struct acpi_driver sony_pic_driver = {
 		},
 };
 
+static struct sony_pic_quirk_entry sony_pic_vaio_vgn = {
+	.set_wwan_power = 1,
+};
+
+static int dmi_matched(const struct dmi_system_id *dmi)
+{
+	spic_dev.quirks = dmi->driver_data;
+	return 0;
+}
+
 static struct dmi_system_id __initdata sonypi_dmi_table[] = {
 	{
 		.ident = "Sony Vaio",
@@ -2969,6 +2989,8 @@ static struct dmi_system_id __initdata sonypi_dmi_table[] = {
 			DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
 			DMI_MATCH(DMI_PRODUCT_NAME, "VGN-"),
 		},
+		.callback = dmi_matched,
+		.driver_data = &sony_pic_vaio_vgn,
 	},
 	{ }
 };
Signature · 1 line
1.5.6.3