Skip to contentSkip to conversation

ACPI: asus_acpi, support F2JE model

PATCH In review Jiri Slaby 3 participants 8 messages Apr 11, 2007 ACPI

lore
Share & tools
lore

Jiri Slaby

author
#0 lore raw

PATCH 1/1 ACPI: asus_acpi, support F2JE model

asus_acpi, support F2JE model

also augment the driver to support switching LCD status even if no function for getting lcd status doesn't exist in DSDT.

---
commit 4e55effd524fffae1113c301d63d4cd5280264ab
tree 96d1c15a7ee82558bcbf1bb4b6e66c435781758d
parent 0156510dee9d326af2ec52cf8b1a388ce9a839e9
author Jiri Slaby <[email protected]> Wed, 11 Apr 2007 11:28:34 +0200 committer Jiri Slaby <[email protected]> Wed, 11 Apr 2007 11:28:34 +0200

 drivers/acpi/asus_acpi.c |   33 +++++++++++++++++++++++++++++----
 1 files changed, 29 insertions(+), 4 deletions(-)
drivers/acpi/asus_acpi.c +29 -4
index 0a9ea00..e9c1630 100644
@@ -123,6 +123,7 @@ struct asus_hotk {
 		A2x,		//A2500H
 		A4G,		//A4700G
 		D1x,		//D1
+		F2x,		//F2JE
 		L2D,		//L2000D
 		L3C,		//L3800C
 		L3D,		//L3400D
@@ -150,6 +151,7 @@ struct asus_hotk {
 
 /* Here we go */
 #define A1x_PREFIX "\\_SB.PCI0.ISA.EC0."
+#define F2x_PREFIX "\\_SB.PCI0.SBRG.EC0."
 #define L3C_PREFIX "\\_SB.PCI0.PX40.ECD0."
 #define M1A_PREFIX "\\_SB.PCI0.PX40.EC0."
 #define P30_PREFIX "\\_SB.PCI0.LPCB.EC0."
@@ -206,6 +208,17 @@ static struct model_data model_conf[END_MODEL] = {
 	 .display_get = "\\INFB"},
 
 	{
+	 .name = "F2x",
+	 .mt_wled = "WLED",
+	 .mt_bt_switch = "BLED",
+	 .mt_lcd_switch = F2x_PREFIX "_Q10",
+	 .lcd_status = "",
+	 .brightness_set = "SPLV",
+	 .brightness_get = "GPLV",
+	 .display_set = "SDSP",
+	 .display_get = "\\ADVG"},
+
+	{
 	 .name = "L2D",
 	 .mt_mled = "MLED",
 	 .mled_status = "\\SGP6",
@@ -706,6 +719,8 @@ static int get_lcd_state(void)
 {
 	int lcd = 0;
 
+	BUG_ON(!*hotk->methods->lcd_status);
+
 	if (hotk->model != L3H) {
 		/* We don't have to check anything if we are here */
 		if (!read_acpi_int(NULL, hotk->methods->lcd_status, &lcd))
@@ -748,11 +763,17 @@ static int get_lcd_state(void)
 
 static int set_lcd_state(int value)
 {
-	int lcd = 0;
 	acpi_status status = 0;
 
-	lcd = value ? 1 : 0;
-	if (lcd != get_lcd_state()) {
+	if (!value && !*hotk->methods->lcd_status) {
+		printk(KERN_ERR "You must pass nonzero value to switch LCD "
+				"status for this model\n");
+		return -EINVAL;
+	}
+
+	/* pay attention to lazy evaluation, we don't want to reach
+	   get_lcd_state if lcd_status is empty string */
+	if (!*hotk->methods->lcd_status || !!value != get_lcd_state()) {
 		/* switch */
 		if (hotk->model != L3H) {
 			status =
@@ -778,7 +799,9 @@ static int
 proc_read_lcd(char *page, char **start, off_t off, int count, int *eof,
 	      void *data)
 {
-	return sprintf(page, "%d\n", get_lcd_state());
+	return *hotk->methods->lcd_status ?
+		sprintf(page, "%d\n", get_lcd_state()) :
+		sprintf(page, "n/a (but 1 may be written to switch LCD)\n");
 }
 
 static int
@@ -1091,6 +1114,8 @@ static int asus_model_match(char *model)
 		return L8L;
 	else if (strncmp(model, "L4R", 3) == 0)
 		return L4R;
+	else if (strncmp(model, "F2JE", 4) == 0)
+		return F2x;
 	else if (strncmp(model, "M6N", 3) == 0 || strncmp(model, "W3N", 3) == 0)
 		return M6N;
 	else if (strncmp(model, "M6R", 3) == 0 || strncmp(model, "A3G", 3) == 0)
#1 lore raw

Le Wednesday 11 April 2007 11:33:48 Jiri Slaby, vous avez écrit :

Quoted 1 line

asus_acpi, support F2JE model

Just use the new asus-laptop driver =)
(see acpi4asus-0.40)

Signature · 6 lines
CHARY 'Iksaif' Corentin
http://xf.iksaif.net
-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
author
#2 lore raw

Corentin CHARY napsal(a):

Quoted 4 lines

Le Wednesday 11 April 2007 11:33:48 Jiri Slaby, vous avez écrit :

Quoted 1 line

asus_acpi, support F2JE model

Just use the new asus-laptop driver =)
(see acpi4asus-0.40)

code seems good, but this is not so good:
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20)
#warning "This module does not support 2.6.20 yet, wait for a new release =)" #endif

When do you plan to support latest kernels and merge it to mainline?

thanks,

Signature · 4 lines
http://www.fi.muni.cz/~xslaby/            Jiri Slaby
faculty of informatics, masaryk university, brno, cz
e-mail: jirislaby gmail com, gpg pubkey fingerprint:
 B674 9967 0407 CE62 ACC8  22A0 32CC 55C3 39D4 7A7E
#3 lore raw
Quoted 6 lines · Jiri Slaby

Corentin CHARY napsal(a):

Quoted 4 lines

Le Wednesday 11 April 2007 11:33:48 Jiri Slaby, vous avez écrit :

Quoted 1 line

asus_acpi, support F2JE model

Just use the new asus-laptop driver =)
(see acpi4asus-0.40)

Quoted 6 lines

code seems good, but this is not so good:
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20)
#warning "This module does not support 2.6.20 yet, wait for a new release #=)" endif

When do you plan to support latest kernels and merge it to mainline?

This patch fixes acpi4asus-0.40 for me at least with 2.6.20 on a ASUS R1F.

Danny

---
 asus-laptop.c |   13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)
driver/asus-laptop.c +6 -7
@@ -41,8 +41,8 @@
 # include <linux/autoconf.h>
 #endif
 
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20)
-#warning "This module does not support 2.6.20 yet, wait for a new release =)"
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
+#warning "This module does not support 2.6.21 yet, wait for a new release =)"
 #endif
 
 #include <linux/kernel.h>
@@ -226,8 +226,8 @@
 	static void object##_led_set(struct led_classdev *led_cdev,	\
 				     enum led_brightness value);	\
 	static int object##_led_wk;					\
-	static void object##_led_update(void *data);			\
-        DECLARE_WORK(object##_led_work, object##_led_update, NULL);	\
+	static void object##_led_update(struct work_struct *dummy);	\
+        DECLARE_WORK(object##_led_work, object##_led_update);		\
 	static struct led_classdev object##_led = {			\
 		.name           = "asus:" ledname,			\
 		.brightness_set = object##_led_set,			\
@@ -329,7 +329,7 @@
 		object##_led_wk = value;				\
 		queue_work(led_workqueue, &object##_led_work);		\
 	}								\
-	static void object##_led_update(void * data)			\
+	static void object##_led_update(struct work_struct *dummy)	\
 	{								\
 		int value = object##_led_wk;				\
 		write_status(object##_set_handle, value, (mask));	\
@@ -1053,8 +1053,7 @@
 	struct backlight_device *bd;
 
 	if(brightness_set_handle && lcd_switch_handle) {
-		bd = backlight_device_register (ASUS_HOTK_FILE, NULL,
-						&asusbl_data);
+		bd = backlight_device_register (ASUS_HOTK_FILE, NULL, NULL, &asusbl_data);
 
 		if (IS_ERR (bd)) {
 			printk(ASUS_ERR

-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

#4 lore raw
Quoted 7 lines · Danny Kukawka
Quoted 6 lines · Jiri Slaby

Corentin CHARY napsal(a):

Quoted 4 lines

Le Wednesday 11 April 2007 11:33:48 Jiri Slaby, vous avez écrit :

Quoted 1 line

asus_acpi, support F2JE model

Just use the new asus-laptop driver =)
(see acpi4asus-0.40)

Quoted 8 lines
Quoted 6 lines

code seems good, but this is not so good:
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20)
#warning "This module does not support 2.6.20 yet, wait for a new release #=)" endif

When do you plan to support latest kernels and merge it to mainline?

This patch fixes acpi4asus-0.40 for me at least with 2.6.20 on a ASUS R1F.

Btw. looks as if a new version of the driver (v0.41) is already in the mm-tree.

Danny
-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

author
#5 lore raw

Danny Kukawka napsal(a):

Quoted 12 lines · Danny Kukawka
Quoted 11 lines
Quoted 10 lines · Jiri Slaby

Corentin CHARY napsal(a):

Quoted 4 lines

Le Wednesday 11 April 2007 11:33:48 Jiri Slaby, vous avez écrit :

Quoted 1 line

asus_acpi, support F2JE model

Just use the new asus-laptop driver =)
(see acpi4asus-0.40)

code seems good, but this is not so good:
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20)
#warning "This module does not support 2.6.20 yet, wait for a new release #=)" endif

Quoted 4 lines
Quoted 2 lines
Quoted 1 line

When do you plan to support latest kernels and merge it to mainline?

This patch fixes acpi4asus-0.40 for me at least with 2.6.20 on a ASUS R1F.

Btw. looks as if a new version of the driver (v0.41) is already in the mm-tree.

Good to hear, I've got a look only to .21-rc6-mm1, where are no changes like this (there is 0.30).

I'm satisfied, thanks,

Signature · 8 lines
http://www.fi.muni.cz/~xslaby/            Jiri Slaby
faculty of informatics, masaryk university, brno, cz
e-mail: jirislaby gmail com, gpg pubkey fingerprint:
 B674 9967 0407 CE62 ACC8  22A0 32CC 55C3 39D4 7A7E
-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
#6 lore raw
Quoted 5 lines · Jiri Slaby

Danny Kukawka napsal(a):

Quoted 1 line

Btw. looks as if a new version of the driver (v0.41) is already in the mm-tree.

Good to hear, I've got a look only to .21-rc6-mm1, where are no changes like this (there is 0.30).

found in the latest mm snapshot under drivers/misc/

Danny

author
#7 lore raw
In reply to Jiri Slaby

Jiri Slaby napsal(a):

Quoted 1 line

asus_acpi, support F2JE model

Ignore this one, newer version has been sent.

regards,

Signature · 4 lines
http://www.fi.muni.cz/~xslaby/            Jiri Slaby
faculty of informatics, masaryk university, brno, cz
e-mail: jirislaby gmail com, gpg pubkey fingerprint:
 B674 9967 0407 CE62 ACC8  22A0 32CC 55C3 39D4 7A7E