[U-Boot] [PATCH V3 24/27] imx8m: soc: probe clock device in arch_cpu_init_dm

Patrick Wildt patrick at blueri.se
Thu Oct 10 22:35:01 UTC 2019


On Tue, Aug 27, 2019 at 06:25:58AM +0000, Peng Fan wrote:
> Because we need to get cpu freq in print_cpuinfo at very early stage,
> so we need to make sure the ccm be probed.
> 
> Signed-off-by: Peng Fan <peng.fan at nxp.com>
> ---
>  arch/arm/mach-imx/imx8m/soc.c | 17 +++++++++++++++++
>  1 file changed, 17 insertions(+)
> 
> diff --git a/arch/arm/mach-imx/imx8m/soc.c b/arch/arm/mach-imx/imx8m/soc.c
> index 3a54db4898..f904049120 100644
> --- a/arch/arm/mach-imx/imx8m/soc.c
> +++ b/arch/arm/mach-imx/imx8m/soc.c
> @@ -14,6 +14,7 @@
>  #include <asm/mach-imx/boot_mode.h>
>  #include <asm/mach-imx/syscounter.h>
>  #include <asm/armv8/mmu.h>
> +#include <dm/uclass.h>
>  #include <errno.h>
>  #include <fdt_support.h>
>  #include <fsl_wdog.h>
> @@ -228,6 +229,22 @@ static void imx_set_wdog_powerdown(bool enable)
>  	writew(enable, &wdog3->wmcr);
>  }
>  
> +int arch_cpu_init_dm(void)
> +{
> +	struct udevice *dev;
> +	int ret;
> +
> +	ret = uclass_get_device_by_name(UCLASS_CLK,
> +					"clock-controller at 30380000",
> +					&dev);
> +	if (ret < 0) {
> +		printf("Failed to find clock node. Check device tree\n");
> +		return ret;
> +	}
> +
> +	return 0;
> +}
> +
>  int arch_cpu_init(void)
>  {
>  	struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR;
> -- 
> 2.16.4
> 
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot

This commit broke my i.MX8MQ board.  This is because the i.MX8MQ does
not yet have a DM-based clock driver like i.MX8MM, so requiring the
existence of such uclass device breaks i.MX8MQ.  I would propse the
following commit, which make the whole function only available for
i.MX8MQ.

---

>From 644bf63ed0b33c499631be757de077f2059144e7 Mon Sep 17 00:00:00 2001
From: Patrick Wildt <patrick at blueri.se>
Date: Fri, 11 Oct 2019 00:28:38 +0200
Subject: [PATCH] imx: require CCM driver only on i.MX8MM

Since there is no clock driver like that for i.MX8MQ, we cannot
require it on that platform, so make sure it is only built for
i.MX8MM.

Signed-off-by: Patrick Wildt <patrick at blueri.se>
---
 arch/arm/mach-imx/imx8m/soc.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/arm/mach-imx/imx8m/soc.c b/arch/arm/mach-imx/imx8m/soc.c
index aeca82cdbf..11ca8c86b3 100644
--- a/arch/arm/mach-imx/imx8m/soc.c
+++ b/arch/arm/mach-imx/imx8m/soc.c
@@ -229,6 +229,7 @@ static void imx_set_wdog_powerdown(bool enable)
 	writew(enable, &wdog3->wmcr);
 }
 
+#ifdef CONFIG_ARCH_IMX8MM
 int arch_cpu_init_dm(void)
 {
 	struct udevice *dev;
@@ -244,6 +245,7 @@ int arch_cpu_init_dm(void)
 
 	return 0;
 }
+#endif
 
 int arch_cpu_init(void)
 {
-- 
2.23.0



More information about the U-Boot mailing list