Loading Documentation/laptops/acer-wmi.txt +2 −2 Original line number Diff line number Diff line Loading @@ -48,7 +48,7 @@ DSDT. To send me the DSDT, as root/sudo: cat /sys/firmware/acpi/DSDT > dsdt cat /sys/firmware/acpi/tables/DSDT > dsdt And send me the resulting 'dsdt' file. Loading Loading @@ -169,7 +169,7 @@ can be added to acer-wmi. The LED is exposed through the LED subsystem, and can be found in: /sys/devices/platform/acer-wmi/leds/acer-mail:green/ /sys/devices/platform/acer-wmi/leds/acer-wmi::mail/ The mail LED is autodetected, so if you don't have one, the LED device won't be registered. Loading drivers/acpi/scan.c +2 −1 Original line number Diff line number Diff line Loading @@ -609,7 +609,8 @@ acpi_bus_get_ejd(acpi_handle handle, acpi_handle *ejd) status = acpi_evaluate_object(handle, "_EJD", NULL, &buffer); if (ACPI_SUCCESS(status)) { obj = buffer.pointer; status = acpi_get_handle(NULL, obj->string.pointer, ejd); status = acpi_get_handle(ACPI_ROOT_OBJECT, obj->string.pointer, ejd); kfree(buffer.pointer); } return status; Loading drivers/acpi/wmi.c +6 −4 Original line number Diff line number Diff line Loading @@ -293,7 +293,7 @@ struct acpi_buffer *out) { struct guid_block *block = NULL; struct wmi_block *wblock = NULL; acpi_handle handle; acpi_handle handle, wc_handle; acpi_status status, wc_status = AE_ERROR; struct acpi_object_list input, wc_input; union acpi_object wc_params[1], wq_params[1]; Loading Loading @@ -338,6 +338,8 @@ struct acpi_buffer *out) * expensive, but have no corresponding WCxx method. So we * should not fail if this happens. */ wc_status = acpi_get_handle(handle, wc_method, &wc_handle); if (ACPI_SUCCESS(wc_status)) wc_status = acpi_evaluate_object(handle, wc_method, &wc_input, NULL); } Loading @@ -351,7 +353,7 @@ struct acpi_buffer *out) * If ACPI_WMI_EXPENSIVE, call the relevant WCxx method, even if * the WQxx method failed - we should disable collection anyway. */ if ((block->flags & ACPI_WMI_EXPENSIVE) && wc_status) { if ((block->flags & ACPI_WMI_EXPENSIVE) && ACPI_SUCCESS(wc_status)) { wc_params[0].integer.value = 0; status = acpi_evaluate_object(handle, wc_method, &wc_input, NULL); Loading drivers/misc/Kconfig +1 −0 Original line number Diff line number Diff line Loading @@ -108,6 +108,7 @@ config ACER_WMI depends on ACPI depends on LEDS_CLASS depends on BACKLIGHT_CLASS_DEVICE depends on SERIO_I8042 select ACPI_WMI ---help--- This is a driver for newer Acer (and Wistron) laptops. It adds Loading drivers/misc/acer-wmi.c +28 −10 Original line number Diff line number Diff line Loading @@ -217,6 +217,15 @@ static struct dmi_system_id acer_quirks[] = { }, .driver_data = &quirk_acer_travelmate_2490, }, { .callback = dmi_matched, .ident = "Acer Aspire 3610", .matches = { DMI_MATCH(DMI_SYS_VENDOR, "Acer"), DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 3610"), }, .driver_data = &quirk_acer_travelmate_2490, }, { .callback = dmi_matched, .ident = "Acer Aspire 5100", Loading @@ -226,6 +235,15 @@ static struct dmi_system_id acer_quirks[] = { }, .driver_data = &quirk_acer_travelmate_2490, }, { .callback = dmi_matched, .ident = "Acer Aspire 5610", .matches = { DMI_MATCH(DMI_SYS_VENDOR, "Acer"), DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5610"), }, .driver_data = &quirk_acer_travelmate_2490, }, { .callback = dmi_matched, .ident = "Acer Aspire 5630", Loading Loading @@ -761,7 +779,7 @@ enum led_brightness value) } static struct led_classdev mail_led = { .name = "acer-mail:green", .name = "acer-wmi::mail", .brightness_set = mail_led_set, }; Loading Loading @@ -1052,11 +1070,12 @@ static int __init acer_wmi_init(void) if (wmi_has_guid(WMID_GUID2) && interface) { if (ACPI_FAILURE(WMID_set_capabilities())) { printk(ACER_ERR "Unable to detect available devices\n"); printk(ACER_ERR "Unable to detect available WMID " "devices\n"); return -ENODEV; } } else if (!wmi_has_guid(WMID_GUID2) && interface) { printk(ACER_ERR "Unable to detect available devices\n"); printk(ACER_ERR "No WMID device detection method found\n"); return -ENODEV; } Loading @@ -1064,21 +1083,20 @@ static int __init acer_wmi_init(void) interface = &AMW0_interface; if (ACPI_FAILURE(AMW0_set_capabilities())) { printk(ACER_ERR "Unable to detect available devices\n"); printk(ACER_ERR "Unable to detect available AMW0 " "devices\n"); return -ENODEV; } } if (wmi_has_guid(AMW0_GUID1)) { if (ACPI_FAILURE(AMW0_find_mailled())) printk(ACER_ERR "Unable to detect mail LED\n"); } if (wmi_has_guid(AMW0_GUID1)) AMW0_find_mailled(); find_quirks(); if (!interface) { printk(ACER_ERR "No or unsupported WMI interface, unable to "); printk(KERN_CONT "load.\n"); printk(ACER_ERR "No or unsupported WMI interface, unable to " "load\n"); return -ENODEV; } Loading Loading
Documentation/laptops/acer-wmi.txt +2 −2 Original line number Diff line number Diff line Loading @@ -48,7 +48,7 @@ DSDT. To send me the DSDT, as root/sudo: cat /sys/firmware/acpi/DSDT > dsdt cat /sys/firmware/acpi/tables/DSDT > dsdt And send me the resulting 'dsdt' file. Loading Loading @@ -169,7 +169,7 @@ can be added to acer-wmi. The LED is exposed through the LED subsystem, and can be found in: /sys/devices/platform/acer-wmi/leds/acer-mail:green/ /sys/devices/platform/acer-wmi/leds/acer-wmi::mail/ The mail LED is autodetected, so if you don't have one, the LED device won't be registered. Loading
drivers/acpi/scan.c +2 −1 Original line number Diff line number Diff line Loading @@ -609,7 +609,8 @@ acpi_bus_get_ejd(acpi_handle handle, acpi_handle *ejd) status = acpi_evaluate_object(handle, "_EJD", NULL, &buffer); if (ACPI_SUCCESS(status)) { obj = buffer.pointer; status = acpi_get_handle(NULL, obj->string.pointer, ejd); status = acpi_get_handle(ACPI_ROOT_OBJECT, obj->string.pointer, ejd); kfree(buffer.pointer); } return status; Loading
drivers/acpi/wmi.c +6 −4 Original line number Diff line number Diff line Loading @@ -293,7 +293,7 @@ struct acpi_buffer *out) { struct guid_block *block = NULL; struct wmi_block *wblock = NULL; acpi_handle handle; acpi_handle handle, wc_handle; acpi_status status, wc_status = AE_ERROR; struct acpi_object_list input, wc_input; union acpi_object wc_params[1], wq_params[1]; Loading Loading @@ -338,6 +338,8 @@ struct acpi_buffer *out) * expensive, but have no corresponding WCxx method. So we * should not fail if this happens. */ wc_status = acpi_get_handle(handle, wc_method, &wc_handle); if (ACPI_SUCCESS(wc_status)) wc_status = acpi_evaluate_object(handle, wc_method, &wc_input, NULL); } Loading @@ -351,7 +353,7 @@ struct acpi_buffer *out) * If ACPI_WMI_EXPENSIVE, call the relevant WCxx method, even if * the WQxx method failed - we should disable collection anyway. */ if ((block->flags & ACPI_WMI_EXPENSIVE) && wc_status) { if ((block->flags & ACPI_WMI_EXPENSIVE) && ACPI_SUCCESS(wc_status)) { wc_params[0].integer.value = 0; status = acpi_evaluate_object(handle, wc_method, &wc_input, NULL); Loading
drivers/misc/Kconfig +1 −0 Original line number Diff line number Diff line Loading @@ -108,6 +108,7 @@ config ACER_WMI depends on ACPI depends on LEDS_CLASS depends on BACKLIGHT_CLASS_DEVICE depends on SERIO_I8042 select ACPI_WMI ---help--- This is a driver for newer Acer (and Wistron) laptops. It adds Loading
drivers/misc/acer-wmi.c +28 −10 Original line number Diff line number Diff line Loading @@ -217,6 +217,15 @@ static struct dmi_system_id acer_quirks[] = { }, .driver_data = &quirk_acer_travelmate_2490, }, { .callback = dmi_matched, .ident = "Acer Aspire 3610", .matches = { DMI_MATCH(DMI_SYS_VENDOR, "Acer"), DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 3610"), }, .driver_data = &quirk_acer_travelmate_2490, }, { .callback = dmi_matched, .ident = "Acer Aspire 5100", Loading @@ -226,6 +235,15 @@ static struct dmi_system_id acer_quirks[] = { }, .driver_data = &quirk_acer_travelmate_2490, }, { .callback = dmi_matched, .ident = "Acer Aspire 5610", .matches = { DMI_MATCH(DMI_SYS_VENDOR, "Acer"), DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5610"), }, .driver_data = &quirk_acer_travelmate_2490, }, { .callback = dmi_matched, .ident = "Acer Aspire 5630", Loading Loading @@ -761,7 +779,7 @@ enum led_brightness value) } static struct led_classdev mail_led = { .name = "acer-mail:green", .name = "acer-wmi::mail", .brightness_set = mail_led_set, }; Loading Loading @@ -1052,11 +1070,12 @@ static int __init acer_wmi_init(void) if (wmi_has_guid(WMID_GUID2) && interface) { if (ACPI_FAILURE(WMID_set_capabilities())) { printk(ACER_ERR "Unable to detect available devices\n"); printk(ACER_ERR "Unable to detect available WMID " "devices\n"); return -ENODEV; } } else if (!wmi_has_guid(WMID_GUID2) && interface) { printk(ACER_ERR "Unable to detect available devices\n"); printk(ACER_ERR "No WMID device detection method found\n"); return -ENODEV; } Loading @@ -1064,21 +1083,20 @@ static int __init acer_wmi_init(void) interface = &AMW0_interface; if (ACPI_FAILURE(AMW0_set_capabilities())) { printk(ACER_ERR "Unable to detect available devices\n"); printk(ACER_ERR "Unable to detect available AMW0 " "devices\n"); return -ENODEV; } } if (wmi_has_guid(AMW0_GUID1)) { if (ACPI_FAILURE(AMW0_find_mailled())) printk(ACER_ERR "Unable to detect mail LED\n"); } if (wmi_has_guid(AMW0_GUID1)) AMW0_find_mailled(); find_quirks(); if (!interface) { printk(ACER_ERR "No or unsupported WMI interface, unable to "); printk(KERN_CONT "load.\n"); printk(ACER_ERR "No or unsupported WMI interface, unable to " "load\n"); return -ENODEV; } Loading