diff options
| -rw-r--r-- | board/nvidia/common/board.c | 52 | ||||
| -rw-r--r-- | board/nvidia/harmony/harmony.c | 56 | ||||
| -rw-r--r-- | board/nvidia/seaboard/seaboard.c | 53 | 
3 files changed, 109 insertions, 52 deletions
| diff --git a/board/nvidia/common/board.c b/board/nvidia/common/board.c index 370a25906..0f12de209 100644 --- a/board/nvidia/common/board.c +++ b/board/nvidia/common/board.c @@ -33,10 +33,6 @@  #include <asm/arch/uart.h>  #include "board.h" -#ifdef CONFIG_TEGRA2_MMC -#include <mmc.h> -#endif -  DECLARE_GLOBAL_DATA_PTR;  const struct tegra2_sysinfo sysinfo = { @@ -100,33 +96,6 @@ static void pin_mux_uart(void)  #endif	/* CONFIG_TEGRA2_ENABLE_UARTD */  } -#ifdef CONFIG_TEGRA2_MMC -/* - * Routine: pin_mux_mmc - * Description: setup the pin muxes/tristate values for the SDMMC(s) - */ -static void pin_mux_mmc(void) -{ -	/* SDMMC4: config 3, x8 on 2nd set of pins */ -	pinmux_set_func(PINGRP_ATB, PMUX_FUNC_SDIO4); -	pinmux_set_func(PINGRP_GMA, PMUX_FUNC_SDIO4); -	pinmux_set_func(PINGRP_GME, PMUX_FUNC_SDIO4); - -	pinmux_tristate_disable(PINGRP_ATB); -	pinmux_tristate_disable(PINGRP_GMA); -	pinmux_tristate_disable(PINGRP_GME); - -	/* SDMMC3: SDIO3_CLK, SDIO3_CMD, SDIO3_DAT[3:0] */ -	pinmux_set_func(PINGRP_SDB, PMUX_FUNC_SDIO3); -	pinmux_set_func(PINGRP_SDC, PMUX_FUNC_SDIO3); -	pinmux_set_func(PINGRP_SDD, PMUX_FUNC_SDIO3); - -	pinmux_tristate_disable(PINGRP_SDC); -	pinmux_tristate_disable(PINGRP_SDD); -	pinmux_tristate_disable(PINGRP_SDB); -} -#endif -  /*   * Routine: board_init   * Description: Early hardware init. @@ -142,27 +111,6 @@ int board_init(void)  	return 0;  } -#ifdef CONFIG_TEGRA2_MMC -/* this is a weak define that we are overriding */ -int board_mmc_init(bd_t *bd) -{ -	debug("board_mmc_init called\n"); -	/* Enable muxes, etc. for SDMMC controllers */ -	pin_mux_mmc(); -	gpio_config_mmc(); - -	debug("board_mmc_init: init eMMC\n"); -	/* init dev 0, eMMC chip, with 4-bit bus */ -	tegra2_mmc_init(0, 4); - -	debug("board_mmc_init: init SD slot\n"); -	/* init dev 1, SD slot, with 4-bit bus */ -	tegra2_mmc_init(1, 4); - -	return 0; -} -#endif -  #ifdef CONFIG_BOARD_EARLY_INIT_F  int board_early_init_f(void)  { diff --git a/board/nvidia/harmony/harmony.c b/board/nvidia/harmony/harmony.c index cbb30d630..f2c386725 100644 --- a/board/nvidia/harmony/harmony.c +++ b/board/nvidia/harmony/harmony.c @@ -24,9 +24,11 @@  #include <common.h>  #include <asm/io.h>  #include <asm/arch/tegra2.h> +#include <asm/arch/pinmux.h>  #ifdef CONFIG_TEGRA2_MMC  #include <mmc.h>  #endif +#include "../common/board.h"  /*   * Routine: gpio_config_uart @@ -38,6 +40,39 @@ void gpio_config_uart(void)  #ifdef CONFIG_TEGRA2_MMC  /* + * Routine: pin_mux_mmc + * Description: setup the pin muxes/tristate values for the SDMMC(s) + */ +static void pin_mux_mmc(void) +{ +	/* SDMMC4: config 3, x8 on 2nd set of pins */ +	pinmux_set_func(PINGRP_ATB, PMUX_FUNC_SDIO4); +	pinmux_set_func(PINGRP_GMA, PMUX_FUNC_SDIO4); +	pinmux_set_func(PINGRP_GME, PMUX_FUNC_SDIO4); + +	pinmux_tristate_disable(PINGRP_ATB); +	pinmux_tristate_disable(PINGRP_GMA); +	pinmux_tristate_disable(PINGRP_GME); + +	/* For power GPIO PI6 */ +	pinmux_tristate_disable(PINGRP_ATA); +	/* For CD GPIO PH2 */ +	pinmux_tristate_disable(PINGRP_ATD); + +	/* SDMMC2: SDIO2_CLK, SDIO2_CMD, SDIO2_DAT[7:0] */ +	pinmux_set_func(PINGRP_DTA, PMUX_FUNC_SDIO2); +	pinmux_set_func(PINGRP_DTD, PMUX_FUNC_SDIO2); + +	pinmux_tristate_disable(PINGRP_DTA); +	pinmux_tristate_disable(PINGRP_DTD); + +	/* For power GPIO PT3 */ +	pinmux_tristate_disable(PINGRP_DTB); +	/* For CD GPIO PI5 */ +	pinmux_tristate_disable(PINGRP_ATC); +} + +/*   * Routine: gpio_config_mmc   * Description: Set GPIOs for SD card   */ @@ -47,6 +82,27 @@ void gpio_config_mmc(void)  }  /* this is a weak define that we are overriding */ +int board_mmc_init(bd_t *bd) +{ +	debug("board_mmc_init called\n"); + +	/* Enable muxes, etc. for SDMMC controllers */ +	pin_mux_mmc(); +	gpio_config_mmc(); + +	debug("board_mmc_init: init SD slot J26\n"); +	/* init dev 0, SD slot J26, with 4-bit bus */ +	/* The board has an 8-bit bus, but 8-bit doesn't work yet */ +	tegra2_mmc_init(0, 4); + +	debug("board_mmc_init: init SD slot J5\n"); +	/* init dev 2, SD slot J5, with 4-bit bus */ +	tegra2_mmc_init(2, 4); + +	return 0; +} + +/* this is a weak define that we are overriding */  int board_mmc_getcd(u8 *cd, struct mmc *mmc)  {  	debug("board_mmc_getcd called\n"); diff --git a/board/nvidia/seaboard/seaboard.c b/board/nvidia/seaboard/seaboard.c index bc67d0f94..22a0e69f0 100644 --- a/board/nvidia/seaboard/seaboard.c +++ b/board/nvidia/seaboard/seaboard.c @@ -24,10 +24,12 @@  #include <common.h>  #include <asm/io.h>  #include <asm/arch/tegra2.h> +#include <asm/arch/pinmux.h>  #include <asm/gpio.h>  #ifdef CONFIG_TEGRA2_MMC  #include <mmc.h>  #endif +#include "../common/board.h"  /*   * Routine: gpio_config_uart @@ -56,6 +58,36 @@ void gpio_config_uart(void)  #ifdef CONFIG_TEGRA2_MMC  /* + * Routine: pin_mux_mmc + * Description: setup the pin muxes/tristate values for the SDMMC(s) + */ +static void pin_mux_mmc(void) +{ +	/* SDMMC4: config 3, x8 on 2nd set of pins */ +	pinmux_set_func(PINGRP_ATB, PMUX_FUNC_SDIO4); +	pinmux_set_func(PINGRP_GMA, PMUX_FUNC_SDIO4); +	pinmux_set_func(PINGRP_GME, PMUX_FUNC_SDIO4); + +	pinmux_tristate_disable(PINGRP_ATB); +	pinmux_tristate_disable(PINGRP_GMA); +	pinmux_tristate_disable(PINGRP_GME); + +	/* SDMMC3: SDIO3_CLK, SDIO3_CMD, SDIO3_DAT[3:0] */ +	pinmux_set_func(PINGRP_SDB, PMUX_FUNC_SDIO3); +	pinmux_set_func(PINGRP_SDC, PMUX_FUNC_SDIO3); +	pinmux_set_func(PINGRP_SDD, PMUX_FUNC_SDIO3); + +	pinmux_tristate_disable(PINGRP_SDC); +	pinmux_tristate_disable(PINGRP_SDD); +	pinmux_tristate_disable(PINGRP_SDB); + +	/* For power GPIO PI6 */ +	pinmux_tristate_disable(PINGRP_ATA); +	/* For CD GPIO PI5 */ +	pinmux_tristate_disable(PINGRP_ATC); +} + +/*   * Routine: gpio_config_mmc   * Description: Set GPIOs for SDMMC3 SDIO slot.   */ @@ -69,6 +101,27 @@ void gpio_config_mmc(void)  }  /* this is a weak define that we are overriding */ +int board_mmc_init(bd_t *bd) +{ +	debug("board_mmc_init called\n"); + +	/* Enable muxes, etc. for SDMMC controllers */ +	pin_mux_mmc(); +	gpio_config_mmc(); + +	debug("board_mmc_init: init eMMC\n"); +	/* init dev 0, eMMC chip, with 4-bit bus */ +	/* The board has an 8-bit bus, but 8-bit doesn't work yet */ +	tegra2_mmc_init(0, 4); + +	debug("board_mmc_init: init SD slot\n"); +	/* init dev 1, SD slot, with 4-bit bus */ +	tegra2_mmc_init(1, 4); + +	return 0; +} + +/* this is a weak define that we are overriding */  int board_mmc_getcd(u8 *cd, struct mmc *mmc)  {  	debug("board_mmc_getcd called\n"); |