[PATCH] power: regulator: tps62360_regulator: Convert ofdata_to_platdata to the missing probe

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 --- drivers/power/regulator/tps62360_regulator.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/power/regulator/tps62360_regulator.c b/drivers/power/regulator/tps62360_regulator.c index 3b123f503c..2c076c0db5 100644 --- a/drivers/power/regulator/tps62360_regulator.c +++ b/drivers/power/regulator/tps62360_regulator.c @@ -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, };

On 10/01/20 2:52 PM, Keerthy wrote:
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
Thanks. This fixes boot on AM654 evm:
Tested-by: Lokesh Vutla lokeshvutla@ti.com
Thanks and regards, Lokesh
drivers/power/regulator/tps62360_regulator.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/power/regulator/tps62360_regulator.c b/drivers/power/regulator/tps62360_regulator.c index 3b123f503c..2c076c0db5 100644 --- a/drivers/power/regulator/tps62360_regulator.c +++ b/drivers/power/regulator/tps62360_regulator.c @@ -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,
};

On Fri, 10 Jan 2020 at 02:22, Keerthy j-keerthy@ti.com wrote:
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
drivers/power/regulator/tps62360_regulator.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
Reviewed-by: Simon Glass sjg@chromium.org
participants (3)
-
Keerthy
-
Lokesh Vutla
-
Simon Glass