On Sat, Apr 25, 2020 at 10:11:22PM -0700, Dmitry Torokhov wrote: > On Mon, Apr 13, 2020 at 03:32:24PM +0200, Michał Mirosław wrote: > > Allow overriding of information from hardware and support additional > > common DT properties like axis inversion. This is required for eg. > > Nexus 7 and TF300T where the programmed values in firmware differ > > from reality. > > > > Signed-off-by: Dmitry Osipenko <digetx@xxxxxxxxx> > > [moved "prop" before DMA buffer] > > Signed-off-by: Michał Mirosław <mirq-linux@xxxxxxxxxxxx> > > This needs a companion patch for the DT bindings. Ah, sorry, I missed the fact that it was later in the sequence. > > > --- > > drivers/input/touchscreen/elants_i2c.c | 7 +++++-- > > 1 file changed, 5 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/input/touchscreen/elants_i2c.c b/drivers/input/touchscreen/elants_i2c.c > > index fcd3d189f184..87d686ce08f2 100644 > > --- a/drivers/input/touchscreen/elants_i2c.c > > +++ b/drivers/input/touchscreen/elants_i2c.c > > @@ -32,6 +32,7 @@ > > #include <linux/slab.h> > > #include <linux/firmware.h> > > #include <linux/input/mt.h> > > +#include <linux/input/touchscreen.h> > > #include <linux/acpi.h> > > #include <linux/of.h> > > #include <linux/gpio/consumer.h> > > @@ -150,6 +151,7 @@ struct elants_data { > > unsigned int y_res; > > unsigned int x_max; > > unsigned int y_max; > > + struct touchscreen_properties prop; > > > > enum elants_state state; > > enum elants_iap_mode iap_mode; > > @@ -894,8 +896,7 @@ static void elants_i2c_mt_event(struct elants_data *ts, u8 *buf, > > > > input_mt_slot(input, i); > > input_mt_report_slot_state(input, MT_TOOL_FINGER, true); > > - input_event(input, EV_ABS, ABS_MT_POSITION_X, x); > > - input_event(input, EV_ABS, ABS_MT_POSITION_Y, y); > > + touchscreen_report_pos(input, &ts->prop, x, y, true); > > input_event(input, EV_ABS, ABS_MT_PRESSURE, p); > > input_event(input, EV_ABS, ABS_MT_TOUCH_MAJOR, w); > > > > @@ -1329,6 +1330,8 @@ static int elants_i2c_probe(struct i2c_client *client, > > input_abs_set_res(ts->input, ABS_MT_POSITION_Y, ts->y_res); > > input_abs_set_res(ts->input, ABS_MT_TOUCH_MAJOR, 1); > > > > + touchscreen_parse_properties(ts->input, true, &ts->prop); > > + > > error = input_register_device(ts->input); > > if (error) { > > dev_err(&client->dev, > > -- > > 2.20.1 > > > > -- > Dmitry -- Dmitry