diff options
| author | Albert ARIBAUD <albert.u.boot@aribaud.net> | 2013-03-15 20:50:43 +0100 | 
|---|---|---|
| committer | Albert ARIBAUD <albert.u.boot@aribaud.net> | 2013-03-15 20:50:43 +0100 | 
| commit | b27673ccbd3d5435319b5c09c3e7061f559f925d (patch) | |
| tree | 24c58f5a1e950ec107f40690032ac89c62d3ad83 /board/nvidia/common/board.c | |
| parent | 6579d15c58e2b6b051f126ea8b77dd767252aa14 (diff) | |
| parent | 477393e7875cf4261f107fdfb8887309ea7fc3f7 (diff) | |
| download | olio-uboot-2014.01-b27673ccbd3d5435319b5c09c3e7061f559f925d.tar.xz olio-uboot-2014.01-b27673ccbd3d5435319b5c09c3e7061f559f925d.zip | |
Merge branch 'u-boot-tegra/master' into 'u-boot-arm/master'
Diffstat (limited to 'board/nvidia/common/board.c')
| -rw-r--r-- | board/nvidia/common/board.c | 56 | 
1 files changed, 55 insertions, 1 deletions
| diff --git a/board/nvidia/common/board.c b/board/nvidia/common/board.c index d1d8a29cb..7d9f361a8 100644 --- a/board/nvidia/common/board.c +++ b/board/nvidia/common/board.c @@ -46,7 +46,11 @@  #include <asm/arch/emc.h>  #endif  #ifdef CONFIG_USB_EHCI_TEGRA -#include <asm/arch/usb.h> +#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>  #include <spi.h> @@ -221,3 +225,53 @@ int board_late_init(void)  #endif  	return 0;  } + +#if defined(CONFIG_TEGRA_MMC) +void __pin_mux_mmc(void) +{ +} + +void pin_mux_mmc(void) __attribute__((weak, alias("__pin_mux_mmc"))); + +/* this is a weak define that we are overriding */ +int board_mmc_init(bd_t *bd) +{ +	debug("%s called\n", __func__); + +	/* Enable muxes, etc. for SDMMC controllers */ +	pin_mux_mmc(); + +	debug("%s: init MMC\n", __func__); +	tegra_mmc_init(); + +	return 0; +} + +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 */ |