Skip to content

Commit

Permalink
Input: ili210x - use one common reset implementation
Browse files Browse the repository at this point in the history
Rename ili251x_hardware_reset() to ili210x_hardware_reset(), change its
parameter from struct device * to struct gpio_desc *, and use it as one
single consistent reset implementation all over the driver. Also increase
the minimum reset duration to 12ms, to make sure the reset is really
within the spec.

Signed-off-by: Marek Vasut <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Dmitry Torokhov <[email protected]>
  • Loading branch information
Marek Vasut authored and dtor committed May 18, 2022
1 parent e4920d4 commit b26ff91
Showing 1 changed file with 8 additions and 12 deletions.
20 changes: 8 additions & 12 deletions drivers/input/touchscreen/ili210x.c
Original file line number Diff line number Diff line change
Expand Up @@ -756,15 +756,12 @@ static int ili251x_firmware_reset(struct i2c_client *client)
return ili251x_firmware_busy(client);
}

static void ili251x_hardware_reset(struct device *dev)
static void ili210x_hardware_reset(struct gpio_desc *reset_gpio)
{
struct i2c_client *client = to_i2c_client(dev);
struct ili210x *priv = i2c_get_clientdata(client);

/* Reset the controller */
gpiod_set_value_cansleep(priv->reset_gpio, 1);
usleep_range(10000, 15000);
gpiod_set_value_cansleep(priv->reset_gpio, 0);
gpiod_set_value_cansleep(reset_gpio, 1);
usleep_range(12000, 15000);
gpiod_set_value_cansleep(reset_gpio, 0);
msleep(300);
}

Expand All @@ -773,6 +770,7 @@ static ssize_t ili210x_firmware_update_store(struct device *dev,
const char *buf, size_t count)
{
struct i2c_client *client = to_i2c_client(dev);
struct ili210x *priv = i2c_get_clientdata(client);
const char *fwname = ILI251X_FW_FILENAME;
const struct firmware *fw;
u16 ac_end, df_end;
Expand Down Expand Up @@ -803,7 +801,7 @@ static ssize_t ili210x_firmware_update_store(struct device *dev,

dev_dbg(dev, "Firmware update started, firmware=%s\n", fwname);

ili251x_hardware_reset(dev);
ili210x_hardware_reset(priv->reset_gpio);

error = ili251x_firmware_reset(client);
if (error)
Expand Down Expand Up @@ -858,7 +856,7 @@ static ssize_t ili210x_firmware_update_store(struct device *dev,
error = count;

exit:
ili251x_hardware_reset(dev);
ili210x_hardware_reset(priv->reset_gpio);
dev_dbg(dev, "Firmware update ended, error=%i\n", error);
enable_irq(client->irq);
kfree(fwbuf);
Expand Down Expand Up @@ -951,9 +949,7 @@ static int ili210x_i2c_probe(struct i2c_client *client,
if (error)
return error;

usleep_range(12000, 15000);
gpiod_set_value_cansleep(reset_gpio, 0);
msleep(160);
ili210x_hardware_reset(reset_gpio);
}

priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
Expand Down

0 comments on commit b26ff91

Please sign in to comment.