Re: [PATCH v3 3/9] input: elants: remove unused axes

From: Dmitry Osipenko
Date: Sun Apr 26 2020 - 12:12:07 EST


26.04.2020 18:41, Dmitry Osipenko ÐÐÑÐÑ:
> 26.04.2020 18:39, Dmitry Osipenko ÐÐÑÐÑ:
>> 26.04.2020 14:21, MichaÅ MirosÅaw ÐÐÑÐÑ:
>>> On Sat, Apr 25, 2020 at 09:52:00PM -0700, Dmitry Torokhov wrote:
>>>> On Mon, Apr 13, 2020 at 03:32:23PM +0200, MichaÅ MirosÅaw wrote:
>>>>> Driver only ever reports MT events. Clear capabilities of all others.
>>>> This is not true. input_mt_sync_frame() calls
>>>> input_mt_report_pointer_emulation() which does emut single-touch events
>>>> for the benefit of older userspace (or userspace that is not interested
>>>> in multitouch).
>>>
>>> Oh, I didn't notice that. Looking at the code, I see that
>>> input_mt_init_slots() sets up the emulated axes in this case.
>>>
>>> Do you need me to update the commitmsg?
>>
>> I tried Ubuntu 12.04 that uses ancient libinput (or whatever it was back
>> then), which doesn't support MT. Mouse doesn't move at all with this
>> patch being applied.

> Without this patch mouse moves, but it's not usable
>> because the cursor's position is wrong, i.e. mouse position doesn't
>> match the screen touches.

The fix for the legacy pointer emulation is trivial:

--- >8 ---
diff --git a/drivers/input/touchscreen/elants_i2c.c
b/drivers/input/touchscreen/elants_i2c.c
index 060c60c04f25..3644b5b48081 100644
--- a/drivers/input/touchscreen/elants_i2c.c
+++ b/drivers/input/touchscreen/elants_i2c.c
@@ -1414,6 +1414,8 @@ static int elants_i2c_probe(struct i2c_client *client,
input_abs_set_res(ts->input, ABS_X, ts->x_res);
input_abs_set_res(ts->input, ABS_Y, ts->y_res);

+ touchscreen_parse_properties(ts->input, false, &ts->prop);
+
/* Multitouch input params setup */
error = input_mt_init_slots(ts->input, MAX_CONTACT_NUM,
INPUT_MT_DIRECT | INPUT_MT_DROP_UNUSED);
--- >8 ---

MichaÅ, please incorporate this change into the next version.

>> This means that input_mt_report_pointer_emulation() doesn't set up
>> everything needed for the legacy pointer emulation.
>>
>
> I meant the input_mt_init_slots().
>