aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/platform/x86/dell-laptop.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/platform/x86/dell-laptop.c b/drivers/platform/x86/dell-laptop.c
index bf897b1832b1..cd4725e7e0b5 100644
--- a/drivers/platform/x86/dell-laptop.c
+++ b/drivers/platform/x86/dell-laptop.c
@@ -37,6 +37,7 @@
37 37
38struct quirk_entry { 38struct quirk_entry {
39 u8 touchpad_led; 39 u8 touchpad_led;
40 u8 kbd_led_levels_off_1;
40 41
41 int needs_kbd_timeouts; 42 int needs_kbd_timeouts;
42 /* 43 /*
@@ -67,6 +68,10 @@ static struct quirk_entry quirk_dell_xps13_9333 = {
67 .kbd_timeouts = { 0, 5, 15, 60, 5 * 60, 15 * 60, -1 }, 68 .kbd_timeouts = { 0, 5, 15, 60, 5 * 60, 15 * 60, -1 },
68}; 69};
69 70
71static struct quirk_entry quirk_dell_latitude_e6410 = {
72 .kbd_led_levels_off_1 = 1,
73};
74
70static struct platform_driver platform_driver = { 75static struct platform_driver platform_driver = {
71 .driver = { 76 .driver = {
72 .name = "dell-laptop", 77 .name = "dell-laptop",
@@ -269,6 +274,15 @@ static const struct dmi_system_id dell_quirks[] __initconst = {
269 }, 274 },
270 .driver_data = &quirk_dell_xps13_9333, 275 .driver_data = &quirk_dell_xps13_9333,
271 }, 276 },
277 {
278 .callback = dmi_matched,
279 .ident = "Dell Latitude E6410",
280 .matches = {
281 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
282 DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6410"),
283 },
284 .driver_data = &quirk_dell_latitude_e6410,
285 },
272 { } 286 { }
273}; 287};
274 288
@@ -1149,6 +1163,9 @@ static int kbd_get_info(struct kbd_info *info)
1149 units = (buffer->output[2] >> 8) & 0xFF; 1163 units = (buffer->output[2] >> 8) & 0xFF;
1150 info->levels = (buffer->output[2] >> 16) & 0xFF; 1164 info->levels = (buffer->output[2] >> 16) & 0xFF;
1151 1165
1166 if (quirks && quirks->kbd_led_levels_off_1 && info->levels)
1167 info->levels--;
1168
1152 if (units & BIT(0)) 1169 if (units & BIT(0))
1153 info->seconds = (buffer->output[3] >> 0) & 0xFF; 1170 info->seconds = (buffer->output[3] >> 0) & 0xFF;
1154 if (units & BIT(1)) 1171 if (units & BIT(1))