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 | u-boot-imx-190be1f9b74b0c8c2f1b2735774a6536758837af.zip u-boot-imx-190be1f9b74b0c8c2f1b2735774a6536758837af.tar.gz u-boot-imx-190be1f9b74b0c8c2f1b2735774a6536758837af.tar.bz2 |
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 babbe08..7d9f361 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 */ |