Message ID | 20250109175211.113945-2-francesco@valla.it |
---|---|
State | New |
Headers | show |
Series | bus: ti-sysc: mark AM62 wkup_uart0 as non deferrable | expand |
On 09/01/2025 19:52, Francesco Valla wrote: > The ti-sysc driver implements a probe deferral logic to be sure to probe > the parent interconnects before their children, postponing the probe of > interconnects not marked as "early" instances until one of these is > found. > > Since the driver is alse used for the wkup_uart0 block found on the AM62 alse/also > SoC, but not for other devices on the same platform, this logic forces > the probe for it to be artificially deferred 10 times and can lead to > the device not being probed at all. The missed probe was seen on a > BeaglePlay with the kernel configuration stripped to bare minimum and > no module support. > > Add the ranges for wkup_uart0 to the list of "early" interconnect > instances, forcing the driver to skip the defer logic entirely for this > device. > > Signed-off-by: Francesco Valla <francesco@valla.it> > --- > drivers/bus/ti-sysc.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c > index f67b927ae4ca..917b7168fbd0 100644 > --- a/drivers/bus/ti-sysc.c > +++ b/drivers/bus/ti-sysc.c > @@ -687,6 +687,8 @@ static struct resource early_bus_ranges[] = { > { .start = 0x4a300000, .end = 0x4a300000 + 0x30000, }, > /* omap5 and dra7 l4_wkup without dra7 dcan segment */ > { .start = 0x4ae00000, .end = 0x4ae00000 + 0x30000, }, > + /* am62 wkup_uart0 */ > + { .start = 0x2b300000, .end = 0x2b300000 + 0x100000, }, > }; > > static atomic_t sysc_defer = ATOMIC_INIT(10); While this is probably OK for now, we need to ensure that sysc_defer_non_critical() is not called for such devices that don't have an interconnect managed by the sysc driver (i.e. non OMAP based systems). Maybe this calls for a new compatible for AM62 sysc? Reviewed-by: Roger Quadros <rogerq@kernel.org>
diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c index f67b927ae4ca..917b7168fbd0 100644 --- a/drivers/bus/ti-sysc.c +++ b/drivers/bus/ti-sysc.c @@ -687,6 +687,8 @@ static struct resource early_bus_ranges[] = { { .start = 0x4a300000, .end = 0x4a300000 + 0x30000, }, /* omap5 and dra7 l4_wkup without dra7 dcan segment */ { .start = 0x4ae00000, .end = 0x4ae00000 + 0x30000, }, + /* am62 wkup_uart0 */ + { .start = 0x2b300000, .end = 0x2b300000 + 0x100000, }, }; static atomic_t sysc_defer = ATOMIC_INIT(10);
The ti-sysc driver implements a probe deferral logic to be sure to probe the parent interconnects before their children, postponing the probe of interconnects not marked as "early" instances until one of these is found. Since the driver is alse used for the wkup_uart0 block found on the AM62 SoC, but not for other devices on the same platform, this logic forces the probe for it to be artificially deferred 10 times and can lead to the device not being probed at all. The missed probe was seen on a BeaglePlay with the kernel configuration stripped to bare minimum and no module support. Add the ranges for wkup_uart0 to the list of "early" interconnect instances, forcing the driver to skip the defer logic entirely for this device. Signed-off-by: Francesco Valla <francesco@valla.it> --- drivers/bus/ti-sysc.c | 2 ++ 1 file changed, 2 insertions(+)