HID: fix generic desktop D-Pad controls
[ Upstream commit 80818fdc068eaab729bb793d790ae9fd053f7053 ]
The addition of the "System Do Not Disturb" event code caused the Generic
Desktop D-Pad configuration to be skipped. This commit allows both to be
configured without conflicting with each other.
Fixes: 22d6d060ac ("input: Add support for "Do Not Disturb"")
Signed-off-by: Terry Tritton <terry.tritton@linaro.org>
Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
Reviewed-by: Carlos Llamas <cmllamas@google.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
e5bcae4212
commit
a3bdd14936
@@ -810,10 +810,23 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
|
||||
break;
|
||||
}
|
||||
|
||||
if ((usage->hid & 0xf0) == 0x90) { /* SystemControl*/
|
||||
switch (usage->hid & 0xf) {
|
||||
case 0xb: map_key_clear(KEY_DO_NOT_DISTURB); break;
|
||||
default: goto ignore;
|
||||
if ((usage->hid & 0xf0) == 0x90) { /* SystemControl & D-pad */
|
||||
switch (usage->hid) {
|
||||
case HID_GD_UP: usage->hat_dir = 1; break;
|
||||
case HID_GD_DOWN: usage->hat_dir = 5; break;
|
||||
case HID_GD_RIGHT: usage->hat_dir = 3; break;
|
||||
case HID_GD_LEFT: usage->hat_dir = 7; break;
|
||||
case HID_GD_DO_NOT_DISTURB:
|
||||
map_key_clear(KEY_DO_NOT_DISTURB); break;
|
||||
default: goto unknown;
|
||||
}
|
||||
|
||||
if (usage->hid <= HID_GD_LEFT) {
|
||||
if (field->dpad) {
|
||||
map_abs(field->dpad);
|
||||
goto ignore;
|
||||
}
|
||||
map_abs(ABS_HAT0X);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -844,22 +857,6 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
|
||||
if (field->application == HID_GD_SYSTEM_CONTROL)
|
||||
goto ignore;
|
||||
|
||||
if ((usage->hid & 0xf0) == 0x90) { /* D-pad */
|
||||
switch (usage->hid) {
|
||||
case HID_GD_UP: usage->hat_dir = 1; break;
|
||||
case HID_GD_DOWN: usage->hat_dir = 5; break;
|
||||
case HID_GD_RIGHT: usage->hat_dir = 3; break;
|
||||
case HID_GD_LEFT: usage->hat_dir = 7; break;
|
||||
default: goto unknown;
|
||||
}
|
||||
if (field->dpad) {
|
||||
map_abs(field->dpad);
|
||||
goto ignore;
|
||||
}
|
||||
map_abs(ABS_HAT0X);
|
||||
break;
|
||||
}
|
||||
|
||||
switch (usage->hid) {
|
||||
/* These usage IDs map directly to the usage codes. */
|
||||
case HID_GD_X: case HID_GD_Y: case HID_GD_Z:
|
||||
|
||||
@@ -218,6 +218,7 @@ struct hid_item {
|
||||
#define HID_GD_DOWN 0x00010091
|
||||
#define HID_GD_RIGHT 0x00010092
|
||||
#define HID_GD_LEFT 0x00010093
|
||||
#define HID_GD_DO_NOT_DISTURB 0x0001009b
|
||||
/* Microsoft Win8 Wireless Radio Controls CA usage codes */
|
||||
#define HID_GD_RFKILL_BTN 0x000100c6
|
||||
#define HID_GD_RFKILL_LED 0x000100c7
|
||||
|
||||
Reference in New Issue
Block a user