On Mon, Nov 24, 2014 at 6:32 PM, Jason Gerecke <killertofu@xxxxxxxxx> wrote: > If a HID descriptor places HID_DG_CONTACTID before HID_DG_X and HID_DG_Y then > the ABS_X and ABS_Y will not be automatically initialized by the call to > input_mt_init_slots. Here we move the setup of those axes outside of the > 'if' statement so that they're always present if the associated HID field > is. No, I am afraid, that this does not work. The solution is to call input_mt_init_slot once the mapping has been done. I am complaining here because input_mt_init_slot will set the fuzz to 0 for ABS_X and 4 for ABS_MT_POSITION_X. If both have a fuzz of 4, there will be a double de-fuzzing while sending out the single touch emulation. Likewise, the pressure should be initialized with ABS_MT_PRESSURE only (not implemented right now, I know). At the end of wacom_parse_hid in wacom_sys, there should be a call to a function which would finalize the initialization. And then, input_mt_init_slot will be called after ABS_MT_*, no matter what the order of the fields is. Cheers, Benjamin > > Signed-off-by: Jason Gerecke <killertofu@xxxxxxxxx> > --- > drivers/hid/wacom_wac.c | 10 ++++------ > 1 file changed, 4 insertions(+), 6 deletions(-) > > diff --git a/drivers/hid/wacom_wac.c b/drivers/hid/wacom_wac.c > index 1468f00..a55e0ed 100644 > --- a/drivers/hid/wacom_wac.c > +++ b/drivers/hid/wacom_wac.c > @@ -1382,16 +1382,14 @@ static void wacom_wac_finger_usage_mapping(struct hid_device *hdev, > > switch (usage->hid) { > case HID_GD_X: > - if (touch_max == 1) > - wacom_map_usage(wacom, usage, field, EV_ABS, ABS_X, 4); > - else > + wacom_map_usage(wacom, usage, field, EV_ABS, ABS_X, 4); > + if (touch_max > 1) > wacom_map_usage(wacom, usage, field, EV_ABS, > ABS_MT_POSITION_X, 4); > break; > case HID_GD_Y: > - if (touch_max == 1) > - wacom_map_usage(wacom, usage, field, EV_ABS, ABS_Y, 4); > - else > + wacom_map_usage(wacom, usage, field, EV_ABS, ABS_Y, 4); > + if (touch_max > 1) > wacom_map_usage(wacom, usage, field, EV_ABS, > ABS_MT_POSITION_Y, 4); > break; > -- > 2.1.3 > -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html