[U-Boot] [PATCH] arm, davinci: make arch_cpu_init() in da850_lowlevel.c weak

Wolfgang Denk wd at denx.de
Wed Nov 9 11:12:17 CET 2011


Dear Christian Riesch,

In message <1320830586-19124-1-git-send-email-christian.riesch at omicron.at> you wrote:
> This patch allows replacing arch_cpu_init() if a custom initialization
> is required.
> 
> Signed-off-by: Christian Riesch <christian.riesch at omicron.at>
> Cc: Sandeep Paulraj <s-paulraj at ti.com>
> Cc: Heiko Schocher <hs at denx.de>
> ---
>  arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c |    1 +
>  1 files changed, 1 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c b/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c
> index 327ff97..fe142dc 100644
> --- a/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c
> +++ b/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c
> @@ -263,6 +263,7 @@ void nand_boot(void)
>  #if defined(CONFIG_NAND_SPL)
>  void board_init_f(ulong bootflag)
>  #else
> +__attribute__ ((weak))
>  int arch_cpu_init(void)
>  #endif

Stop please.

This whole code is crap and needs to be changed.


281         asm("mrc        p15, 0, r0, c1, c0, 0");
282         /* clear bits 13, 9:8 (--V- --RS) */
283         asm("bic        r0, r0, #0x00002300");
284         /* clear bits 7, 2:0 (B--- -CAM) */
285         asm("bic        r0, r0, #0x00000087");
286         /* set bit 2 (A) Align */
287         asm("orr        r0, r0, #0x00000002");
288         /* set bit 12 (I) I-Cache */
289         asm("orr        r0, r0, #0x00001000");
290         asm("mcr        p15, 0, r0, c1, c0, 0");

What is #0x00002300? #0x00000087? #0x00000002? #0x00001000?

293         writel(0x83e70b13, &davinci_syscfg_regs->kick0);
294         writel(0x95a4f1e0, &davinci_syscfg_regs->kick1);

What is 0x83e70b13? 0x95a4f1e0?

296         dv_maskbits(&davinci_syscfg_regs->suspsrc,
297                 ((1 << 27) | (1 << 22) | (1 << 20) | (1 << 5) | (1 << 16)));

What is ((1 << 27) | (1 << 22) | (1 << 20) | (1 << 5) | (1 << 16))) ?

336         /*
337          * Fix Power and Emulation Management Register
338          * see sprufw3a.pdf page 37 Table 24
339          */
340         writel(readl((CONFIG_SYS_NS16550_COM1 + 0x30)) | 0x00006001,
341                 (CONFIG_SYS_NS16550_COM1 + 0x30));

What is CONFIG_SYS_NS16550_COM1 + 0x30 ???? don't we have proper
NS16550 register definitions?  And what is 0x00006001 ??


All this needs a _thorough_ cleanup before I'm willing to accept this
for mainline.


Heiko, Christian: please negotiate who performs which part of the
cleanup. But I expect that with proper symbolic names instead of the
hardwired constants the need for a wek function will go away.

Albert, please make sure to block this current code. I do not want to
see this in mainline as is.


Thanks.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Another megabytes the dust.


More information about the U-Boot mailing list