
Hi Stefano and Peng,
There is an issue that prevents the imx8mn to boot in 2021.10-rc2. See the conversation below. Could you help with this?
-- Harm
-------- Forwarded Message -------- From: Simon Glass sjg@chromium.org To: Harm Berntsen harm.berntsen@nedap.com Cc: u-boot@lists.denx.de u-boot@lists.denx.de, trini@konsulko.com trini@konsulko.com Subject: Re: [PATCH v2 15/16] clk: Detect failure to set defaults Date: Fri, 20 Aug 2021 12:18:07 -0600
Hi Harm,
On Wed, 18 Aug 2021 at 08:09, Harm Berntsen harm.berntsen@nedap.com wrote:
On Thu, 2021-05-13 at 19:39 -0600, Simon Glass wrote:
When the default clocks cannot be set, the clock is silently probed and the error is ignored. This is incorrect, since having the clocks at the correct speed may be important for operation of the system.
Fix it by checking the return code.
Signed-off-by: Simon Glass sjg@chromium.org
(no changes since v1)
drivers/clk/clk-uclass.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/clk/clk-uclass.c b/drivers/clk/clk-uclass.c index 4ab3c402ed8..2a2e1cfbd61 100644 --- a/drivers/clk/clk-uclass.c +++ b/drivers/clk/clk-uclass.c @@ -796,13 +796,17 @@ void devm_clk_put(struct udevice *dev, struct clk *clk)
int clk_uclass_post_probe(struct udevice *dev) { + int ret;
/* * when a clock provider is probed. Call clk_set_defaults() * also after the device is probed. This takes care of cases * where the DT is used to setup default parents and rates * using assigned-clocks */ - clk_set_defaults(dev, 1); + ret = clk_set_defaults(dev, 1); + if (ret) + return log_ret(ret);
return 0; }
Note that this patch broke booting my imx8mn based board on U-Boot v2021.10-rc2. The failure is due to the clock-controller@30380000 configuration in the imx8mn.dtsi file. I had to remove the following clocks from the device tree to get my device to boot again (all from the assigned-clocks of clock-controller@30380000):
<&clk IMX8MN_CLK_A53_CORE>, <&clk IMX8MN_CLK_NOC>, <&clk IMX8MN_CLK_AUDIO_AHB>, <&clk IMX8MN_CLK_IPG_AUDIO_ROOT>, <&clk IMX8MN_SYS_PLL3>, <&clk IMX8MN_AUDIO_PLL1>, <&clk IMX8MN_AUDIO_PLL2>;
I looked into the clk-imx8mn.c code and I see that we indeed miss clocks there. Unfortunately I could not port code from the Linux kernel: we are missing the imx_clk_hw_mux2 function for the IMX8MN_CLK_A53_CORE clock. I did not look into the other clocks.
Perhaps the iMX maintainer could help with this? It does sound like a bug.
Regards, SImon
-- Harm