Message ID | 20200110092205.21468-1-j-keerthy@ti.com |
---|---|
State | Accepted |
Commit | 17aaa42e76ac7b4e4f821df8a19bea752c2e9888 |
Headers | show |
Series | power: regulator: tps62360_regulator: Convert ofdata_to_platdata to the missing probe | expand |
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 at ti.com> Thanks. This fixes boot on AM654 evm: Tested-by: Lokesh Vutla <lokeshvutla at 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 at 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 at ti.com> > --- > drivers/power/regulator/tps62360_regulator.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) Reviewed-by: Simon Glass <sjg at chromium.org>
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, };
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 at ti.com> --- drivers/power/regulator/tps62360_regulator.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)