Skip to content

Commit

Permalink
platform/x86: dell-laptop: Fix keyboard max lighting for Dell Latitud…
Browse files Browse the repository at this point in the history
…e E6410

This machine reports number of keyboard backlight led levels, instead of
value of the last led level index. Therefore max_brightness properly needs
to be subtracted by 1 to match led max_brightness API.

Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
Reported-by: Gabriel M. Elder <gabriel@tekgnowsys.com>
Link: https://bugzilla.kernel.org/show_bug.cgi?id=196913
Signed-off-by: Darren Hart (VMware) <dvhart@infradead.org>
  • Loading branch information
Pali Rohár authored and Darren Hart (VMware) committed Dec 12, 2017
1 parent 4fbd8d1 commit 68a213d
Showing 1 changed file with 17 additions and 0 deletions.
17 changes: 17 additions & 0 deletions drivers/platform/x86/dell-laptop.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@

struct quirk_entry {
u8 touchpad_led;
u8 kbd_led_levels_off_1;

int needs_kbd_timeouts;
/*
Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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,
},
{ }
};

Expand Down Expand Up @@ -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))
Expand Down

0 comments on commit 68a213d

Please sign in to comment.