Asus ACPI 0.26 released
Subsystems (2)
PATCH RESEND 1/1 Asus ACPI 0.26 released
Hi,
Len, this is roughly the 4th mail about the Asus ACPI Extras driver I sent in the last month and a half. Will I finally receive *any* response? The patches are attached and also here:
http://hell.org.pl/~sziwan/asus/
Len, could you consider merging them and pushing to Linus and Marcelo as soon as it's possible? Those patches contain a couple of important fixes, as well as bugzilla bug #1138, add support for laptops that quite a lot people use right now (ASUS Centrino models), and are really, *really* long due (esp. the 0.25 one).
TIA, best regards,
Signature · 8 lines
Karol 'sziwan' Kozimor sziwan-DETuoxkZsSqrDJvtcaxF/[email protected] ------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf
A message that is not in the archive (sent off-list or not yet received): 20030930202435.GA4242-DETuoxkZsSqrDJvtcaxF/[email protected]
Thus wrote Karol Kozimor:
[sigh]
Signature · 2 lines
Karol 'sziwan' Kozimor sziwan-DETuoxkZsSqrDJvtcaxF/[email protected]
drivers/acpi/asus_acpi.c +65 -39
@@ -26,13 +26,21 @@* Johann Wiesner - Small compile fixes * John Belmonte - ACPI code for Toshiba laptop was a good starting point. * -* TODO +* TODO: * add Fn key status -* Add mode selection on module loading (parameter) -> still necessary ? +* Add mode selection on module loading (parameter) -> still necessary? * Complete display switching -- may require dirty hacks? +* Complete support for Centrino laptops +* Reading certain fields (e.g. \SG66 in A2500H) consistently fails, while +* reading others (\BAOF, the same machine) succeeds. Why? * */ +#include <linux/config.h> +#if defined (CONFIG_MODVERSIONS ) && !defined (MODVERSIONS ) && defined (MODULE ) +#include <linux/modversions.h> +#endif +#include <linux/kernel.h> #include <linux/module.h> #include <linux/init.h>
@@ -41,7 +49,7 @@#include <acpi/acpi_drivers.h> #include <acpi/acpi_bus.h> -#define ASUS_ACPI_VERSION "0.24a" +#define ASUS_ACPI_VERSION "0.25"#define PROC_ASUS "asus" //the directory#define PROC_MLED "mled"
@@ -111,20 +119,22 @@struct model_data *methods;//methods available on the laptop u8 brightness;//brighness level enum { -L2X =0 ,//L200D -> TODO check Q11 (Fn+F8) -// Calling this method simply hang the +A1X =0 ,//A1340D, A1300F +A2X ,//A2500H +D1X ,//D1 +L1X ,//L1400B +L2X ,//L200D -> TODO check Q11 (Fn+F8) +// Calling this method simply hangs the // computer, ISMI method hangs the laptop. -L3X ,//L3C L3D ,//L3400D +L3X ,//L3C M2X ,//M2400E +M3N ,//M3700N, but also S1300N -> TODO WLED S1X ,//S1300A -> TODO special keys do not work ? -D1X ,//D1 -L1X ,//L1400B -A1X ,//A1340D, A1300F -J1X ,//S200 (J1) +S2X ,//S200 (J1 reported), Victor MP-XP7210 //TODO A1370D does not seems to have a ATK device // L8400 model doesn't have ATK -END_MODEL , +END_MODEL } model;//Models currently supported u16 event_count[128 ];//count for each event TODO make this better };
@@ -134,7 +144,8 @@#define S1X_PREFIX "\\_SB.PCI0.PX40."#define L1X_PREFIX S1X_PREFIX#define A1X_PREFIX "\\_SB.PCI0.ISA.EC0." -#define J1X_PREFIX A1X_PREFIX +#define S2X_PREFIX A1X_PREFIX +#define M3N_PREFIX "\\_SB.PCI0.SBRG.EC0."static struct model_data model_conf[END_MODEL ] = {/*
@@ -148,33 +159,40 @@* it seems to be a kind of switch, but what for ? * */ + {"A1X" ,"MLED" ,"\\MAIL" ,NULL ,NULL ,A1X_PREFIX "_Q10" ,"\\BKLI" , + A1X_PREFIX "_Q0E", A1X_PREFIX "_Q0F", NULL, NULL, NULL, NULL, NULL}, + + {"A2X", "MLED", NULL, "WLED", "\\SG66", "\\Q10", "\\BAOF", + "\\Q0E", "\\Q0F", "SPLV", "GPLV", "\\CMOD", "SDSP", "\\INFB"}, + + {"D1X", "MLED", NULL, NULL, NULL, "\\Q0D", "\\GP11", + "\\Q0C", "\\Q0B", NULL, NULL, "\\BLVL", "SDSP","\\INFB"}, + + {"L1X", "MLED", NULL, "WLED", NULL, L1X_PREFIX "Q10", "\\PNOF", + L1X_PREFIX "Q0F", L1X_PREFIX "Q0E", "SPLV", "GPLV", "\\BRIT", NULL, NULL}, + {"L2X", "MLED", "\\SGP6", "WLED", "\\RCP3", "\\Q10", "\\SGP0", "\\Q0E", "\\Q0F", NULL, NULL, NULL, "SDSP", "\\INFB"}, + {"L3D", "MLED", "\\MALD", "WLED", NULL, "\\Q10", "\\BKLG", + "\\Q0E", "\\Q0F", "SPLV", "GPLV", "\\BLVL", "SDSP", "\\INFB"}, + {"L3X", "MLED", NULL, "WLED", NULL, L3X_PREFIX "_Q10", "\\GL32",L3X_PREFIX "_Q0F" ,L3X_PREFIX "_Q0E" ,"SPLV" ,"GPLV" ,"\\BLVL" ,"SDSP" , "\\_SB.PCI0.PCI1.VGAC.NMAP"}, - {"L3D", "MLED", "\\MALD", "WLED", NULL, "\\Q10", "\\BKLG", - "\\Q0E", "\\Q0F", "SPLV", "GPLV", "\\BLVL", "SDSP", "\\INFB"}, - {"M2X", "MLED", NULL, "WLED", NULL, "\\Q10", "\\GP06", "\\Q0E","\\Q0F", "SPLV", "GPLV", NULL, "SDSP", "\\INFB"}, + + {"M3N", "MLED", NULL, "WLED", "\\PO33", M3N_PREFIX "_Q10", "\\BKLT", +M3N_PREFIX "_Q0F" ,M3N_PREFIX "_Q0E" ,"SPLV" ,"GPLV" ,"\\LBTN" ,"SDSP" , + "\\ADVG"}, {"S1X", "MLED", "\\EMLE", "WLED", NULL, S1X_PREFIX "Q10", "\\PNOF", S1X_PREFIX "Q0F", S1X_PREFIX "Q0E", "SPLV", "GPLV", "\\BRIT", NULL, NULL}, - {"D1X", "MLED", NULL, NULL, NULL, "\\Q0D", "\\GP11", - "\\Q0C", "\\Q0B", NULL, NULL, "\\BLVL", "SDSP","\\INFB"}, - - {"L1X", "MLED", NULL, "WLED", NULL, L1X_PREFIX "Q10", "\\PNOF", - L1X_PREFIX "Q0F", L1X_PREFIX "Q0E", "SPLV", "GPLV", "\\BRIT", NULL, NULL}, - - {"A1X", "MLED", "\\MAIL", NULL, NULL, A1X_PREFIX "_Q10", "\\BKLI", - A1X_PREFIX "_Q0E", A1X_PREFIX "_Q0F", NULL, NULL, NULL, NULL, NULL}, - - {"J1X", "MLED", "\\MAIL", NULL, NULL, J1X_PREFIX "_Q10", "\\BKLI", - J1X_PREFIX "_Q0B", J1X_PREFIX "_Q0A", NULL, NULL, NULL, NULL, NULL} + {"S2X", "MLED", "\\MAIL", NULL, NULL, S2X_PREFIX "_Q10", "\\BKLI", + S2X_PREFIX "_Q0B", S2X_PREFIX "_Q0A", NULL, NULL, NULL, NULL, NULL} };/* procdir we use */
@@ -235,7 +253,7 @@ output.length =sizeof (out_obj); output.pointer = &out_obj; - status =acpi_evaluate_object (handle, (char *) method,NULL , &output); + status =acpi_evaluate_object (handle, (char *) method,NULL , &output); *val = out_obj.integer.value;return (status ==AE_OK ) && (out_obj.type ==ACPI_TYPE_INTEGER ); }
@@ -453,7 +471,7 @@ {acpi_status status =0 ; -/* ATKD laptop */ +/* SPLV laptop */ if (hotk->methods->brightness_set) {if (!write_acpi_int (hotk->handle, hotk->methods->brightness_set, value,NULL ))
@@ -461,7 +479,7 @@return ; } -/* HOTK laptop if we are here, act as appropriate */ +/* No SPLV method if we are here, act as appropriate */ value -= hotk->brightness;while (value !=0 ) { status = acpi_evaluate_object(NULL, (value > 0) ?
@@ -479,7 +497,7 @@ {int value; -if (hotk->methods->brightness_get) {/* ATKD laptop */ +if (hotk->methods->brightness_get) {/* SPLV/GPLV laptop */ if (!read_acpi_int (hotk->handle, hotk->methods->brightness_get, &value))printk (KERN_NOTICE "Asus ACPI: Error reading brightness\n" );
@@ -487,7 +505,7 @@if (!read_acpi_int (NULL , hotk->methods->brightness_status, &value))printk (KERN_NOTICE "Asus ACPI: Error reading brightness\n" ); - }else /* HOTK laptop */ + }else /* No GPLV method */ value = hotk->brightness;return value; }
@@ -546,7 +564,7 @@ }/* -* Preliminary support for display switching. As of now: 0x01 should activate +* Experimental support for display switching. As of now: 0x01 should activate * the LCD output, 0x02 should do for CRT, and 0x04 for TV-Out. Any combination * (bitwise) of these will suffice. I never actually tested 3 displays hooked up * simultaneously, so be warned.
@@ -690,7 +708,7 @@static void asus_hotk_notify (acpi_handle handle,u32 event,void *data) {/* TODO Find a better way to handle events count. Here, in data, we receive -* the hotk, so we can make anything !! +* the hotk, so we can do anything! */ struct asus_hotk *hotk = (struct asus_hotk *) data;
@@ -750,6 +768,9 @@ hotk->model =L3X ; else if (strncmp(model->string.pointer, "M2", 2) == 0) hotk->model = M2X; + else if (strncmp(model->string.pointer, "M3N", 3) == 0 || + strncmp(model->string.pointer, "S1N", 3) == 0) + hotk->model =M3N ;/* S1300N is similar enough */ else if (strncmp(model->string.pointer, "L2", 2) == 0) hotk->model = L2X; else if (strncmp(model->string.pointer, "L8", 2) == 0)
@@ -762,8 +783,10 @@ hotk->model =D1X ; else if (strncmp(model->string.pointer, "A1", 2) == 0) hotk->model = A1X; + else if (strncmp(model->string.pointer, "A2", 2) == 0) + hotk->model = A2X; else if (strncmp(model->string.pointer, "J1", 2) == 0) - hotk->model = J1X; + hotk->model = S2X;if (hotk->model ==END_MODEL ) {
@@ -851,17 +874,20 @@ " Notify Handler installed successfully\n"); } -/* For HOTK laptops: init the hotk->brightness value */ +/* For laptops without GPLV: init the hotk->brightness value */ if ((!hotk->methods->brightness_get) && (!hotk->methods->brightness_status) && (hotk->methods->brightness_up && hotk->methods->brightness_down)) { status =acpi_evaluate_object (NULL , hotk->methods->brightness_down,NULL ,NULL );if (ACPI_FAILURE (status))printk (KERN_NOTICE " Error changing brightness\n" ); - status =acpi_evaluate_object (NULL , hotk->methods->brightness_up, -NULL ,NULL ); -if (ACPI_FAILURE (status)) -printk (KERN_NOTICE " Error changing brightness\n" ); +else { + status =acpi_evaluate_object (NULL , hotk->methods->brightness_up, +NULL ,NULL ); +if (ACPI_FAILURE (status)) +printk (KERN_NOTICE " Strange, error changing" +" brightness\n" ); + } } end:
Documentation/Configure.help +3 -0
@@ -18853,6 +18853,9 @@ display brightness and output, switching the LCD backlight on and off, and most importantly, allows you to blink those fancy LEDs intended for reporting mail and wireless status. + + Note: the display switching code is currently considered EXPERIMENTAL, + toying with these values may even lock your machine. All settings are changed via /proc/acpi/asus directory entries. Owner and group for these entries can be set with asus_uid and asus_gid
MAINTAINERS +10 -0
@@ -257,6 +257,16 @@ L: [email protected] S: Maintained +ASUS ACPI EXTRAS DRIVER +P: Karol Kozimor +M: [email protected] +P: Julien Lerouge +M: [email protected] +L: [email protected] +W: http://sourceforge.net/projects/acpi4asus +W: http://julien.lerouge.free.fr +S: Maintained + ATM P: Chas Williams M: [email protected]
drivers/acpi/asus_acpi.c +65 -39
225 lines not on this page · raw message
drivers/acpi/Kconfig +3 -0
@@ -170,6 +170,9 @@ display brightness and output, switching the LCD backlight on and off, and most importantly, allows you to blink those fancy LEDs intended for reporting mail and wireless status. + + Note: display switching code is currently considered EXPERIMENTAL, + toying with these values may even lock your machine. All settings are changed via /proc/acpi/asus directory entries. Owner and group for these entries can be set with asus_uid and asus_gid
MAINTAINERS +10 -0
@@ -284,6 +284,16 @@ L: [email protected] S: Maintained +ASUS ACPI EXTRAS DRIVER +P: Karol Kozimor +M: [email protected] +P: Julien Lerouge +M: [email protected] +L: [email protected] +W: http://sourceforge.net/projects/acpi4asus +W: http://julien.lerouge.free.fr +S: Maintained + ATM P: Chas Williams M: [email protected]
drivers/acpi/asus_acpi.c +96 -91
472 lines not on this page · raw message
Quoted 7 lines
Len, could you consider merging them and pushing to Linus and Marcelo as soon as it's possible? Those patches contain a couple of important fixes, as well as bugzilla bug #1138, add support for laptops that quite a lot people use right now (ASUS Centrino models), and are really, *really* long due (esp. the 0.25 one).
TIA, best regards,
This fix has been integrated with others in the ACPI patch, and is available for test now in these bitkeeper trees:
http://linux-acpi.bkbits.net/linux-acpi-test-2.4.22
http://linux-acpi.bkbits.net/linux-acpi-test-2.4.23
http://linux-acpi.bkbits.net/linux-acpi-test-2.6.0
It is also available as a plain patch "*asus*-.patch" here:
ftp://ftp.kernel.org/pub/linux/kernel/people/lenb/acpi/patches/test/
thanks,
-Len
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf