NAK This is mostly a duplicate, and thus a conflict, with what is in asus_acpi 0.31, which contains all of these except for A6VA AFAICT. In any case, the proper way to update the asus_acpi driver is through its (new) maintainer and mailing list on acpi4asus-user@xxxxxxxxxxxxxxxxxxxxx which will forward the patches through the acpi tree when testsed. thanks, -Len On Tuesday 19 December 2006 15:56, akpm@xxxxxxxx wrote: > From: "Panagiotis Papadakos" <papadako@xxxxxxxxx> > > This patch is based on > http://www.mail-archive.com/linux-acpi@xxxxxxxxxxxxxxx/msg02277.html > and adds support for ASUS A6VA, M6V, W5F and V6V laptops in asus-acpi. > Also some trailing spaces cleanups. > > Cc: Timo Hoenig <thoenig@xxxxxxx> > Signed-off-by: Andrew Morton <akpm@xxxxxxxx> > --- > > drivers/acpi/asus_acpi.c | 93 ++++++++++++++++++++++++++++++++----- > 1 files changed, 82 insertions(+), 11 deletions(-) > > diff -puN drivers/acpi/asus_acpi.c~add-support-for-asus-a6va-m6v-w5f-v6v-laptops-in-asus-acpi drivers/acpi/asus_acpi.c > --- a/drivers/acpi/asus_acpi.c~add-support-for-asus-a6va-m6v-w5f-v6v-laptops-in-asus-acpi > +++ a/drivers/acpi/asus_acpi.c > @@ -122,6 +122,7 @@ struct asus_hotk { > A1x = 0, //A1340D, A1300F > A2x, //A2500H > A4G, //A4700G > + A6VA, //A6VA > D1x, //D1 > L2D, //L2000D > L3C, //L3800C > @@ -134,12 +135,15 @@ struct asus_hotk { > M2E, //M2400E, L4400L > M6N, //M6800N, W3400N > M6R, //M6700R, A3000G > + M6V, //M6A, M6V-B022P, M6V-8012P > P30, //Samsung P30 > S1x, //S1300A, but also L1400B and M2400A (L84F) > S2x, //S200 (J1 reported), Victor MP-XP7210 > W1N, //W1000N > - W5A, //W5A > W3V, //W3030V > + W5A, //W5A > + W5F, //W5F > + V6V, //V6V > xxN, //M2400N, M3700N, M5200N, M6800N, S1300N, S5200N > //(Centrino) > END_MODEL > @@ -194,6 +198,17 @@ static struct model_data model_conf[END_ > .display_get = "\\ADVG"}, > > { > + .name = "A6VA", > + .mt_mled = "MLED", > + .mt_wled = "WLED", > + .mt_lcd_switch = "\\Q11", > + .lcd_status = "\\RGPL", > + .brightness_set = "SPLV", > + .brightness_get = "GPLV", > + .display_set = "SDSP", > + .display_get = "\\ADVG"}, > + > + { > .name = "D1x", > .mt_mled = "MLED", > .mt_lcd_switch = "\\Q0D", > @@ -326,6 +341,20 @@ static struct model_data model_conf[END_ > .display_get = "\\_SB.PCI0.P0P1.VGA.GETD"}, > > { > + .name = "M6V", > + .mt_bt_switch = "BLED", > + .mt_wled = "WLED", > + .mt_mled = NULL, > + .mt_lcd_switch = xxN_PREFIX "_Q10", > + .bt_status = "\\_SB.PCI0.SBRG.BLTS", > + .lcd_status = "\\RGPL", > + .wled_status = "\\WLSF", > + .display_get = "\\_SB.PCI0.P0P3.VGA.GETD", > + .display_set = "SDSP", > + .brightness_set = "SPLV", > + .brightness_get = "GPLV"}, > + > + { > .name = "P30", > .mt_wled = "WLED", > .mt_lcd_switch = P30_PREFIX "_Q0E", > @@ -368,6 +397,17 @@ static struct model_data model_conf[END_ > .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 = "W5A", > .mt_bt_switch = "BLED", > .mt_wled = "WLED", > @@ -378,17 +418,30 @@ static struct model_data model_conf[END_ > .display_get = "\\ADVG"}, > > { > - .name = "W3V", > - .mt_mled = "MLED", > + .name = "W5F", > + .mt_bt_switch = "BLED", > .mt_wled = "WLED", > + .mt_tled = "TLED", > .mt_lcd_switch = xxN_PREFIX "_Q10", > - .lcd_status = "\\BKLT", > .brightness_set = "SPLV", > .brightness_get = "GPLV", > .display_set = "SDSP", > - .display_get = "\\INFB"}, > + .display_get = "\\ADVG"}, > + > + { > + .name = "V6V", > + .mt_bt_switch = "BLED", > + .mt_wled = "WLED", > + .mt_tled = "TLED", > + .mt_lcd_switch = xxN_PREFIX "_Q10", > + .bt_status = "\\_SB.PCI0.SBRG.BLTS", > + .display_get = "\\_SB.PCI0.POP1.VGA.GETD", > + .display_set = "SDSP", > + .brightness_set = "SPLV", > + .brightness_get = "GPLV", > + .lcd_status = "\\BKLT"}, > > - { > + { > .name = "xxN", > .mt_mled = "MLED", > /* WLED present, but not controlled by ACPI */ > @@ -695,7 +748,7 @@ static int get_lcd_state(void) > { > int lcd = 0; > > - if (hotk->model != L3H) { > + if (hotk->model != A6VA && hotk->model != M6V && hotk->model != L3H) { > /* We don't have to check anything if we are here */ > if (!read_acpi_int(NULL, hotk->methods->lcd_status, &lcd)) > printk(KERN_WARNING > @@ -715,9 +768,15 @@ static int get_lcd_state(void) > /* Note: the following values are partly guessed up, but > otherwise they seem to work */ > mt_params[0].type = ACPI_TYPE_INTEGER; > - mt_params[0].integer.value = 0x02; > mt_params[1].type = ACPI_TYPE_INTEGER; > - mt_params[1].integer.value = 0x02; > + > + if (hotk->model == A6VA || hotk->model == M6V) { > + mt_params[0].integer.value = 0x15; > + mt_params[1].integer.value = 0x01; > + } else if (hotk->model == L3H) { > + mt_params[0].integer.value = 0x02; > + mt_params[1].integer.value = 0x02; > + } > > output.length = sizeof(out_obj); > output.pointer = &out_obj; > @@ -727,9 +786,13 @@ static int get_lcd_state(void) > &input, &output); > if (status != AE_OK) > return -1; > - if (out_obj.type == ACPI_TYPE_INTEGER) > + if (out_obj.type == ACPI_TYPE_INTEGER) { > /* That's what the AML code does */ > - lcd = out_obj.integer.value >> 8; > + if (hotk->model == A6VA || hotk->model == M6V) > + lcd = out_obj.integer.value; > + else if (hotk->model == L3H) > + lcd = out_obj.integer.value >> 8; > + } > } > > return (lcd & 1); > @@ -1095,6 +1158,8 @@ static int asus_model_match(char *model) > return M1A; > else if (strncmp(model, "M2", 2) == 0 || strncmp(model, "L4E", 3) == 0) > return M2E; > + else if (strncmp(model, "M6A", 3) == 0 || strncmp(model, "M6V", 3) == 0) > + return M6V; > else if (strncmp(model, "L2", 2) == 0) > return L2D; > else if (strncmp(model, "L8", 2) == 0) > @@ -1105,6 +1170,8 @@ static int asus_model_match(char *model) > return A1x; > else if (strncmp(model, "A2", 2) == 0) > return A2x; > + else if (strncmp(model, "A6VA", 4) == 0) > + return A6VA; > else if (strncmp(model, "J1", 2) == 0) > return S2x; > else if (strncmp(model, "L5", 2) == 0) > @@ -1117,6 +1184,10 @@ static int asus_model_match(char *model) > return W3V; > else if (strncmp(model, "W5A", 3) == 0) > return W5A; > + else if (strncmp(model, "W5F", 3) == 0) > + return W5F; > + else if (strncmp(model, "V6V", 3) == 0) > + return V6V; > else > return END_MODEL; > } > _ > - > To unsubscribe from this list: send the line "unsubscribe linux-acpi" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > - To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html