aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/input/keyboard/atkbd.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
index 379b7ff354ec..fa6ed339d171 100644
--- a/drivers/input/keyboard/atkbd.c
+++ b/drivers/input/keyboard/atkbd.c
@@ -884,6 +884,23 @@ static void atkbd_inventec_keymap_fixup(struct atkbd *atkbd)
884} 884}
885 885
886/* 886/*
887 * Perform fixup for HP Pavilion ZV6100 laptop that doesn't generate release
888 * for its volume buttons
889 */
890static void atkbd_hp_zv6100_keymap_fixup(struct atkbd *atkbd)
891{
892 const unsigned int forced_release_keys[] = {
893 0xae, 0xb0,
894 };
895 int i;
896
897 if (atkbd->set == 2)
898 for (i = 0; i < ARRAY_SIZE(forced_release_keys); i++)
899 __set_bit(forced_release_keys[i],
900 atkbd->force_release_mask);
901}
902
903/*
887 * atkbd_set_keycode_table() initializes keyboard's keycode table 904 * atkbd_set_keycode_table() initializes keyboard's keycode table
888 * according to the selected scancode set 905 * according to the selected scancode set
889 */ 906 */
@@ -1485,6 +1502,15 @@ static struct dmi_system_id atkbd_dmi_quirk_table[] __initdata = {
1485 .driver_data = atkbd_hp_keymap_fixup, 1502 .driver_data = atkbd_hp_keymap_fixup,
1486 }, 1503 },
1487 { 1504 {
1505 .ident = "HP Pavilion ZV6100",
1506 .matches = {
1507 DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
1508 DMI_MATCH(DMI_PRODUCT_NAME, "Pavilion ZV6100"),
1509 },
1510 .callback = atkbd_setup_fixup,
1511 .driver_data = atkbd_hp_zv6100_keymap_fixup,
1512 },
1513 {
1488 .ident = "Inventec Symphony", 1514 .ident = "Inventec Symphony",
1489 .matches = { 1515 .matches = {
1490 DMI_MATCH(DMI_SYS_VENDOR, "INVENTEC"), 1516 DMI_MATCH(DMI_SYS_VENDOR, "INVENTEC"),