Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b4de123a authored by Len Brown's avatar Len Brown
Browse files

Merge branches 'release', 'ejd', 'sony' and 'wmi' into release

Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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.

@@ -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.
+2 −1
Original line number Diff line number Diff line
@@ -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;
+6 −4
Original line number Diff line number Diff line
@@ -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];
@@ -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);
	}
@@ -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);
+1 −0
Original line number Diff line number Diff line
@@ -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
+28 −10
Original line number Diff line number Diff line
@@ -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",
@@ -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",
@@ -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,
};

@@ -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;
	}

@@ -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