[U-Boot] [PATCH 2/4] efikamx: remove drive strength function and roll its functionality into the DCD

Stefano Babic sbabic at denx.de
Thu Aug 23 12:20:00 CEST 2012


On 22/08/2012 21:25, Matt Sealey wrote:
> Efika MX boards configure their DDR pad settings twice, one in the DCD generated
> from imximage_*.cfg and again in init_drive_strength called before relocation.
> 
> Rather than doing this, roll the changes it makes into the DCD so DDR is set up
> before a single line of code in U-Boot is run.
> 
> The settings are identical with this DCD block which is shorter (by 7 entries)
> than the old one, and after the output of init_drive_strength since a lot of the
> functionality in the existing DCD and init_drive_strength function was just
> setting the POR defaults. This goes to explain some now-missing entries.
> 
> Several hundred rounds of mtest have been run to test the settings before and
> after to confirm DDR is stable and no ill-effects have been found.
> 
> Signed-off-by: Matt Sealey <matt at genesi-usa.com>
> ---
>  board/genesi/mx51_efikamx/efikamx.c       |   77 -----------------------------
>  board/genesi/mx51_efikamx/imximage_mx.cfg |   42 +++++++---------
>  2 files changed, 18 insertions(+), 101 deletions(-)
> 
> diff --git a/board/genesi/mx51_efikamx/efikamx.c b/board/genesi/mx51_efikamx/efikamx.c
> index e88b2ed..12371c9 100644
> --- a/board/genesi/mx51_efikamx/efikamx.c
> +++ b/board/genesi/mx51_efikamx/efikamx.c
> @@ -597,85 +597,8 @@ void efikamx_toggle_led(uint32_t mask)
>  /*
>   * Board initialization
>   */
> -static void init_drive_strength(void)
> -{
> -	mxc_iomux_set_pad(MX51_PIN_CTL_GRP_PKEDDR, PAD_CTL_DDR_INPUT_CMOS);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_GRP_PKEADDR, PAD_CTL_PKE_ENABLE);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_GRP_DDRAPKS, PAD_CTL_PUE_KEEPER);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_GRP_DDRAPUS, PAD_CTL_100K_PU);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_GRP_DDR_SR_A1, PAD_CTL_SRE_FAST);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_GRP_DDR_A0, PAD_CTL_DRV_HIGH);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_GRP_DDR_A1, PAD_CTL_DRV_HIGH);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_DRAM_RAS,
> -		PAD_CTL_DRV_HIGH | PAD_CTL_SRE_FAST);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_DRAM_CAS,
> -		PAD_CTL_DRV_HIGH | PAD_CTL_SRE_FAST);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_GRP_PKEDDR, PAD_CTL_PKE_ENABLE);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_GRP_DDRPKS, PAD_CTL_PUE_KEEPER);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_GRP_HYSDDR0, PAD_CTL_HYS_NONE);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_GRP_HYSDDR1, PAD_CTL_HYS_NONE);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_GRP_HYSDDR2, PAD_CTL_HYS_NONE);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_GRP_HYSDDR3, PAD_CTL_HYS_NONE);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_GRP_DDR_SR_B0, PAD_CTL_SRE_FAST);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_GRP_DDR_SR_B1, PAD_CTL_SRE_FAST);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_GRP_DDR_SR_B2, PAD_CTL_SRE_FAST);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_GRP_DDR_SR_B4, PAD_CTL_SRE_FAST);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_GRP_DDRPUS, PAD_CTL_100K_PU);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_GRP_INMODE1, PAD_CTL_DDR_INPUT_CMOS);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_GRP_DRAM_B0, PAD_CTL_DRV_MEDIUM);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_GRP_DRAM_B1, PAD_CTL_DRV_MEDIUM);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_GRP_DRAM_B2, PAD_CTL_DRV_MEDIUM);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_GRP_DRAM_B4, PAD_CTL_DRV_MEDIUM);
> -
> -	/* Setting pad options */
> -	mxc_iomux_set_pad(MX51_PIN_CTL_DRAM_SDWE,
> -		PAD_CTL_PKE_ENABLE | PAD_CTL_PUE_KEEPER |
> -		PAD_CTL_DRV_HIGH | PAD_CTL_SRE_FAST);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_DRAM_SDCKE0,
> -		PAD_CTL_PKE_ENABLE | PAD_CTL_PUE_KEEPER |
> -		PAD_CTL_DRV_HIGH | PAD_CTL_SRE_FAST);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_DRAM_SDCKE1,
> -		PAD_CTL_PKE_ENABLE | PAD_CTL_PUE_KEEPER |
> -		PAD_CTL_DRV_HIGH | PAD_CTL_SRE_FAST);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_DRAM_SDCLK,
> -		PAD_CTL_PKE_ENABLE | PAD_CTL_PUE_KEEPER |
> -		PAD_CTL_DRV_HIGH | PAD_CTL_SRE_FAST);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_DRAM_SDQS0,
> -		PAD_CTL_PKE_ENABLE | PAD_CTL_PUE_KEEPER |
> -		PAD_CTL_DRV_HIGH | PAD_CTL_SRE_FAST);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_DRAM_SDQS1,
> -		PAD_CTL_PKE_ENABLE | PAD_CTL_PUE_KEEPER |
> -		PAD_CTL_DRV_HIGH | PAD_CTL_SRE_FAST);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_DRAM_SDQS2,
> -		PAD_CTL_PKE_ENABLE | PAD_CTL_PUE_KEEPER |
> -		PAD_CTL_DRV_HIGH | PAD_CTL_SRE_FAST);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_DRAM_SDQS3,
> -		PAD_CTL_PKE_ENABLE | PAD_CTL_PUE_KEEPER |
> -		PAD_CTL_DRV_HIGH | PAD_CTL_SRE_FAST);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_DRAM_CS0,
> -		PAD_CTL_PKE_ENABLE | PAD_CTL_PUE_KEEPER |
> -		PAD_CTL_DRV_HIGH | PAD_CTL_SRE_FAST);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_DRAM_CS1,
> -		PAD_CTL_PKE_ENABLE | PAD_CTL_PUE_KEEPER |
> -		PAD_CTL_DRV_HIGH | PAD_CTL_SRE_FAST);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_DRAM_DQM0,
> -		PAD_CTL_PKE_ENABLE | PAD_CTL_PUE_KEEPER |
> -		PAD_CTL_DRV_HIGH | PAD_CTL_SRE_FAST);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_DRAM_DQM1,
> -		PAD_CTL_PKE_ENABLE | PAD_CTL_PUE_KEEPER |
> -		PAD_CTL_DRV_HIGH | PAD_CTL_SRE_FAST);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_DRAM_DQM2,
> -		PAD_CTL_PKE_ENABLE | PAD_CTL_PUE_KEEPER |
> -		PAD_CTL_DRV_HIGH | PAD_CTL_SRE_FAST);
> -	mxc_iomux_set_pad(MX51_PIN_CTL_DRAM_DQM3,
> -		PAD_CTL_PKE_ENABLE | PAD_CTL_PUE_KEEPER |
> -		PAD_CTL_DRV_HIGH | PAD_CTL_SRE_FAST);
> -}
> -
>  int board_early_init_f(void)
>  {
> -	init_drive_strength();
> -
>  	setup_iomux_uart();
>  	setup_iomux_spi();
>  	setup_iomux_led();
> diff --git a/board/genesi/mx51_efikamx/imximage_mx.cfg b/board/genesi/mx51_efikamx/imximage_mx.cfg
> index 6fe0ff9..ea6b271 100644
> --- a/board/genesi/mx51_efikamx/imximage_mx.cfg
> +++ b/board/genesi/mx51_efikamx/imximage_mx.cfg
> @@ -1,5 +1,7 @@
>  #
> +# Copyright (C) 2009 Pegatron Corporation
>  # Copyright (C) 2010 Marek Vasut <marek.vasut at gmail.com>
> +# Copyright (C) 2009-2012 Genesi USA, Inc.
>  #
>  # BASED ON: imx51evk
>  #
> @@ -43,30 +45,22 @@ BOOT_FROM	spi
>  #	Address	  absolute address of the register
>  #	value	  value to be stored in the register
>  
> -# Setting IOMUXC
> -DATA 4 0x73fa88a0 0x000
> -DATA 4 0x73fa850c 0x20c5
> -DATA 4 0x73fa8510 0x20c5
> -DATA 4 0x73fa883c 0x5
> -DATA 4 0x73fa8848 0x5
> -DATA 4 0x73fa84b8 0xe7
> -DATA 4 0x73fa84bc 0x45
> -DATA 4 0x73fa84c0 0x45
> -DATA 4 0x73fa84c4 0x45
> -DATA 4 0x73fa84c8 0x45
> -DATA 4 0x73fa8820 0x0
> -DATA 4 0x73fa84a4 0x5
> -DATA 4 0x73fa84a8 0x5
> -DATA 4 0x73fa84ac 0xe5
> -DATA 4 0x73fa84b0 0xe5
> -DATA 4 0x73fa84b4 0xe5
> -DATA 4 0x73fa84cc 0xe5
> -DATA 4 0x73fa84d0 0xe4
> -
> -DATA 4 0x73fa882c 0x4
> -DATA 4 0x73fa88a4 0x4
> -DATA 4 0x73fa88ac 0x4
> -DATA 4 0x73fa88b8 0x4
> +# DDR bus IOMUX PAD settings
> +DATA 4 0x73fa850c 0x20c5		# SDODT1
> +DATA 4 0x73fa8510 0x20c5		# SDODT0
> +DATA 4 0x73fa84ac 0xc5			# SDWE
> +DATA 4 0x73fa84b0 0xc5			# SDCKE0
> +DATA 4 0x73fa84b4 0xc5			# SDCKE1
> +DATA 4 0x73fa84cc 0xc5			# DRAM_CS0
> +DATA 4 0x73fa84d0 0xc5			# DRAM_CS1
> +DATA 4 0x73fa882c 0x2			# DRAM_B4
> +DATA 4 0x73fa88a4 0x2			# DRAM_B0
> +DATA 4 0x73fa88ac 0x2			# DRAM_B1
> +DATA 4 0x73fa88b8 0x2			# DRAM_B2
> +DATA 4 0x73fa84d4 0xc5			# DRAM_DQM0
> +DATA 4 0x73fa84d8 0xc5			# DRAM_DQM1
> +DATA 4 0x73fa84dc 0xc5			# DRAM_DQM2
> +DATA 4 0x73fa84e0 0xc5			# DRAM_DQM3
>  
>  # Setting DDR for micron
>  # 13 Rows, 10 Cols, 32 bit, SREF=4 Micron Model
> 

Acked-by: Stefano Babic <sbabic at denx.de>

Best regards,
Stefano Babic

-- 
=====================================================================
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================


More information about the U-Boot mailing list