Commit b32fbeae authored by Sven Van Asbroeck's avatar Sven Van Asbroeck Committed by Dmitry Torokhov

Input: ili210x - add resolution to chip operations structure

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.
Signed-off-by: default avatarSven Van Asbroeck <TheSven73@gmail.com>
Link: https://lore.kernel.org/r/20191112210148.3535-1-TheSven73@gmail.comSigned-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
parent c7dded5b
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/of_device.h> #include <linux/of_device.h>
#include <linux/sizes.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <asm/unaligned.h> #include <asm/unaligned.h>
...@@ -31,6 +32,7 @@ struct ili2xxx_chip { ...@@ -31,6 +32,7 @@ struct ili2xxx_chip {
unsigned int *x, unsigned int *y); unsigned int *x, unsigned int *y);
bool (*continue_polling)(const u8 *data, bool touch); bool (*continue_polling)(const u8 *data, bool touch);
unsigned int max_touches; unsigned int max_touches;
unsigned int resolution;
}; };
struct ili210x { struct ili210x {
...@@ -160,6 +162,7 @@ static const struct ili2xxx_chip ili211x_chip = { ...@@ -160,6 +162,7 @@ static const struct ili2xxx_chip ili211x_chip = {
.parse_touch_data = ili211x_touchdata_to_coords, .parse_touch_data = ili211x_touchdata_to_coords,
.continue_polling = ili211x_decline_polling, .continue_polling = ili211x_decline_polling,
.max_touches = 10, .max_touches = 10,
.resolution = 2048,
}; };
static int ili251x_read_reg(struct i2c_client *client, static int ili251x_read_reg(struct i2c_client *client,
...@@ -336,6 +339,7 @@ static int ili210x_i2c_probe(struct i2c_client *client, ...@@ -336,6 +339,7 @@ static int ili210x_i2c_probe(struct i2c_client *client,
struct gpio_desc *reset_gpio; struct gpio_desc *reset_gpio;
struct input_dev *input; struct input_dev *input;
int error; int error;
unsigned int max_xy;
dev_dbg(dev, "Probing for ILI210X I2C Touschreen driver"); dev_dbg(dev, "Probing for ILI210X I2C Touschreen driver");
...@@ -386,8 +390,9 @@ static int ili210x_i2c_probe(struct i2c_client *client, ...@@ -386,8 +390,9 @@ static int ili210x_i2c_probe(struct i2c_client *client,
input->id.bustype = BUS_I2C; input->id.bustype = BUS_I2C;
/* Multi touch */ /* Multi touch */
input_set_abs_params(input, ABS_MT_POSITION_X, 0, 0xffff, 0, 0); max_xy = (chip->resolution ?: SZ_64K) - 1;
input_set_abs_params(input, ABS_MT_POSITION_Y, 0, 0xffff, 0, 0); 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); touchscreen_parse_properties(input, true, &priv->prop);
error = input_mt_init_slots(input, priv->chip->max_touches, error = input_mt_init_slots(input, priv->chip->max_touches,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment