[U-Boot] [PATCH v3 3/5] ls102xa: HYP/non-sec: support for ls102xa boards

Li.Xiubo at freescale.com Li.Xiubo at freescale.com
Fri Nov 14 10:06:13 CET 2014


Hi Albert,

> > +#if defined(CONFIG_ARMV7_NONSEC) || defined(CONFIG_ARMV7_VIRT)
> > +/* Setting the address at which secondary cores start from.*/
> > +void smp_set_core_boot_addr(unsigned long addr, int corenr)
> > +{
> > +	struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR);
> > +
> > +	/*
> > +	 * After setting the secondary cores start address,
> > +	 * just release them to boot.
> > +	 */
> > +	out_be32(&gur->scratchrw[0], addr);
> > +	out_be32(&gur->brrl, 0x2);
> > +}
> 
> This function does not exactly "[set] the address at which secondary
> cores start from"; it sets *a* secondary core's boot address, and then
> it *boots* it.
> 

Okay, I will fix it later.

> Why does this version of smp_set_core_boot_addr() need to boot the core
> in addition to setting the address, whereas the existing ones in
> virt_v7, vexpress_common and arndale don't boot the cores?
> 

Yes, they don't doing the release operation.

For Low Power Management requirement, maybe only one core will be used, and then
We also make sure that the secondary core must be in low power and deep sleep
mode(using wfi). So I just release it here, to make sure that the wfi instruction
will be executed as early as possible.

Thanks,

BRs,
Xiubo
   


> > +#endif
> > diff --git a/arch/arm/include/asm/arch-ls102xa/config.h
> b/arch/arm/include/asm/arch-ls102xa/config.h
> > index ed78c33..4856388 100644
> > --- a/arch/arm/include/asm/arch-ls102xa/config.h
> > +++ b/arch/arm/include/asm/arch-ls102xa/config.h
> > @@ -11,6 +11,8 @@
> >
> >  #define OCRAM_BASE_ADDR				0x10000000
> >  #define OCRAM_SIZE				0x00020000
> > +#define OCRAM_BASE_S_ADDR			0x10010000
> > +#define OCRAM_S_SIZE				0x00010000
> >
> >  #define CONFIG_SYS_IMMR				0x01000000
> >
> > diff --git a/arch/arm/include/asm/arch-ls102xa/immap_ls102xa.h
> b/arch/arm/include/asm/arch-ls102xa/immap_ls102xa.h
> > index 7995fe2..0bac353 100644
> > --- a/arch/arm/include/asm/arch-ls102xa/immap_ls102xa.h
> > +++ b/arch/arm/include/asm/arch-ls102xa/immap_ls102xa.h
> > @@ -17,6 +17,9 @@
> >  #define SOC_VER_LS1021		0x11
> >  #define SOC_VER_LS1022		0x12
> >
> > +#define CCSR_BRR_OFFSET		0xe4
> > +#define CCSR_SCRATCHRW1_OFFSET	0x200
> > +
> >  #define RCWSR0_SYS_PLL_RAT_SHIFT	25
> >  #define RCWSR0_SYS_PLL_RAT_MASK		0x1f
> >  #define RCWSR0_MEM_PLL_RAT_SHIFT	16
> > diff --git a/include/configs/ls1021aqds.h b/include/configs/ls1021aqds.h
> > index 657e3b6..6976cfa 100644
> > --- a/include/configs/ls1021aqds.h
> > +++ b/include/configs/ls1021aqds.h
> > @@ -324,6 +324,13 @@ unsigned long get_board_ddr_clk(void);
> >  #define CONFIG_CMDLINE_EDITING
> >  #define CONFIG_CMD_IMLS
> >
> > +#define CONFIG_ARMV7_NONSEC
> > +#define CONFIG_ARMV7_VIRT
> > +#define CONFIG_PEN_ADDR_BIG_ENDIAN
> > +#define CONFIG_SMP_PEN_ADDR		0x01ee0200
> > +#define CONFIG_TIMER_CLK_FREQ		12500000
> > +#define CONFIG_ARMV7_SECURE_BASE	OCRAM_BASE_S_ADDR
> > +
> >  #define CONFIG_HWCONFIG
> >  #define HWCONFIG_BUFFER_SIZE		128
> >
> > diff --git a/include/configs/ls1021atwr.h b/include/configs/ls1021atwr.h
> > index 45b2272..655b39a 100644
> > --- a/include/configs/ls1021atwr.h
> > +++ b/include/configs/ls1021atwr.h
> > @@ -227,6 +227,13 @@
> >  #define CONFIG_CMDLINE_EDITING
> >  #define CONFIG_CMD_IMLS
> >
> > +#define CONFIG_ARMV7_NONSEC
> > +#define CONFIG_ARMV7_VIRT
> > +#define CONFIG_PEN_ADDR_BIG_ENDIAN
> > +#define CONFIG_SMP_PEN_ADDR		0x01ee0200
> > +#define CONFIG_TIMER_CLK_FREQ		12500000
> > +#define CONFIG_ARMV7_SECURE_BASE	OCRAM_BASE_S_ADDR
> > +
> >  #define CONFIG_HWCONFIG
> >  #define HWCONFIG_BUFFER_SIZE		128
> >
> > --
> > 2.1.0.27.g96db324
> 
> 
> 
> Amicalement,
> --
> Albert.


More information about the U-Boot mailing list