mirror of
https://github.com/lkl/linux.git
synced 2025-12-19 16:13:19 +09:00
HID: compute an ordered list of input fields to process
This will be used in a later commit: we build a list of input fields (and usage_index) that is ordered based on a usage priority. Changing the usage priority allows to re-order the processed list, meaning that we can enforce some usages to be process before others. For instance, before processing InRange in the HID tablets, we need to know if we are using the eraser (side or button). Enforcing a higher (lower number) priority for Invert allows to force the input stack to process that field before. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> Reviewed-by: Ping Cheng <ping.cheng@wacom.com> Acked-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
This commit is contained in:
committed by
Jiri Kosina
parent
187ccd6caa
commit
22f4b026c3
@@ -477,6 +477,7 @@ struct hid_field {
|
||||
unsigned report_type; /* (input,output,feature) */
|
||||
__s32 *value; /* last known value(s) */
|
||||
__s32 *new_value; /* newly read value(s) */
|
||||
__s32 *usages_priorities; /* priority of each usage when reading the report */
|
||||
__s32 logical_minimum;
|
||||
__s32 logical_maximum;
|
||||
__s32 physical_minimum;
|
||||
@@ -493,13 +494,22 @@ struct hid_field {
|
||||
|
||||
#define HID_MAX_FIELDS 256
|
||||
|
||||
struct hid_field_entry {
|
||||
struct list_head list;
|
||||
struct hid_field *field;
|
||||
unsigned int index;
|
||||
__s32 priority;
|
||||
};
|
||||
|
||||
struct hid_report {
|
||||
struct list_head list;
|
||||
struct list_head hidinput_list;
|
||||
struct list_head field_entry_list; /* ordered list of input fields */
|
||||
unsigned int id; /* id of this report */
|
||||
unsigned int type; /* report type */
|
||||
unsigned int application; /* application usage for this report */
|
||||
struct hid_field *field[HID_MAX_FIELDS]; /* fields of the report */
|
||||
struct hid_field_entry *field_entries; /* allocated memory of input field_entry */
|
||||
unsigned maxfield; /* maximum valid field index */
|
||||
unsigned size; /* size of the report (bits) */
|
||||
struct hid_device *device; /* associated device */
|
||||
|
||||
Reference in New Issue
Block a user