diff options
| author | Tom Warren <twarren@nvidia.com> | 2013-02-26 12:26:55 -0700 | 
|---|---|---|
| committer | Tom Warren <twarren@nvidia.com> | 2013-03-14 11:06:44 -0700 | 
| commit | 190be1f9b74b0c8c2f1b2735774a6536758837af (patch) | |
| tree | 7e10f29ff2dc55ab098f0332151ca0bde8cdeb15 /board/nvidia/common/board.c | |
| parent | 38797bcb1f8306429409ca2831309342b77a2e37 (diff) | |
| download | olio-uboot-2014.01-190be1f9b74b0c8c2f1b2735774a6536758837af.tar.xz olio-uboot-2014.01-190be1f9b74b0c8c2f1b2735774a6536758837af.zip | |
Tegra30: MMC: Add SD bus power-rail and SDMMC pad init routines
T30 requires specific SDMMC pad programming, and bus power-rail bringup.
Signed-off-by: Tom Warren <twarren@nvidia.com>
Reviewed-by: Stephen Warren <swarren@nvidia.com>
Diffstat (limited to 'board/nvidia/common/board.c')
| -rw-r--r-- | board/nvidia/common/board.c | 31 | 
1 files changed, 30 insertions, 1 deletions
| diff --git a/board/nvidia/common/board.c b/board/nvidia/common/board.c index babbe08e0..7d9f361a8 100644 --- a/board/nvidia/common/board.c +++ b/board/nvidia/common/board.c @@ -49,6 +49,7 @@  #include <asm/arch-tegra/usb.h>  #endif  #ifdef CONFIG_TEGRA_MMC +#include <asm/arch-tegra/tegra_mmc.h>  #include <asm/arch-tegra/mmc.h>  #endif  #include <i2c.h> @@ -245,4 +246,32 @@ int board_mmc_init(bd_t *bd)  	return 0;  } -#endif + +void pad_init_mmc(struct mmc_host *host) +{ +#if defined(CONFIG_TEGRA30) +	enum periph_id id = host->mmc_id; +	u32 val; + +	debug("%s: sdmmc address = %08x, id = %d\n", __func__, +		(unsigned int)host->reg, id); + +	/* Set the pad drive strength for SDMMC1 or 3 only */ +	if (id != PERIPH_ID_SDMMC1 && id != PERIPH_ID_SDMMC3) { +		debug("%s: settings are only valid for SDMMC1/SDMMC3!\n", +			__func__); +		return; +	} + +	val = readl(&host->reg->sdmemcmppadctl); +	val &= 0xFFFFFFF0; +	val |= MEMCOMP_PADCTRL_VREF; +	writel(val, &host->reg->sdmemcmppadctl); + +	val = readl(&host->reg->autocalcfg); +	val &= 0xFFFF0000; +	val |= AUTO_CAL_PU_OFFSET | AUTO_CAL_PD_OFFSET | AUTO_CAL_ENABLED; +	writel(val, &host->reg->autocalcfg); +#endif	/* T30 */ +} +#endif	/* MMC */ |