mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-05 19:31:57 -04:00
HID: asus: Add report_size to struct asus_touchpad_info
[ Upstream commit a61f9e428bf092349fdfebeee37ddefedd3f0fd1 ]
Add the report_size to struct asus_touchpad_info instead of calculating it.
This is a preparation patch for adding support for the multi-touch touchpad
found on the Medion Akoya E1239T's keyboard-dock, which uses the same
custom multi-touch protocol as the Asus keyboard-docks (same chipset
vendor, Integrated Technology Express / ITE).
The only difference in that the Akoya E1239T keyboard-dock's input-reports
have a 5 byte footer instead of a 1 byte footer, which requires the
report_size to be configurable per touchpad-model.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Stable-dep-of: 4ab3a086d10e ("HID: asus: use spinlock to safely schedule workers")
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
63792d0ae9
commit
bad4a822a1
1 changed files with 7 additions and 1 deletions
|
|
@ -103,6 +103,7 @@ struct asus_touchpad_info {
|
|||
int res_y;
|
||||
int contact_size;
|
||||
int max_contacts;
|
||||
int report_size;
|
||||
};
|
||||
|
||||
struct asus_drvdata {
|
||||
|
|
@ -127,6 +128,7 @@ static const struct asus_touchpad_info asus_i2c_tp = {
|
|||
.max_y = 1758,
|
||||
.contact_size = 5,
|
||||
.max_contacts = 5,
|
||||
.report_size = 28 /* 2 byte header + 5 * 5 + 1 byte footer */,
|
||||
};
|
||||
|
||||
static const struct asus_touchpad_info asus_t100ta_tp = {
|
||||
|
|
@ -136,6 +138,7 @@ static const struct asus_touchpad_info asus_t100ta_tp = {
|
|||
.res_y = 27, /* units/mm */
|
||||
.contact_size = 5,
|
||||
.max_contacts = 5,
|
||||
.report_size = 28 /* 2 byte header + 5 * 5 + 1 byte footer */,
|
||||
};
|
||||
|
||||
static const struct asus_touchpad_info asus_t100ha_tp = {
|
||||
|
|
@ -145,6 +148,7 @@ static const struct asus_touchpad_info asus_t100ha_tp = {
|
|||
.res_y = 29, /* units/mm */
|
||||
.contact_size = 5,
|
||||
.max_contacts = 5,
|
||||
.report_size = 28 /* 2 byte header + 5 * 5 + 1 byte footer */,
|
||||
};
|
||||
|
||||
static const struct asus_touchpad_info asus_t200ta_tp = {
|
||||
|
|
@ -154,6 +158,7 @@ static const struct asus_touchpad_info asus_t200ta_tp = {
|
|||
.res_y = 28, /* units/mm */
|
||||
.contact_size = 5,
|
||||
.max_contacts = 5,
|
||||
.report_size = 28 /* 2 byte header + 5 * 5 + 1 byte footer */,
|
||||
};
|
||||
|
||||
static const struct asus_touchpad_info asus_t100chi_tp = {
|
||||
|
|
@ -163,6 +168,7 @@ static const struct asus_touchpad_info asus_t100chi_tp = {
|
|||
.res_y = 29, /* units/mm */
|
||||
.contact_size = 3,
|
||||
.max_contacts = 4,
|
||||
.report_size = 15 /* 2 byte header + 3 * 4 + 1 byte footer */,
|
||||
};
|
||||
|
||||
static void asus_report_contact_down(struct asus_drvdata *drvdat,
|
||||
|
|
@ -230,7 +236,7 @@ static int asus_report_input(struct asus_drvdata *drvdat, u8 *data, int size)
|
|||
int i, toolType = MT_TOOL_FINGER;
|
||||
u8 *contactData = data + 2;
|
||||
|
||||
if (size != 3 + drvdat->tp->contact_size * drvdat->tp->max_contacts)
|
||||
if (size != drvdat->tp->report_size)
|
||||
return 0;
|
||||
|
||||
for (i = 0; i < drvdat->tp->max_contacts; i++) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue