Merge branch 'for-5.17/core' into for-linus
- support for USI style pens (Tero Kristo, Mika Westerberg) - quirk for devices that need inverted X/Y axes (Alistair Francis) - small core code cleanups and deduplication (Benjamin Tissoires)
This commit is contained in:
@@ -52,6 +52,7 @@ static const struct {
|
||||
#define map_rel(c) hid_map_usage(hidinput, usage, &bit, &max, EV_REL, (c))
|
||||
#define map_key(c) hid_map_usage(hidinput, usage, &bit, &max, EV_KEY, (c))
|
||||
#define map_led(c) hid_map_usage(hidinput, usage, &bit, &max, EV_LED, (c))
|
||||
#define map_msc(c) hid_map_usage(hidinput, usage, &bit, &max, EV_MSC, (c))
|
||||
|
||||
#define map_abs_clear(c) hid_map_usage_clear(hidinput, usage, &bit, \
|
||||
&max, EV_ABS, (c))
|
||||
@@ -876,10 +877,7 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
|
||||
|
||||
case 0x5b: /* TransducerSerialNumber */
|
||||
case 0x6e: /* TransducerSerialNumber2 */
|
||||
usage->type = EV_MSC;
|
||||
usage->code = MSC_SERIAL;
|
||||
bit = input->mscbit;
|
||||
max = MSC_MAX;
|
||||
map_msc(MSC_SERIAL);
|
||||
break;
|
||||
|
||||
default: goto unknown;
|
||||
@@ -1333,6 +1331,12 @@ void hidinput_hid_event(struct hid_device *hid, struct hid_field *field, struct
|
||||
|
||||
input = field->hidinput->input;
|
||||
|
||||
if (usage->type == EV_ABS &&
|
||||
(((*quirks & HID_QUIRK_X_INVERT) && usage->code == ABS_X) ||
|
||||
((*quirks & HID_QUIRK_Y_INVERT) && usage->code == ABS_Y))) {
|
||||
value = field->logical_maximum - value;
|
||||
}
|
||||
|
||||
if (usage->hat_min < usage->hat_max || usage->hat_dir) {
|
||||
int hat_dir = usage->hat_dir;
|
||||
if (!hat_dir)
|
||||
@@ -1465,7 +1469,8 @@ void hidinput_report_event(struct hid_device *hid, struct hid_report *report)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(hidinput_report_event);
|
||||
|
||||
int hidinput_find_field(struct hid_device *hid, unsigned int type, unsigned int code, struct hid_field **field)
|
||||
static int hidinput_find_field(struct hid_device *hid, unsigned int type,
|
||||
unsigned int code, struct hid_field **field)
|
||||
{
|
||||
struct hid_report *report;
|
||||
int i, j;
|
||||
@@ -1480,7 +1485,6 @@ int hidinput_find_field(struct hid_device *hid, unsigned int type, unsigned int
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(hidinput_find_field);
|
||||
|
||||
struct hid_field *hidinput_get_led_field(struct hid_device *hid)
|
||||
{
|
||||
@@ -1743,6 +1747,16 @@ static struct hid_input *hidinput_allocate(struct hid_device *hid,
|
||||
case HID_GD_MOUSE:
|
||||
suffix = "Mouse";
|
||||
break;
|
||||
case HID_DG_PEN:
|
||||
/*
|
||||
* yes, there is an issue here:
|
||||
* DG_PEN -> "Stylus"
|
||||
* DG_STYLUS -> "Pen"
|
||||
* But changing this now means users with config snippets
|
||||
* will have to change it and the test suite will not be happy.
|
||||
*/
|
||||
suffix = "Stylus";
|
||||
break;
|
||||
case HID_DG_STYLUS:
|
||||
suffix = "Pen";
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user