Commit 9443d7c9 authored by Len Brown's avatar Len Brown

Pull asus into test branch

parents aeb11048 6df05702
...@@ -138,6 +138,7 @@ struct asus_hotk { ...@@ -138,6 +138,7 @@ struct asus_hotk {
S2x, //S200 (J1 reported), Victor MP-XP7210 S2x, //S200 (J1 reported), Victor MP-XP7210
W1N, //W1000N W1N, //W1000N
W5A, //W5A W5A, //W5A
W3V, //W3030V
xxN, //M2400N, M3700N, M5200N, M6800N, S1300N, S5200N xxN, //M2400N, M3700N, M5200N, M6800N, S1300N, S5200N
//(Centrino) //(Centrino)
END_MODEL END_MODEL
...@@ -376,6 +377,17 @@ static struct model_data model_conf[END_MODEL] = { ...@@ -376,6 +377,17 @@ static struct model_data model_conf[END_MODEL] = {
.display_get = "\\ADVG"}, .display_get = "\\ADVG"},
{ {
.name = "W3V",
.mt_mled = "MLED",
.mt_wled = "WLED",
.mt_lcd_switch = xxN_PREFIX "_Q10",
.lcd_status = "\\BKLT",
.brightness_set = "SPLV",
.brightness_get = "GPLV",
.display_set = "SDSP",
.display_get = "\\INFB"},
{
.name = "xxN", .name = "xxN",
.mt_mled = "MLED", .mt_mled = "MLED",
/* WLED present, but not controlled by ACPI */ /* WLED present, but not controlled by ACPI */
...@@ -555,11 +567,11 @@ static int ...@@ -555,11 +567,11 @@ static int
write_led(const char __user * buffer, unsigned long count, write_led(const char __user * buffer, unsigned long count,
char *ledname, int ledmask, int invert) char *ledname, int ledmask, int invert)
{ {
int value; int rv, value;
int led_out = 0; int led_out = 0;
count = parse_arg(buffer, count, &value); rv = parse_arg(buffer, count, &value);
if (count > 0) if (rv > 0)
led_out = value ? 1 : 0; led_out = value ? 1 : 0;
hotk->status = hotk->status =
...@@ -572,7 +584,7 @@ write_led(const char __user * buffer, unsigned long count, ...@@ -572,7 +584,7 @@ write_led(const char __user * buffer, unsigned long count,
printk(KERN_WARNING "Asus ACPI: LED (%s) write failed\n", printk(KERN_WARNING "Asus ACPI: LED (%s) write failed\n",
ledname); ledname);
return count; return rv;
} }
/* /*
...@@ -607,20 +619,18 @@ static int ...@@ -607,20 +619,18 @@ static int
proc_write_ledd(struct file *file, const char __user * buffer, proc_write_ledd(struct file *file, const char __user * buffer,
unsigned long count, void *data) unsigned long count, void *data)
{ {
int value; int rv, value;
count = parse_arg(buffer, count, &value); rv = parse_arg(buffer, count, &value);
if (count > 0) { if (rv > 0) {
if (!write_acpi_int if (!write_acpi_int
(hotk->handle, hotk->methods->mt_ledd, value, NULL)) (hotk->handle, hotk->methods->mt_ledd, value, NULL))
printk(KERN_WARNING printk(KERN_WARNING
"Asus ACPI: LED display write failed\n"); "Asus ACPI: LED display write failed\n");
else else
hotk->ledd_status = (u32) value; hotk->ledd_status = (u32) value;
} else if (count < 0) }
printk(KERN_WARNING "Asus ACPI: Error reading user input\n"); return rv;
return count;
} }
/* /*
...@@ -761,12 +771,12 @@ static int ...@@ -761,12 +771,12 @@ static int
proc_write_lcd(struct file *file, const char __user * buffer, proc_write_lcd(struct file *file, const char __user * buffer,
unsigned long count, void *data) unsigned long count, void *data)
{ {
int value; int rv, value;
count = parse_arg(buffer, count, &value); rv = parse_arg(buffer, count, &value);
if (count > 0) if (rv > 0)
set_lcd_state(value); set_lcd_state(value);
return count; return rv;
} }
static int read_brightness(void) static int read_brightness(void)
...@@ -830,18 +840,15 @@ static int ...@@ -830,18 +840,15 @@ static int
proc_write_brn(struct file *file, const char __user * buffer, proc_write_brn(struct file *file, const char __user * buffer,
unsigned long count, void *data) unsigned long count, void *data)
{ {
int value; int rv, value;
count = parse_arg(buffer, count, &value); rv = parse_arg(buffer, count, &value);
if (count > 0) { if (rv > 0) {
value = (0 < value) ? ((15 < value) ? 15 : value) : 0; value = (0 < value) ? ((15 < value) ? 15 : value) : 0;
/* 0 <= value <= 15 */ /* 0 <= value <= 15 */
set_brightness(value); set_brightness(value);
} else if (count < 0) {
printk(KERN_WARNING "Asus ACPI: Error reading user input\n");
} }
return rv;
return count;
} }
static void set_display(int value) static void set_display(int value)
...@@ -880,15 +887,12 @@ static int ...@@ -880,15 +887,12 @@ static int
proc_write_disp(struct file *file, const char __user * buffer, proc_write_disp(struct file *file, const char __user * buffer,
unsigned long count, void *data) unsigned long count, void *data)
{ {
int value; int rv, value;
count = parse_arg(buffer, count, &value); rv = parse_arg(buffer, count, &value);
if (count > 0) if (rv > 0)
set_display(value); set_display(value);
else if (count < 0) return rv;
printk(KERN_WARNING "Asus ACPI: Error reading user input\n");
return count;
} }
typedef int (proc_readfunc) (char *page, char **start, off_t off, int count, typedef int (proc_readfunc) (char *page, char **start, off_t off, int count,
...@@ -1097,6 +1101,8 @@ static int asus_model_match(char *model) ...@@ -1097,6 +1101,8 @@ static int asus_model_match(char *model)
return A4G; return A4G;
else if (strncmp(model, "W1N", 3) == 0) else if (strncmp(model, "W1N", 3) == 0)
return W1N; return W1N;
else if (strncmp(model, "W3V", 3) == 0)
return W3V;
else if (strncmp(model, "W5A", 3) == 0) else if (strncmp(model, "W5A", 3) == 0)
return W5A; return W5A;
else else
...@@ -1200,9 +1206,10 @@ static int asus_hotk_get_info(void) ...@@ -1200,9 +1206,10 @@ static int asus_hotk_get_info(void)
hotk->methods->mt_wled = NULL; hotk->methods->mt_wled = NULL;
/* L5D's WLED is not controlled by ACPI */ /* L5D's WLED is not controlled by ACPI */
else if (strncmp(string, "M2N", 3) == 0 || else if (strncmp(string, "M2N", 3) == 0 ||
strncmp(string, "W3V", 3) == 0 ||
strncmp(string, "S1N", 3) == 0) strncmp(string, "S1N", 3) == 0)
hotk->methods->mt_wled = "WLED"; hotk->methods->mt_wled = "WLED";
/* M2N and S1N have a usable WLED */ /* M2N, S1N and W3V have a usable WLED */
else if (asus_info) { else if (asus_info) {
if (strncmp(asus_info->oem_table_id, "L1", 2) == 0) if (strncmp(asus_info->oem_table_id, "L1", 2) == 0)
hotk->methods->mled_status = NULL; hotk->methods->mled_status = NULL;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment