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

Schrempf Frieder frieder.schrempf at kontron.de
Thu Aug 29 05:47:43 UTC 2019


On 29.08.19 03:21, Peng Fan wrote:
> Hi Frieder,
> 
>> Subject: Re: [PATCH V3 24/27] imx8m: soc: probe clock device in
>> arch_cpu_init_dm
>>
>> Hi Peng,
>>
>> On 27.08.19 08:25, 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);
>>
>> I just upgraded my working tree to v2019.10-rc3 + your v3 MX8MM patches.
>> This somehow breaks things for me. The U-Boot proper hangs when calling
>> uclass_get_device_by_name(). Removing this call makes the boot work again.
>> Do you have any idea what could be wrong? Do I miss something?
> 
> Please enlarge CONFIG_SYS_MALLOC_F_LEN to 0x10000 and have a try.

That did the trick. Thanks a lot!

> 
> Regards,
> Peng.
> 
>>
>> Thanks,
>> Frieder
>>
>>> +	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;
>>>


More information about the U-Boot mailing list