[U-Boot] [PATCH] imx6: disable clock command and print_cpuinfo code in SPL

Stefano Babic
2017-09-19T07:54:30Z

Hi Anatolji,

On 28/08/2017 21:46, Anatolij Gustschin wrote:
> We do not use print_cpuinfo and clock command code in SPL,
> disable it when building SPL image.
>
> Signed-off-by: Anatolij Gustschin <agust@denx.de>
> ---
> arch/arm/mach-imx/cpu.c | 4 ++--
> arch/arm/mach-imx/mx6/clock.c | 30 ++++++++++++++++--------------
> 2 files changed, 18 insertions(+), 16 deletions(-)
>
> diff --git a/arch/arm/mach-imx/cpu.c b/arch/arm/mach-imx/cpu.c
> index 1017eb8..18205dc 100644
> --- a/arch/arm/mach-imx/cpu.c
> +++ b/arch/arm/mach-imx/cpu.c
> @@ -25,7 +25,7 @@
> #include <fsl_esdhc.h>
> #endif
>
> -#if defined(CONFIG_DISPLAY_CPUINFO)
> +#if defined(CONFIG_DISPLAY_CPUINFO) && !defined(CONFIG_SPL_BUILD)
> static u32 reset_cause = -1;
>
> static char *get_reset_cause(void)
> @@ -132,7 +132,7 @@ unsigned imx_ddr_size(void)
> }
> #endif
>
> -#if defined(CONFIG_DISPLAY_CPUINFO)
> +#if defined(CONFIG_DISPLAY_CPUINFO) && !defined(CONFIG_SPL_BUILD)
>
> const char *get_imx_type(u32 imxtype)
> {
> diff --git a/arch/arm/mach-imx/mx6/clock.c b/arch/arm/mach-imx/mx6/clock.c
> index 0e019c4..71a9e6b 100644
> --- a/arch/arm/mach-imx/mx6/clock.c
> +++ b/arch/arm/mach-imx/mx6/clock.c
> @@ -1220,6 +1220,20 @@ void enable_thermal_clk(void)
> enable_pll3();
> }
>
> +#ifdef CONFIG_MTD_NOR_FLASH
> +void enable_eim_clk(unsigned char enable)
> +{
> + u32 reg;
> +
> + reg = __raw_readl(&imx_ccm->CCGR6);
> + if (enable)
> + reg |= MXC_CCM_CCGR6_EMI_SLOW_MASK;
> + else
> + reg &= ~MXC_CCM_CCGR6_EMI_SLOW_MASK;
> + __raw_writel(reg, &imx_ccm->CCGR6);
> +}
> +#endif
> +
> unsigned int mxc_get_clock(enum mxc_clock clk)
> {
> switch (clk) {
> @@ -1262,6 +1276,7 @@ unsigned int mxc_get_clock(enum mxc_clock clk)
> return 0;
> }
>
> +#ifndef CONFIG_SPL_BUILD
> /*
> * Dump some core clockes.
> */
> @@ -1463,20 +1478,6 @@ void select_ldb_di_clock_source(enum ldb_di_clock clk)
> }
> #endif
>
> -#ifdef CONFIG_MTD_NOR_FLASH
> -void enable_eim_clk(unsigned char enable)
> -{
> - u32 reg;
> -
> - reg = __raw_readl(&imx_ccm->CCGR6);
> - if (enable)
> - reg |= MXC_CCM_CCGR6_EMI_SLOW_MASK;
> - else
> - reg &= ~MXC_CCM_CCGR6_EMI_SLOW_MASK;
> - __raw_writel(reg, &imx_ccm->CCGR6);
> -}
> -#endif
> -
> /***************************************************/
>
> U_BOOT_CMD(
> @@ -1484,3 +1485,4 @@ U_BOOT_CMD(
> "display clocks",
> ""
> );
> +#endif
>

This patch has some side-effects and breaks some boards. Even if the
changes are correct, some boards (wandboard, icore are examples) don't
disable IPU support in SPL. Even if this is useless and generates only a
bigger footprint.

In fact, I get :

arm: + wandboard
+board/wandboard/built-in.o: In function `setup_display':
+board/wandboard/wandboard.c:355: undefined reference to `enable_ipu_clock'
+make[2]: *** [spl/u-boot-spl] Error 1
+make[1]: *** [spl/u-boot-spl] Error 2
+make: *** [sub-make] Error 2

Reason is clear: boards have in SPL a setup_display() that calls
enable_ipu_clock. But it makes no sense to have IPU support in SPL.

We can fix with a follow-up patch, but this is bad for bisecting. The
other option is to fix here and disable IPU in spl for the affected
boards. What you think ?

Best regards,
Stefano

--
=====================================================================
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================