[U-Boot] [PATCH v2] Marvell Kirkwood family SOC support

Jean-Christophe PLAGNIOL-VILLARD plagnioj at jcrosoft.com
Sat Apr 18 09:23:41 CEST 2009


On 23:44 Fri 17 Apr     , Prafulla Wadaskar wrote:
> Hi Jean
> 
> Thanks for your review comments. 
> 
> > -----Original Message-----
> > From: Jean-Christophe PLAGNIOL-VILLARD [mailto:plagnioj at jcrosoft.com] 
> > Sent: Friday, April 17, 2009 2:52 PM
> > To: Prafulla Wadaskar
> > Cc: u-boot at lists.denx.de; Ashish Karkare; Ronen Shitrit
> > Subject: Re: [U-Boot] [PATCH v2] Marvell Kirkwood family SOC support
> > 
> > On 17:33 Wed 08 Apr     , Prafulla Wadaskar wrote:
> > > Kirkwood family controllers are highly integrated SOCs based on 
> > > Feroceon-88FR131/Sheeva-88SV131 cpu core.
> > > 
> > > SOC versions supported:-
> > > 1) 88F6281-Z0       define CONFIG_KW88F6281_Z0
> > > 2) 88F6281-A0       define CONFIG_KW88F6281_A0
> > > 3) 88F6192-A0       define CONFIG_KW88F6192_A0
> > > 
> > > Other supported features:-
> > > 1) get_random_hex() fucntion
> > > 2) SPI port controller driver
> > > 3) PCI Express port initialization
> > > +/*
> > > + * kw_sdram_bar - reads SDRAM Base Address Register  */
> > > +u32 kw_sdram_bar(MEMORY_BANK bank)
> > > +{
> > > +	u32 result = 0;
> > > +	u32 enable = (0x01 & KW_REG_READ((0x1504 + bank * 8)));
> > please create macro for these registers
> This will be taken care....
> > please use readx/writex (madatory)
> You mean instead of KW_REG_READ to be used readx() ?
readl I guess

take a look in include/arm-asm/io.h
> 
> > > +
> > > +void reset_cpu(unsigned long ignored) {
> > > +	KW_REG_BITS_SET(KW_REG_CPU_RSTOUTN_MASK, BIT2);
> > > +	KW_REG_BITS_SET(KW_REG_CPU_SYS_SOFT_RST, BIT0);
> > plase use readx/writex
> > everywhere
> Okay...
> 
> > > +
> > > +#if defined (CONFIG_KW88F6281_Z0)
> > > +	KW_REG_BITS_SET(0x1478, BIT7);
> > > +#elif defined (CONFIG_KW88F6281_A0) || defined 
> > (CONFIG_KW88F6192_A0)
> > could you detect it
> I should be able to detect it, I will check and update the same
> 
> > > +	/*
> > > +	 * in case of 88F6281/88F6192 A0,
> > > +	 * BIT7 need to reset to generate random values in 0x1470
> > > +	 */
> > > +	KW_REG_BITS_RESET(0x1478, BIT7);
> > please use macro everywhere instead of hardcode value
> Okay..
> 
> > > +
> > > +/*
> > > + * kw_window_ctrl_reg_init - Mbus-L to Mbus Bridge Registers init.
> > > + */
> > > +int kw_window_ctrl_reg_init(void)
> > > +{
> > coudl explain a few more what you do and try use macro 
> > instead of hardcode value
> Macros will be used..
> I will put the explaination in the comment for this function
> 
> > > +	KW_REG_WRITE(KW_REG_WIN_CTRL(0), 0x0fffe841);
> > > +	KW_REG_WRITE(KW_REG_WIN_BASE(0), 0x90000000);
> > > +	KW_REG_WRITE(KW_REG_WIN_REMAP_LOW(0), 0x90000000);
> > > +	KW_REG_WRITE(KW_REG_WIN_REMAP_HIGH(0), 0x00000000);
> > > +
> 
> > > +#ifndef __ASSEMBLY__
> > > +void reset_cpu(unsigned long ignored); unsigned char 
> > > +get_random_hex(void); typedef enum _memory_bank { BANK0, BANK1, 
> > > +BANK2, BANK3 } MEMORY_BANK;
> > please do not use upper case
> You mean MEMORY_BANK, right? I will change it
yes
> 
> 
> > > +		  (TICK_SMPL_1x3 << CCR_CPU_2_MBUSL_TICK_SMPL_OFFS))
> > > +#define CPU_2_MBUSL_DDR_CLK_1x4				
> > 		\
> > > +		 ((TICK_DRV_1x4  << 
> > CCR_CPU_2_MBUSL_TICK_DRV_OFFS) | 	\
> > > +		  (TICK_SMPL_1x4 << CCR_CPU_2_MBUSL_TICK_SMPL_OFFS))
> > > +
> > please move all this define to header corresponding of the 
> > functionallity/IP
> I thought these are only settings limited to this file only, any way I will create and move them to header file
> 
> > > +
> > > +	.globl kw_cpu_if_pre_init
> > > +kw_cpu_if_pre_init:
> > do you really need to do this before relocation
> Yes..
could add comment to explain why
> 
> > > +
> > > +        mov     r11, LR     		/* Save link register */
> > 	will you call a sub routine?
> I will do it?
> 
> > > +	.globl kw_enable_invalidate_l2_cache
> > > +kw_enable_invalidate_l2_cache:
> > > +        mov     r11, LR     	/* Save link register */
> > > +
> > > +	/* Enable L2 cache in write through mode */
> > > +	KW_REG_READ_ASM(r4, r1, KW_REG_CPU_L2_CONFIG)
> > please remove thhis KW_RED_READ_ASM
> > or do it via asm macro as we have done for sh2/3/4
> I will check this...
attached a first version of macro.h file for arm
> 
> 
> > > +
> > > +	/* invalidate L2 cache */
> > > +	mov	r0, #0
> > > +	mcr	p15, 1, r0, c15, c11, 0
> > please create a macro for this
> Okay...
> 
> > > +
> > > +        mov     PC, r11         /* r11 is saved link register */
> > > +
> > > +        .globl lowlevel_init
> > 
> > in this case call it arch_lowlevel_init
> > 
> > and update start.S to call it just be the lowlevel_init
> You mean to add support for arch_lowlevel_init, using some CONFIG_ option ?
yes
CONFIG_ARCH_LOWLEVEL_INIT

Best Regards,
J.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: macro.h
Type: text/x-chdr
Size: 1374 bytes
Desc: not available
Url : http://lists.denx.de/pipermail/u-boot/attachments/20090418/9678bb62/attachment-0001.h 


More information about the U-Boot mailing list