From: Ben Collins User with this equipment stated that writes to this file worked correctly, but that reads were showing inverted state (1 for off, 0 for on). Following the same style for reads, introduced an invert flag to read_led, and used it for wled. See http://bugzilla.ubuntu.com/show_bug.cgi?id=10770 Signed-off-by: Ben Collins Signed-off-by: Andrew Morton --- drivers/acpi/asus_acpi.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff -puN drivers/acpi/asus_acpi.c~asus_acpi-invert-read-of-wled-proc-file-to-show-correct drivers/acpi/asus_acpi.c --- a/drivers/acpi/asus_acpi.c~asus_acpi-invert-read-of-wled-proc-file-to-show-correct +++ a/drivers/acpi/asus_acpi.c @@ -536,13 +536,13 @@ proc_read_info(char *page, char **start, */ /* Generic LED functions */ -static int read_led(const char *ledname, int ledmask) +static int read_led(const char *ledname, int ledmask, int invert) { if (ledname) { int led_status; if (read_acpi_int(NULL, ledname, &led_status)) - return led_status; + return (invert) ? !led_status : led_status; else printk(KERN_WARNING "Asus ACPI: Error reading LED " "status\n"); @@ -598,7 +598,7 @@ proc_read_mled(char *page, char **start, void *data) { return sprintf(page, "%d\n", - read_led(hotk->methods->mled_status, MLED_ON)); + read_led(hotk->methods->mled_status, MLED_ON, 0)); } static int @@ -644,7 +644,7 @@ proc_read_wled(char *page, char **start, void *data) { return sprintf(page, "%d\n", - read_led(hotk->methods->wled_status, WLED_ON)); + read_led(hotk->methods->wled_status, WLED_ON, 1)); } static int @@ -661,7 +661,8 @@ static int proc_read_bluetooth(char *page, char **start, off_t off, int count, int *eof, void *data) { - return sprintf(page, "%d\n", read_led(hotk->methods->bt_status, BT_ON)); + return sprintf(page, "%d\n", + read_led(hotk->methods->bt_status, BT_ON, 0)); } static int @@ -681,7 +682,7 @@ proc_read_tled(char *page, char **start, void *data) { return sprintf(page, "%d\n", - read_led(hotk->methods->tled_status, TLED_ON)); + read_led(hotk->methods->tled_status, TLED_ON, 0)); } static int _