The RK3528 clock driver configures the CPU PLLs, clock matrix rates
and default PWM rates when probed in SPL. However, the driver is only
probed on demand, so this configuration is skipped when no SPL consumer
requests a clock, e.g. when booting from RAM/USB.

Prior to the commit c6bba31dbdd4 ("rockchip: spl-boot-order: Defer probe
of boot device") all boot devices where typically probed, with a side
effect that clock driver likely also where probed, prior to the
boot_from_devices() call.

Flag the clock driver to be probed after bind in SPL to help ensure a
deterministic probe and clock configuration behavior prior to booting
from devices.

Signed-off-by: Jonas Karlman <[email protected]>
---
v2: Update commit message
---
 drivers/clk/rockchip/clk_rk3528.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/clk/rockchip/clk_rk3528.c 
b/drivers/clk/rockchip/clk_rk3528.c
index 83e302dbc3c4..976ef0e0a919 100644
--- a/drivers/clk/rockchip/clk_rk3528.c
+++ b/drivers/clk/rockchip/clk_rk3528.c
@@ -1715,6 +1715,10 @@ static int rk3528_clk_bind(struct udevice *dev)
        struct sysreset_reg *priv;
        int ret;
 
+       /* Ensure clocks are initialized after bind in SPL build */
+       if (IS_ENABLED(CONFIG_SPL_BUILD))
+               dev_or_flags(dev, DM_FLAG_PROBE_AFTER_BIND);
+
        /* The reset driver does not have a device node, so bind it here */
        ret = device_bind_driver(dev, "rockchip_sysreset", "sysreset",
                                 &sys_child);
-- 
2.55.0

Reply via email to