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

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

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

Hi Stefano,
On Tue, 19 Sep 2017 09:54:30 +0200 Stefano Babic sbabic@denx.de wrote: ...
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 ?
Sorry for the build breakage, I didn't test with a full imx6 build. Yes, we shouldn't break bisection. I'll fix and resubmit. Thanks!
-- Anatolij

Hi Stefano,
On Tue, Sep 19, 2017 at 4:54 AM, Stefano Babic sbabic@denx.de wrote:
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.
Good catch, thanks!
Anatolij,
Do you plan to remove IPU code from SPL?
Thanks!

Hi Fabio,
On Wed, 20 Sep 2017 00:18:52 -0300 Fabio Estevam festevam@gmail.com wrote:
Hi Stefano,
On Tue, Sep 19, 2017 at 4:54 AM, Stefano Babic sbabic@denx.de wrote:
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.
Good catch, thanks!
Anatolij,
Do you plan to remove IPU code from SPL?
I think we can do it by
diff --git a/include/configs/wandboard.h b/include/configs/wandboard.h index 3ba4c29..b0f317b 100644 --- a/include/configs/wandboard.h +++ b/include/configs/wandboard.h @@ -63,6 +63,7 @@ #define CONFIG_PHY_ATHEROS
/* Framebuffer */ +#if !defined(CONFIG_SPL_BUILD) #ifdef CONFIG_VIDEO #define CONFIG_VIDEO_IPUV3 #define CONFIG_VIDEO_BMP_RLE8 @@ -74,6 +75,7 @@ #define CONFIG_IMX_HDMI #define CONFIG_IMX_VIDEO_SKIP #endif +#endif
#define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG #define CONFIG_EXTRA_ENV_SETTINGS \
I'll try to prepare a patch for other board configs later this week.
Thanks,
Anatolij

Hi Fabio, Anatolji,
just to save time : this is the list of boards that are affected by this problem.
cgtqmx6eval wandboard colibri_imx6 apalis_imx6 mx6cuboxi mx6sabresd imx6qdl_icore_rqs
A good solution is also if the board maintainers (I CCed all of them) could fix this and I will apply afterwards Anatolji's patch.
Best regards, Stefano
On 20/09/2017 13:22, Anatolij Gustschin wrote:
Hi Fabio,
On Wed, 20 Sep 2017 00:18:52 -0300 Fabio Estevam festevam@gmail.com wrote:
Hi Stefano,
On Tue, Sep 19, 2017 at 4:54 AM, Stefano Babic sbabic@denx.de wrote:
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.
Good catch, thanks!
Anatolij,
Do you plan to remove IPU code from SPL?
I think we can do it by
diff --git a/include/configs/wandboard.h b/include/configs/wandboard.h index 3ba4c29..b0f317b 100644 --- a/include/configs/wandboard.h +++ b/include/configs/wandboard.h @@ -63,6 +63,7 @@ #define CONFIG_PHY_ATHEROS
/* Framebuffer */ +#if !defined(CONFIG_SPL_BUILD) #ifdef CONFIG_VIDEO #define CONFIG_VIDEO_IPUV3 #define CONFIG_VIDEO_BMP_RLE8 @@ -74,6 +75,7 @@ #define CONFIG_IMX_HDMI #define CONFIG_IMX_VIDEO_SKIP #endif +#endif
#define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG #define CONFIG_EXTRA_ENV_SETTINGS \
I'll try to prepare a patch for other board configs later this week.
Thanks,
Anatolij

Hi
On Wed, 2017-09-20 at 15:04 +0200, Stefano Babic wrote:
Hi Fabio, Anatolji,
just to save time : this is the list of boards that are affected by this problem.
cgtqmx6eval wandboard
colibri_imx6 apalis_imx6
I will prepare a patch for these two. Max
mx6cuboxi mx6sabresd imx6qdl_icore_rqs
A good solution is also if the board maintainers (I CCed all of them) could fix this and I will apply afterwards Anatolji's patch.
Best regards, Stefano
On 20/09/2017 13:22, Anatolij Gustschin wrote:
Hi Fabio,
On Wed, 20 Sep 2017 00:18:52 -0300 Fabio Estevam festevam@gmail.com wrote:
Hi Stefano,
On Tue, Sep 19, 2017 at 4:54 AM, Stefano Babic sbabic@denx.de wrote:
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.
Good catch, thanks!
Anatolij,
Do you plan to remove IPU code from SPL?
I think we can do it by
diff --git a/include/configs/wandboard.h b/include/configs/wandboard.h index 3ba4c29..b0f317b 100644 --- a/include/configs/wandboard.h +++ b/include/configs/wandboard.h @@ -63,6 +63,7 @@ #define CONFIG_PHY_ATHEROS
/* Framebuffer */ +#if !defined(CONFIG_SPL_BUILD) #ifdef CONFIG_VIDEO #define CONFIG_VIDEO_IPUV3 #define CONFIG_VIDEO_BMP_RLE8 @@ -74,6 +75,7 @@ #define CONFIG_IMX_HDMI #define CONFIG_IMX_VIDEO_SKIP #endif +#endif
#define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG #define CONFIG_EXTRA_ENV_SETTINGS \
I'll try to prepare a patch for other board configs later this week.
Thanks,
Anatolij

Hi Anatolij,
On Wed, Sep 20, 2017 at 8:22 AM, Anatolij Gustschin agust@denx.de wrote:
I think we can do it by
diff --git a/include/configs/wandboard.h b/include/configs/wandboard.h index 3ba4c29..b0f317b 100644 --- a/include/configs/wandboard.h +++ b/include/configs/wandboard.h @@ -63,6 +63,7 @@ #define CONFIG_PHY_ATHEROS
/* Framebuffer */ +#if !defined(CONFIG_SPL_BUILD) #ifdef CONFIG_VIDEO #define CONFIG_VIDEO_IPUV3 #define CONFIG_VIDEO_BMP_RLE8 @@ -74,6 +75,7 @@ #define CONFIG_IMX_HDMI #define CONFIG_IMX_VIDEO_SKIP #endif +#endif
This solution still cause build failures for some boards.
I have a patch locally that avoids calling IPU from SPL code.
Will test it tomorrow and then will submit for all the affected boards.
Thanks

Hi Fabio,
On Fri, 22 Sep 2017 22:55:04 -0300 Fabio Estevam festevam@gmail.com wrote: ...
/* Framebuffer */ +#if !defined(CONFIG_SPL_BUILD) #ifdef CONFIG_VIDEO #define CONFIG_VIDEO_IPUV3 #define CONFIG_VIDEO_BMP_RLE8 @@ -74,6 +75,7 @@ #define CONFIG_IMX_HDMI #define CONFIG_IMX_VIDEO_SKIP #endif +#endif
This solution still cause build failures for some boards.
I have a patch locally that avoids calling IPU from SPL code.
Will test it tomorrow and then will submit for all the affected boards.
Thanks!
-- Anatolij
participants (4)
-
Anatolij Gustschin
-
Fabio Estevam
-
Max Krummenacher
-
Stefano Babic