Re: [PATCH v2 1/2] Input: ili210x - add resolution to chip operations structure

From: Dmitry Torokhov
Date: Tue Nov 12 2019 - 18:52:44 EST


On Tue, Nov 12, 2019 at 04:01:47PM -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: 20191111181657.GA57214@dtor-ws/">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 | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/input/touchscreen/ili210x.c b/drivers/input/touchscreen/ili210x.c
> index a6feae5ce887..3b8e24815a1f 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,9 @@ 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);
> + max_xy = (chip->resolution ?: SZ_64K) - 1;

I had to add linux/sizes.h for this.

Applied, thank you.

--
Dmitry