diff mbox series

Input: ili210x - Set the device name according to the device model

Message ID 20210901192229.29864-1-rpimentel.silva@gmail.com
State New
Headers show
Series Input: ili210x - Set the device name according to the device model | expand

Commit Message

Rogerio Pimentel Sept. 1, 2021, 7:22 p.m. UTC
Adding the device model into the device name is useful when
applications need to set different parameters according to the
touchscreen being used, e.g. X11 calibration points.

Signed-off-by: Rogerio Pimentel <rpimentel.silva@gmail.com>
---
 drivers/input/touchscreen/ili210x.c | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

Comments

Rogerio Pimentel Sept. 2, 2021, 12:39 p.m. UTC | #1
On Wed, Sep 1, 2021 at 5:48 PM Marek Vasut <marex@denx.de> wrote:
>
> On 9/1/21 10:27 PM, Rogerio Pimentel wrote:
> > On Wed, Sep 1, 2021 at 4:46 PM Marek Vasut <marex@denx.de> wrote:
> >>
> >> On 9/1/21 9:22 PM, Rogerio Pimentel wrote:
> >>
> >> [...]
> >>
> >>> diff --git a/drivers/input/touchscreen/ili210x.c b/drivers/input/touchscreen/ili210x.c
> >>> index 30576a5f2f04..ca7af4a6f588 100644
> >>> --- a/drivers/input/touchscreen/ili210x.c
> >>> +++ b/drivers/input/touchscreen/ili210x.c
> >>> @@ -19,6 +19,8 @@
> >>>    #define ILI251X_DATA_SIZE1  31
> >>>    #define ILI251X_DATA_SIZE2  20
> >>>
> >>> +#define ILI_NAME_LEN         27
> >>> +
> >>>    /* Touchscreen commands */
> >>>    #define REG_TOUCHDATA               0x10
> >>>    #define REG_PANEL_INFO              0x20
> >>> @@ -394,6 +396,7 @@ static int ili210x_i2c_probe(struct i2c_client *client,
> >>>        struct input_dev *input;
> >>>        int error;
> >>>        unsigned int max_xy;
> >>> +     char *model_name;
> >>>
> >>>        dev_dbg(dev, "Probing for ILI210X I2C Touschreen driver");
> >>>
> >>> @@ -440,7 +443,11 @@ static int ili210x_i2c_probe(struct i2c_client *client,
> >>>        i2c_set_clientdata(client, priv);
> >>>
> >>>        /* Setup input device */
> >>> -     input->name = "ILI210x Touchscreen";
> >>> +     input->name = "Ilitek         Touchscreen";
> >>> +     model_name = (char *)input->name;
> >>> +     snprintf(model_name, ILI_NAME_LEN, "Ilitek %s Touchscreen",
> >>
> >> Which ilitek devices do you have available exactly ?
> >>
> >> There is a firmware interface which does report the device type, but I
> >> don't know whether it works on all the ilitek touchscreen devices. If it
> >> does, then it could be used here to pull the type from the firmware and
> >> then use this instead
> >>
> >> snprintf(model_name, ILI_NAME_LEN, "Ilitek ILI%04x Touchscreen", type);
> >>
> >> Try this command against the touch controller, it sends it command 0x61
> >> and reads two bytes of the reply:
> >> i2ctransfer -f -y 1 w1@0x41 0x61 r2
> >> 0x10 0x25 # <---- on ILI2510 it reports 0x25 0x10 in reverse
> >
> > Thanks for the comments and suggestions. I'll make the changes and send V2.
>
> Can you tell which ILI2xxx touch controller you have exactly ?

Now I have only the ILI2511. Will also have to support ILI2510 and ILI2118.

> Can you share the output of the 'i2ctransfer' (from i2c-tools) command
> above ?

# i2ctransfer -f -y 3 w1@0x41 0x61 r2
0x11 0x25
diff mbox series

Patch

diff --git a/drivers/input/touchscreen/ili210x.c b/drivers/input/touchscreen/ili210x.c
index 30576a5f2f04..ca7af4a6f588 100644
--- a/drivers/input/touchscreen/ili210x.c
+++ b/drivers/input/touchscreen/ili210x.c
@@ -19,6 +19,8 @@ 
 #define ILI251X_DATA_SIZE1	31
 #define ILI251X_DATA_SIZE2	20
 
+#define ILI_NAME_LEN		27
+
 /* Touchscreen commands */
 #define REG_TOUCHDATA		0x10
 #define REG_PANEL_INFO		0x20
@@ -394,6 +396,7 @@  static int ili210x_i2c_probe(struct i2c_client *client,
 	struct input_dev *input;
 	int error;
 	unsigned int max_xy;
+	char *model_name;
 
 	dev_dbg(dev, "Probing for ILI210X I2C Touschreen driver");
 
@@ -440,7 +443,11 @@  static int ili210x_i2c_probe(struct i2c_client *client,
 	i2c_set_clientdata(client, priv);
 
 	/* Setup input device */
-	input->name = "ILI210x Touchscreen";
+	input->name = "Ilitek         Touchscreen";
+	model_name = (char *)input->name;
+	snprintf(model_name, ILI_NAME_LEN, "Ilitek %s Touchscreen",
+	id->name);
+	input->name = model_name;
 	input->id.bustype = BUS_I2C;
 
 	/* Multi touch */
@@ -487,10 +494,10 @@  static int ili210x_i2c_probe(struct i2c_client *client,
 }
 
 static const struct i2c_device_id ili210x_i2c_id[] = {
-	{ "ili210x", (long)&ili210x_chip },
-	{ "ili2117", (long)&ili211x_chip },
-	{ "ili2120", (long)&ili212x_chip },
-	{ "ili251x", (long)&ili251x_chip },
+	{ .name = "ili210x", (long)&ili210x_chip },
+	{ .name = "ili2117", (long)&ili211x_chip },
+	{ .name = "ili2120", (long)&ili212x_chip },
+	{ .name = "ili251x", (long)&ili251x_chip },
 	{ }
 };
 MODULE_DEVICE_TABLE(i2c, ili210x_i2c_id);