power: regulator: tps62360_regulator: Convert ofdata_to_platdata to the missing probe
authorKeerthy <j-keerthy@ti.com>
Fri, 10 Jan 2020 09:22:05 +0000 (14:52 +0530)
committerLokesh Vutla <lokeshvutla@ti.com>
Mon, 20 Jan 2020 04:40:28 +0000 (10:10 +0530)
commit 29f7d05a347a ("dm: core: Move ofdata_to_platdata() call earlier")
introduces changes in the order of device_probe execution.
ofdata_to_platdata now comes before the probe function which resulted in
a deadlock and caused boot hang on AM6 devices.

Deadlock sequence: tps62360_regulator_ofdata_to_platdata --> i2c_get_chip
--> device_probe(tps62360) --> tps62360_regulator_ofdata_to_platdata

Hence convert ofdata_to_platdata to the missing probe function to fix the
hang.

Fixes: 22e8f18980d6 ("power: regulator: tps6236x: add support for tps6236x regulators")
Signed-off-by: Keerthy <j-keerthy@ti.com>
Tested-by: Lokesh Vutla <lokeshvutla@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
drivers/power/regulator/tps62360_regulator.c

index 3b123f503ce3035dc0de50300d53066e9e499f8f..2c076c0db5bf8c6cae6dd5288996df77dc4b675f 100644 (file)
@@ -77,7 +77,7 @@ static int tps62360_regulator_get_value(struct udevice *dev)
        return (u32)regval * TPS62360_VSEL_STEPSIZE + pdata->config->vmin;
 }
 
-static int tps62360_regulator_ofdata_to_platdata(struct udevice *dev)
+static int tps62360_regulator_probe(struct udevice *dev)
 {
        struct tps62360_regulator_pdata *pdata = dev_get_platdata(dev);
        u8 vsel0;
@@ -119,5 +119,5 @@ U_BOOT_DRIVER(tps62360_regulator) = {
        .ops = &tps62360_regulator_ops,
        .of_match = tps62360_regulator_ids,
        .platdata_auto_alloc_size = sizeof(struct tps62360_regulator_pdata),
-       .ofdata_to_platdata = tps62360_regulator_ofdata_to_platdata,
+       .probe = tps62360_regulator_probe,
 };