[U-Boot] [PATCH] Fixed ordering of MDDRC config registers to unbreak mpc5121ads patch

Wolfgang Denk wd at denx.de
Fri Sep 25 15:21:55 CEST 2009


Dear Martha M Stan,

In message <12538848343158-git-send-email-mmarx at silicontkx.com> you wrote:
> Signed-off-by: Martha M Stan <mmarx at silicontkx.com>
> ---
>  cpu/mpc512x/fixed_sdram.c |   23 +++++++++++++++--------
>  1 files changed, 15 insertions(+), 8 deletions(-)
> 
> diff --git a/cpu/mpc512x/fixed_sdram.c b/cpu/mpc512x/fixed_sdram.c
> index 673d61e..7617e31 100644
> --- a/cpu/mpc512x/fixed_sdram.c
> +++ b/cpu/mpc512x/fixed_sdram.c
> @@ -26,13 +26,14 @@
>  #include <asm/mpc512x.h>
>  
>  /*
> - * MDDRC Config Runtime Settings in order of the 4 MDDRC cfg registers
> + * MDDRC Config Runtime Settings in MEMORY order of the 4 MDDRC cfg registers
>   */
>  u32 default_mddrc_config[4] = {
> +	CONFIG_SYS_MDDRC_SYS_CFG,	/* sys_config	*/
>  	CONFIG_SYS_MDDRC_TIME_CFG0,	/* time_config0 */
>  	CONFIG_SYS_MDDRC_TIME_CFG1,	/* time_config1 */
>  	CONFIG_SYS_MDDRC_TIME_CFG2,	/* time_config2 */
> -	CONFIG_SYS_MDDRC_SYS_CFG,	/* sys_config	*/
> +
>  };

This is an array of u32.

>  u32 default_init_seq[] = {
> @@ -79,6 +80,7 @@ long int fixed_sdram(u32 *mddrc_config, u32 *dram_init_seq, int seq_sz)
>  	volatile immap_t *im = (immap_t *)CONFIG_SYS_IMMR;
>  	u32 msize = CONFIG_SYS_DDR_SIZE * 1024 * 1024;
>  	u32 msize_log2 = __ilog2(msize);
> +	struct ddr512x_t *ddr_cfg_4regs; 

And this is (a pointer to) a struct with u32 entries.

> +	/* using struct's first 4 regs only */
> +	mddrc_4regs = (struct ddr512x_t *)mddrc_config; 

What gives you the guarantee that the struct and the array use the
same padding / alignment?

This is extremely bad style. If you want to use a struct, then please
declare one, and refer to indivisual elements through their names. You
could also turn default_mddrc_config into s "struct ddr512x_t" and
just initialize the first 4 elements, but note that the memory
footprint will go up significantly.

NAK for this code.

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
You have the capacity to learn from  mistakes.  You'll  learn  a  lot
today.


More information about the U-Boot mailing list