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;
        }