2009-07-16 20:08:51

by Tim Gardner

[permalink] [raw]
Subject: [PATCH] atkbd - Fix Soltech TA12 volume hotkeys not sending key release

>From 8b172a3c3f976f85ddea136ac0cffe32295cfd61 Mon Sep 17 00:00:00 2001
From: Tim Gardner <[email protected]>
Date: Thu, 16 Jul 2009 13:06:12 -0600
Subject: [PATCH] atkbd - Fix Soltech TA12 volume hotkeys not sending key release

BugLink: https://bugs.launchpad.net//bugs/397499

Impact: Netbooks based on the Soltech TA12 do not send a key release
for volume keys causing Linux to think the key is constantly being
pressed forever.

Added quirk data for forced release keys.

OriginalAuthor: Jerone Young <[email protected]>

Signed-off-by: Jerone Young <[email protected]>
Signed-off-by: Tim Gardner <[email protected]>
---
drivers/input/keyboard/atkbd.c | 16 ++++++++++++++++
1 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
index 777d01a..f5c40d7 100644
--- a/drivers/input/keyboard/atkbd.c
+++ b/drivers/input/keyboard/atkbd.c
@@ -909,6 +909,13 @@ static unsigned int atkbd_amilo_xi_2428_forced_release_keys[] = {
};

/*
+ * Soltech TA12 system with broken key release on volume keys and mute key
+ */
+static unsigned int atkdb_soltech_ta12_forced_release_keys[] = {
+ 0xa0, 0xae, 0xb0, -1U
+};
+
+/*
* atkbd_set_keycode_table() initializes keyboard's keycode table
* according to the selected scancode set
*/
@@ -1611,6 +1618,15 @@ static struct dmi_system_id atkbd_dmi_quirk_table[] __initdata = {
.callback = atkbd_setup_forced_release,
.driver_data = atkbd_amilo_xi_2428_forced_release_keys,
},
+ {
+ .ident = "Soltech Corporation TA12",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Soltech Corporation"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "TA12"),
+ },
+ .callback = atkbd_setup_forced_release,
+ .driver_data = atkdb_soltech_ta12_forced_release_keys,
+ },
{ }
};

--
1.6.2.4