Message ID | 20240418175828.84548-1-afd@ti.com |
---|---|
State | Accepted |
Commit | 4b3706607c0015ba99a86d8631446564c117e06a |
Delegated to: | Tom Rini |
Headers | show |
Series | arm: mach-k3: am642: Fix reset for workaround errata ID i2331 | expand |
Am 18.04.24 um 19:58 schrieb Andrew Davis: > To workaround an issue in AM642 we reset the SoC in early boot. For that > we first probed the sysreset driver by calling uclass_get_device(). The > ti-sci sysreset driver is now probed during the ti-sci firmware probe. > Update this call to probe the firmware driver which will then probe > the sysreset driver allowing do_reset() to again function as expected. > > Reported-by: Jonathan Humphreys <j-humphreys@ti.com> > Fixes: fc5d40283483 ("firmware: ti_sci: Bind sysreset driver when enabled") > Signed-off-by: Andrew Davis <afd@ti.com> Tested-by: Wadim Egorov <w.egorov@phytec.de> on phycore-am64x > --- > arch/arm/mach-k3/am642_init.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/arm/mach-k3/am642_init.c b/arch/arm/mach-k3/am642_init.c > index ddf47ef0a9b..80c3cb3479f 100644 > --- a/arch/arm/mach-k3/am642_init.c > +++ b/arch/arm/mach-k3/am642_init.c > @@ -226,7 +226,7 @@ void board_init_f(ulong dummy) > * The warm reset realigns internal clocks and prevents the lockup from > * happening. > */ > - ret = uclass_first_device_err(UCLASS_SYSRESET, &dev); > + ret = uclass_get_device_by_driver(UCLASS_FIRMWARE, DM_DRIVER_GET(ti_sci), &dev); > if (ret) > printf("\n%s:uclass device error [%d]\n",__func__,ret); >
Andrew Davis <afd@ti.com> writes: > To workaround an issue in AM642 we reset the SoC in early boot. For that > we first probed the sysreset driver by calling uclass_get_device(). The > ti-sci sysreset driver is now probed during the ti-sci firmware probe. > Update this call to probe the firmware driver which will then probe > the sysreset driver allowing do_reset() to again function as expected. > > Reported-by: Jonathan Humphreys <j-humphreys@ti.com> > Fixes: fc5d40283483 ("firmware: ti_sci: Bind sysreset driver when enabled") > Signed-off-by: Andrew Davis <afd@ti.com> > --- > arch/arm/mach-k3/am642_init.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/arm/mach-k3/am642_init.c b/arch/arm/mach-k3/am642_init.c > index ddf47ef0a9b..80c3cb3479f 100644 > --- a/arch/arm/mach-k3/am642_init.c > +++ b/arch/arm/mach-k3/am642_init.c > @@ -226,7 +226,7 @@ void board_init_f(ulong dummy) > * The warm reset realigns internal clocks and prevents the lockup from > * happening. > */ > - ret = uclass_first_device_err(UCLASS_SYSRESET, &dev); > + ret = uclass_get_device_by_driver(UCLASS_FIRMWARE, DM_DRIVER_GET(ti_sci), &dev); > if (ret) > printf("\n%s:uclass device error [%d]\n",__func__,ret); > > -- > 2.39.2 Tested-by: Kamlesh Gurudasani <kamlesh@ti.com> on am64x-evm
On Thu, 18 Apr 2024 12:58:28 -0500, Andrew Davis wrote: > To workaround an issue in AM642 we reset the SoC in early boot. For that > we first probed the sysreset driver by calling uclass_get_device(). The > ti-sci sysreset driver is now probed during the ti-sci firmware probe. > Update this call to probe the firmware driver which will then probe > the sysreset driver allowing do_reset() to again function as expected. > > > [...] Applied to u-boot/master, thanks!
diff --git a/arch/arm/mach-k3/am642_init.c b/arch/arm/mach-k3/am642_init.c index ddf47ef0a9b..80c3cb3479f 100644 --- a/arch/arm/mach-k3/am642_init.c +++ b/arch/arm/mach-k3/am642_init.c @@ -226,7 +226,7 @@ void board_init_f(ulong dummy) * The warm reset realigns internal clocks and prevents the lockup from * happening. */ - ret = uclass_first_device_err(UCLASS_SYSRESET, &dev); + ret = uclass_get_device_by_driver(UCLASS_FIRMWARE, DM_DRIVER_GET(ti_sci), &dev); if (ret) printf("\n%s:uclass device error [%d]\n",__func__,ret);
To workaround an issue in AM642 we reset the SoC in early boot. For that we first probed the sysreset driver by calling uclass_get_device(). The ti-sci sysreset driver is now probed during the ti-sci firmware probe. Update this call to probe the firmware driver which will then probe the sysreset driver allowing do_reset() to again function as expected. Reported-by: Jonathan Humphreys <j-humphreys@ti.com> Fixes: fc5d40283483 ("firmware: ti_sci: Bind sysreset driver when enabled") Signed-off-by: Andrew Davis <afd@ti.com> --- arch/arm/mach-k3/am642_init.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)