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

Commit d39a01ef authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'platform-drivers-x86-v4.15-3' of git://git.infradead.org/linux-platform-drivers-x86

Pull x86 platform driver fixes from Darren Hart:

 - Correct an error in the evdev protocol in asus-wireless which results
   in dropped key events in recent versions of libinput

 - Add a quirk for keyboard lighting for a specific Dell laptop

 - Silence a static analysis warning regarding unchecked return values
   of small kmalloc() allocations in dell-wmi

* tag 'platform-drivers-x86-v4.15-3' of git://git.infradead.org/linux-platform-drivers-x86:
  platform/x86: dell-wmi: check for kmalloc() errors
  platform/x86: asus-wireless: send an EV_SYN/SYN_REPORT between state changes
  platform/x86: dell-laptop: Fix keyboard max lighting for Dell Latitude E6410
parents a638349b 532298b9
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -118,6 +118,7 @@ static void asus_wireless_notify(struct acpi_device *adev, u32 event)
		return;
	}
	input_report_key(data->idev, KEY_RFKILL, 1);
	input_sync(data->idev);
	input_report_key(data->idev, KEY_RFKILL, 0);
	input_sync(data->idev);
}
+17 −0
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@

struct quirk_entry {
	u8 touchpad_led;
	u8 kbd_led_levels_off_1;

	int needs_kbd_timeouts;
	/*
@@ -67,6 +68,10 @@ static struct quirk_entry quirk_dell_xps13_9333 = {
	.kbd_timeouts = { 0, 5, 15, 60, 5 * 60, 15 * 60, -1 },
};

static struct quirk_entry quirk_dell_latitude_e6410 = {
	.kbd_led_levels_off_1 = 1,
};

static struct platform_driver platform_driver = {
	.driver = {
		.name = "dell-laptop",
@@ -269,6 +274,15 @@ static const struct dmi_system_id dell_quirks[] __initconst = {
		},
		.driver_data = &quirk_dell_xps13_9333,
	},
	{
		.callback = dmi_matched,
		.ident = "Dell Latitude E6410",
		.matches = {
			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
			DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6410"),
		},
		.driver_data = &quirk_dell_latitude_e6410,
	},
	{ }
};

@@ -1149,6 +1163,9 @@ static int kbd_get_info(struct kbd_info *info)
	units = (buffer->output[2] >> 8) & 0xFF;
	info->levels = (buffer->output[2] >> 16) & 0xFF;

	if (quirks && quirks->kbd_led_levels_off_1 && info->levels)
		info->levels--;

	if (units & BIT(0))
		info->seconds = (buffer->output[3] >> 0) & 0xFF;
	if (units & BIT(1))
+2 −0
Original line number Diff line number Diff line
@@ -639,6 +639,8 @@ static int dell_wmi_events_set_enabled(bool enable)
	int ret;

	buffer = kzalloc(sizeof(struct calling_interface_buffer), GFP_KERNEL);
	if (!buffer)
		return -ENOMEM;
	buffer->cmd_class = CLASS_INFO;
	buffer->cmd_select = SELECT_APP_REGISTRATION;
	buffer->input[0] = 0x10000;