On Tue, Nov 12, 2019 at 11:44:28AM -0500, Sven Van Asbroeck wrote: > Optionally allow the touch screen resolution to be set by adding > it to the chip operations structure. If it is omitted (left zero), > the resolution defaults to 64K. Which is the previously hard-coded > value. > > Set the ili2117 resolution to 2048, as indicated in its datasheet. > > Link: https://lore.kernel.org/lkml/20191111181657.GA57214@dtor-ws/ > Cc: Marek Vasut <marex@xxxxxxx> > Cc: Adam Ford <aford173@xxxxxxxxx> > Cc: <linux-kernel@xxxxxxxxxxxxxxx> > Cc: linux-input@xxxxxxxxxxxxxxx > Tree: https://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git/log/?h=next > Signed-off-by: Sven Van Asbroeck <TheSven73@xxxxxxxxx> > --- > drivers/input/touchscreen/ili210x.c | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) > > diff --git a/drivers/input/touchscreen/ili210x.c b/drivers/input/touchscreen/ili210x.c > index a6feae5ce887..4321f0d676cc 100644 > --- a/drivers/input/touchscreen/ili210x.c > +++ b/drivers/input/touchscreen/ili210x.c > @@ -31,6 +31,7 @@ struct ili2xxx_chip { > unsigned int *x, unsigned int *y); > bool (*continue_polling)(const u8 *data, bool touch); > unsigned int max_touches; > + unsigned int resolution; > }; > > struct ili210x { > @@ -160,6 +161,7 @@ static const struct ili2xxx_chip ili211x_chip = { > .parse_touch_data = ili211x_touchdata_to_coords, > .continue_polling = ili211x_decline_polling, > .max_touches = 10, > + .resolution = 2048, > }; > > static int ili251x_read_reg(struct i2c_client *client, > @@ -336,6 +338,7 @@ static int ili210x_i2c_probe(struct i2c_client *client, > struct gpio_desc *reset_gpio; > struct input_dev *input; > int error; > + unsigned int max_xy; > > dev_dbg(dev, "Probing for ILI210X I2C Touschreen driver"); > > @@ -386,8 +389,12 @@ static int ili210x_i2c_probe(struct i2c_client *client, > input->id.bustype = BUS_I2C; > > /* Multi touch */ > - input_set_abs_params(input, ABS_MT_POSITION_X, 0, 0xffff, 0, 0); > - input_set_abs_params(input, ABS_MT_POSITION_Y, 0, 0xffff, 0, 0); > + if (chip->resolution) > + max_xy = chip->resolution - 1; > + else > + max_xy = 0xffff; max_xy = (chip->resolution ?: 65536) - 1; > + input_set_abs_params(input, ABS_MT_POSITION_X, 0, max_xy, 0, 0); > + input_set_abs_params(input, ABS_MT_POSITION_Y, 0, max_xy, 0, 0); > touchscreen_parse_properties(input, true, &priv->prop); > > error = input_mt_init_slots(input, priv->chip->max_touches, > -- > 2.17.1 > -- Dmitry