Skip to content

Commit

Permalink
Input: zinitix - handle proper supply names
Browse files Browse the repository at this point in the history
The supply names of the Zinitix touchscreen were a bit confused, the new
bindings rectifies this.

To deal with old and new devicetrees, first check if we have "vddo" and in
case that exists assume the old supply names. Else go and look for the new
ones.

We cannot just get the regulators since we would get an OK and a dummy
regulator: we need to check explicitly for the old supply name.

Use struct device *dev as a local variable instead of the I2C client since
the device is what we are actually obtaining the resources from.

Signed-off-by: Linus Walleij <[email protected]>
[Slightly changed the legacy regulator detection]
Signed-off-by: Nikita Travkin <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Dmitry Torokhov <[email protected]>
  • Loading branch information
linusw authored and dtor committed Jan 9, 2022
1 parent fdbb802 commit c54be0e
Showing 1 changed file with 16 additions and 5 deletions.
21 changes: 16 additions & 5 deletions drivers/input/touchscreen/zinitix.c
Original file line number Diff line number Diff line change
Expand Up @@ -252,16 +252,27 @@ static int zinitix_init_touch(struct bt541_ts_data *bt541)

static int zinitix_init_regulators(struct bt541_ts_data *bt541)
{
struct i2c_client *client = bt541->client;
struct device *dev = &bt541->client->dev;
int error;

bt541->supplies[0].supply = "vdd";
bt541->supplies[1].supply = "vddo";
error = devm_regulator_bulk_get(&client->dev,
/*
* Some older device trees have erroneous names for the regulators,
* so check if "vddo" is present and in that case use these names.
* Else use the proper supply names on the component.
*/
if (of_find_property(dev->of_node, "vddo-supply", NULL)) {
bt541->supplies[0].supply = "vdd";
bt541->supplies[1].supply = "vddo";
} else {
/* Else use the proper supply names */
bt541->supplies[0].supply = "vcca";
bt541->supplies[1].supply = "vdd";
}
error = devm_regulator_bulk_get(dev,
ARRAY_SIZE(bt541->supplies),
bt541->supplies);
if (error < 0) {
dev_err(&client->dev, "Failed to get regulators: %d\n", error);
dev_err(dev, "Failed to get regulators: %d\n", error);
return error;
}

Expand Down

0 comments on commit c54be0e

Please sign in to comment.