[U-Boot] [PATCH 4/6 v2] arm:exynos4:trats: Use pinmux for mmc configuration

Piotr Wilczek p.wilczek at samsung.com
Fri Aug 24 09:40:31 CEST 2012


Dear Jaehoon Chung,

> -----Original Message-----
> From: Jaehoon Chung [mailto:jh80.chung at samsung.com]
> Sent: Friday, August 24, 2012 3:18 AM
> To: Piotr Wilczek
> Cc: u-boot at lists.denx.de; Kyungmin Park
> Subject: Re: [U-Boot] [PATCH 4/6 v2] arm:exynos4:trats: Use pinmux for
> mmc configuration
> 
> On 08/23/2012 09:01 PM, Piotr Wilczek wrote:
> > This patch use the pinmux for mmc configuration for Trats
> >
> > Signed-off-by: Piotr Wilczek <p.wilczek at samsung.com>
> > Signed-off-by: Kyungmin Park <kyungmin.park at samsung.com>
> > CC: Minkyu Kang <mk7.kang at samsung.com>
> > ---
> > Chaneges for v2:
> > - mmc iniatialisation using pinmux
> >
> >  board/samsung/trats/trats.c |   62 +++++++--------------------------
> ---------
> >  1 files changed, 11 insertions(+), 51 deletions(-)
> >
> > diff --git a/board/samsung/trats/trats.c
> b/board/samsung/trats/trats.c
> > index f5df56c..0fab2e0 100644
> > --- a/board/samsung/trats/trats.c
> > +++ b/board/samsung/trats/trats.c
> > @@ -29,6 +29,7 @@
> >  #include <asm/arch/cpu.h>
> >  #include <asm/arch/gpio.h>
> >  #include <asm/arch/mmc.h>
> > +#include <asm/arch/pinmux.h>
> >  #include <asm/arch/clock.h>
> >  #include <asm/arch/clk.h>
> >  #include <asm/arch/mipi_dsim.h>
> > @@ -140,46 +141,16 @@ int board_mmc_init(bd_t *bis)  {
> >  	struct exynos4_gpio_part2 *gpio =
> >  		(struct exynos4_gpio_part2 *)samsung_get_base_gpio_part2();
> > -	int i, err;
> > +	int err;
> >
> >  	/* eMMC_EN: SD_0_CDn: GPK0[2] Output High */
> >  	s5p_gpio_direction_output(&gpio->k0, 2, 1);
> >  	s5p_gpio_set_pull(&gpio->k0, 2, GPIO_PULL_NONE);
> >
> > -	/*
> > -	 * eMMC GPIO:
> > -	 * SDR 8-bit at 48MHz at MMC0
> > -	 * GPK0[0]	SD_0_CLK(2)
> > -	 * GPK0[1]	SD_0_CMD(2)
> > -	 * GPK0[2]	SD_0_CDn	-> Not used
> > -	 * GPK0[3:6]	SD_0_DATA[0:3](2)
> > -	 * GPK1[3:6]	SD_0_DATA[0:3](3)
> > -	 *
> > -	 * DDR 4-bit at 26MHz at MMC4
> > -	 * GPK0[0]	SD_4_CLK(3)
> > -	 * GPK0[1]	SD_4_CMD(3)
> > -	 * GPK0[2]	SD_4_CDn	-> Not used
> > -	 * GPK0[3:6]	SD_4_DATA[0:3](3)
> > -	 * GPK1[3:6]	SD_4_DATA[4:7](4)
> > -	 */
> > -	for (i = 0; i < 7; i++) {
> > -		if (i == 2)
> > -			continue;
> > -		/* GPK0[0:6] special function 2 */
> > -		s5p_gpio_cfg_pin(&gpio->k0, i, 0x2);
> > -		/* GPK0[0:6] pull disable */
> > -		s5p_gpio_set_pull(&gpio->k0, i, GPIO_PULL_NONE);
> > -		/* GPK0[0:6] drv 4x */
> > -		s5p_gpio_set_drv(&gpio->k0, i, GPIO_DRV_4X);
> > -	}
> > -
> > -	for (i = 3; i < 7; i++) {
> > -		/* GPK1[3:6] special function 3 */
> > -		s5p_gpio_cfg_pin(&gpio->k1, i, 0x3);
> > -		/* GPK1[3:6] pull disable */
> > -		s5p_gpio_set_pull(&gpio->k1, i, GPIO_PULL_NONE);
> > -		/* GPK1[3:6] drv 4x */
> > -		s5p_gpio_set_drv(&gpio->k1, i, GPIO_DRV_4X);
> > +	err = exynos_pinmux_config(PERIPH_ID_SDMMC0,
> PINMUX_FLAG_8BIT_MODE);
> > +	if (err) {
> > +		debug("SDMMC0 not configured\n");
> > +		return err;
> >  	}
> if err, return? then how can sd-card init?
> SD/eMMC card didn't have the dependency.
exynos_pinmux_config() returns err only if given peripheral and/or mode (or
cpu) are not supported. Then gpio pins are not configured and MMC cannot be
initiated. Err is returned to indicate this situation and it is essential to
init MMC0 correctly.
The dependency didn't exist in trats nor universal but exists when pinmux is
used ex: smdk5250 board.

Best regards
Piotr Wilczek

> 
> Best Regards,
> Jaehoon Chung
> >
> >  	/*
> > @@ -198,23 +169,12 @@ int board_mmc_init(bd_t *bis)
> >  	 * GPX3[4] T-flash detect pin
> >  	 */
> >  	if (!s5p_gpio_get_value(&gpio->x3, 4)) {
> > -		/*
> > -		 * SD card GPIO:
> > -		 * GPK2[0]	SD_2_CLK(2)
> > -		 * GPK2[1]	SD_2_CMD(2)
> > -		 * GPK2[2]	SD_2_CDn	-> Not used
> > -		 * GPK2[3:6]	SD_2_DATA[0:3](2)
> > -		 */
> > -		for (i = 0; i < 7; i++) {
> > -			if (i == 2)
> > -				continue;
> > -			/* GPK2[0:6] special function 2 */
> > -			s5p_gpio_cfg_pin(&gpio->k2, i, 0x2);
> > -			/* GPK2[0:6] pull disable */
> > -			s5p_gpio_set_pull(&gpio->k2, i, GPIO_PULL_NONE);
> > -			/* GPK2[0:6] drv 4x */
> > -			s5p_gpio_set_drv(&gpio->k2, i, GPIO_DRV_4X);
> > +		err = exynos_pinmux_config(PERIPH_ID_SDMMC2,
> PINMUX_FLAG_NONE);
> > +		if (err) {
> > +			debug("SDMMC2 not configured\n");
> > +			return err;
> >  		}
> > +
> >  		err = s5p_mmc_init(2, 4);
> >  	}
> >
> >




More information about the U-Boot mailing list