aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/platform
diff options
context:
space:
mode:
authorFrans Pop <elendil@planet.nl>2010-03-01 09:50:46 -0500
committerMatthew Garrett <mjg@redhat.com>2010-03-01 09:50:46 -0500
commitb466301b842f3a54e219b5cc587f22233ecb1345 (patch)
tree757842744b05def32ca3d5dfd45950ffa8a6d438 /drivers/platform
parent92e00e47b61f558009ff81be42b412a76fd89d84 (diff)
toshiba-acpi: fix multimedia keys on some machines
Some Toshibas only send ACPI events on key down, not key release. Ignore any release events and send key down and key up events on every ACPI key down event. Signed-off-by: Frans Pop <elendil@planet.nl>
Diffstat (limited to 'drivers/platform')
-rw-r--r--drivers/platform/x86/toshiba_acpi.c30
1 files changed, 16 insertions, 14 deletions
diff --git a/drivers/platform/x86/toshiba_acpi.c b/drivers/platform/x86/toshiba_acpi.c
index 26c211724acf..405b969734d6 100644
--- a/drivers/platform/x86/toshiba_acpi.c
+++ b/drivers/platform/x86/toshiba_acpi.c
@@ -814,21 +814,23 @@ static void toshiba_acpi_notify(acpi_handle handle, u32 event, void *context)
814 if (hci_result == HCI_SUCCESS) { 814 if (hci_result == HCI_SUCCESS) {
815 if (value == 0x100) 815 if (value == 0x100)
816 continue; 816 continue;
817 else if (value & 0x80) { 817 /* act on key press; ignore key release */
818 key = toshiba_acpi_get_entry_by_scancode 818 if (value & 0x80)
819 (value & ~0x80); 819 continue;
820 if (!key) { 820
821 printk(MY_INFO "Unknown key %x\n", 821 key = toshiba_acpi_get_entry_by_scancode
822 value & ~0x80); 822 (value);
823 continue; 823 if (!key) {
824 } 824 printk(MY_INFO "Unknown key %x\n",
825 input_report_key(toshiba_acpi.hotkey_dev, 825 value);
826 key->keycode, 1); 826 continue;
827 input_sync(toshiba_acpi.hotkey_dev);
828 input_report_key(toshiba_acpi.hotkey_dev,
829 key->keycode, 0);
830 input_sync(toshiba_acpi.hotkey_dev);
831 } 827 }
828 input_report_key(toshiba_acpi.hotkey_dev,
829 key->keycode, 1);
830 input_sync(toshiba_acpi.hotkey_dev);
831 input_report_key(toshiba_acpi.hotkey_dev,
832 key->keycode, 0);
833 input_sync(toshiba_acpi.hotkey_dev);
832 } else if (hci_result == HCI_NOT_SUPPORTED) { 834 } else if (hci_result == HCI_NOT_SUPPORTED) {
833 /* This is a workaround for an unresolved issue on 835 /* This is a workaround for an unresolved issue on
834 * some machines where system events sporadically 836 * some machines where system events sporadically