Skip to content

Commit

Permalink
Merge branches 'release', 'ejd', 'sony' and 'wmi' into release
Browse files Browse the repository at this point in the history
  • Loading branch information
Len Brown committed Mar 13, 2008
4 parents c523aef + 3b5fee5 + d399d13 + 07d31ee commit b4de123
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 18 deletions.
4 changes: 2 additions & 2 deletions Documentation/laptops/acer-wmi.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down Expand Up @@ -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.
Expand Down
3 changes: 2 additions & 1 deletion drivers/acpi/scan.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
10 changes: 6 additions & 4 deletions drivers/acpi/wmi.c
Original file line number Diff line number Diff line change
Expand Up @@ -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];
Expand Down Expand Up @@ -338,8 +338,10 @@ struct acpi_buffer *out)
* expensive, but have no corresponding WCxx method. So we
* should not fail if this happens.
*/
wc_status = acpi_evaluate_object(handle, wc_method,
&wc_input, NULL);
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);
}

strcpy(method, "WQ");
Expand All @@ -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);
Expand Down
1 change: 1 addition & 0 deletions drivers/misc/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
38 changes: 28 additions & 10 deletions drivers/misc/acer-wmi.c
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -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",
Expand Down Expand Up @@ -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,
};

Expand Down Expand Up @@ -1052,33 +1070,33 @@ 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;
}

if (wmi_has_guid(AMW0_GUID1) && !wmi_has_guid(WMID_GUID1)) {
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;
}

Expand Down
2 changes: 1 addition & 1 deletion drivers/misc/sony-laptop.c
Original file line number Diff line number Diff line change
Expand Up @@ -315,7 +315,7 @@ static void sony_laptop_report_input_event(u8 event)
break;

default:
if (event > ARRAY_SIZE(sony_laptop_input_index)) {
if (event >= ARRAY_SIZE(sony_laptop_input_index)) {
dprintk("sony_laptop_report_input_event, event not known: %d\n", event);
break;
}
Expand Down

0 comments on commit b4de123

Please sign in to comment.