summaryrefslogtreecommitdiff
path: root/drivers/input/touchscreen
diff options
context:
space:
mode:
authorDmitry Torokhov <dmitry.torokhov@gmail.com>2024-08-24 08:50:38 +0300
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2024-09-06 08:56:46 +0300
commit16ff0224d8a6c7cb52c954c3dad4cb54a7d96720 (patch)
tree80efbdc4766939a312b6ef0b91c55c7f8fe36a94 /drivers/input/touchscreen
parentb5ed81cc7bccef90e39ee36b0c1f3677686a0fbb (diff)
downloadlinux-16ff0224d8a6c7cb52c954c3dad4cb54a7d96720.tar.xz
Input: zforce_ts - stop treating VDD regulator as optional
This regulator is not optional from the controller point of view, so stop treating it as such. For hard-wired designs that omit the regulator from their device trees regulator subsystem will create a dummy instance. This may introduce unnecessary delay of 100us in case of dummy regulator, but if it is important the driver should be marked as using asynchronous probing to avoid even longer delays waiting for the command completions. Also use usleep_range() instead of udelay() to avoid spinning. Tested-by: Andreas Kemnade <andreas@kemnade.info> # Tolino Shine2HD Link: https://lore.kernel.org/r/20240824055047.1706392-15-dmitry.torokhov@gmail.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Diffstat (limited to 'drivers/input/touchscreen')
-rw-r--r--drivers/input/touchscreen/zforce_ts.c28
1 files changed, 13 insertions, 15 deletions
diff --git a/drivers/input/touchscreen/zforce_ts.c b/drivers/input/touchscreen/zforce_ts.c
index 2ae079db8884..c6b506a01b2a 100644
--- a/drivers/input/touchscreen/zforce_ts.c
+++ b/drivers/input/touchscreen/zforce_ts.c
@@ -742,23 +742,21 @@ static int zforce_probe(struct i2c_client *client)
"failed to request reset GPIO\n");
}
- ts->reg_vdd = devm_regulator_get_optional(&client->dev, "vdd");
+ ts->reg_vdd = devm_regulator_get(&client->dev, "vdd");
error = PTR_ERR_OR_ZERO(ts->gpio_rst);
- if (error) {
- if (error != -ENOENT)
- return dev_err_probe(&client->dev, error,
- "failed to request vdd supply\n");
- } else {
- error = regulator_enable(ts->reg_vdd);
- if (error)
- return error;
+ if (error)
+ return dev_err_probe(&client->dev, error,
+ "failed to request vdd supply\n");
- /*
- * according to datasheet add 100us grace time after regular
- * regulator enable delay.
- */
- udelay(100);
- }
+ error = regulator_enable(ts->reg_vdd);
+ if (error)
+ return error;
+
+ /*
+ * According to datasheet add 100us grace time after regular
+ * regulator enable delay.
+ */
+ usleep_range(100, 200);
error = devm_add_action_or_reset(&client->dev, zforce_reset, ts);
if (error)