diff options
| author | Tom Rini <trini@ti.com> | 2013-03-18 12:31:00 -0400 | 
|---|---|---|
| committer | Tom Rini <trini@ti.com> | 2013-03-18 14:37:18 -0400 | 
| commit | 0ce033d2582129243aca10d3072a221386bbba44 (patch) | |
| tree | 6e50a3f4eed22007549dc740d0fa647a6c8cec5b /board/nvidia/common/board.c | |
| parent | b5bec88434adb52413f1bc33fa63d7642cb8fd35 (diff) | |
| parent | b27673ccbd3d5435319b5c09c3e7061f559f925d (diff) | |
| download | olio-uboot-2014.01-0ce033d2582129243aca10d3072a221386bbba44.tar.xz olio-uboot-2014.01-0ce033d2582129243aca10d3072a221386bbba44.zip | |
Merge branch 'master' of git://git.denx.de/u-boot-arm
Albert's rework of the linker scripts conflicted with Simon's making
everyone use __bss_end.  We also had a minor conflict over
README.scrapyard being added to in mainline and enhanced in
u-boot-arm/master with proper formatting.
Conflicts:
	arch/arm/cpu/ixp/u-boot.lds
	arch/arm/cpu/u-boot.lds
	arch/arm/lib/Makefile
	board/actux1/u-boot.lds
	board/actux2/u-boot.lds
	board/actux3/u-boot.lds
	board/dvlhost/u-boot.lds
	board/freescale/mx31ads/u-boot.lds
	doc/README.scrapyard
	include/configs/tegra-common.h
Build tested for all of ARM and run-time tested on am335x_evm.
Signed-off-by: Tom Rini <trini@ti.com>
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 */ |