Skip to content
Snippets Groups Projects
Commit ae03661f authored by Stephen Warren's avatar Stephen Warren Committed by Albert ARIBAUD
Browse files

tegra2: Move board_mmc_init into board files


For Seaboard, this is mostly a cut/paste of board_mmc_init() and
pin_mux_mmc() into seaboard.c; pin_mux_mmc() was modified to add some
missing pinmux_tristate_disable calls for the GPIOs.

For Harmony, those functions were modified to configure SDMMC2 (index 2)
instead of SDMMC3 (index 1), since that's what is present on the board.

However, harmony.c is still missing the required GPIO setup, so neither
port is likely to function correctly yet.  This will be fixed in the next
change.

v4: Include board.h to prototype tegra2_mmc_init().

Signed-off-by: default avatarStephen Warren <swarren@nvidia.com>
Tested-by: default avatarSimon Glass <sjg@chromium.org>
Acked-by: default avatarSimon Glass <sjg@chromium.org>
Signed-off-by: default avatarTom Warren <twarren@nvidia.com>
parent c4eba6ec
No related branches found
No related tags found
No related merge requests found
...@@ -33,10 +33,6 @@ ...@@ -33,10 +33,6 @@
#include <asm/arch/uart.h> #include <asm/arch/uart.h>
#include "board.h" #include "board.h"
#ifdef CONFIG_TEGRA2_MMC
#include <mmc.h>
#endif
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
const struct tegra2_sysinfo sysinfo = { const struct tegra2_sysinfo sysinfo = {
...@@ -100,33 +96,6 @@ static void pin_mux_uart(void) ...@@ -100,33 +96,6 @@ static void pin_mux_uart(void)
#endif /* CONFIG_TEGRA2_ENABLE_UARTD */ #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 * Routine: board_init
* Description: Early hardware init. * Description: Early hardware init.
...@@ -142,27 +111,6 @@ int board_init(void) ...@@ -142,27 +111,6 @@ int board_init(void)
return 0; 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 #ifdef CONFIG_BOARD_EARLY_INIT_F
int board_early_init_f(void) int board_early_init_f(void)
{ {
......
...@@ -24,9 +24,11 @@ ...@@ -24,9 +24,11 @@
#include <common.h> #include <common.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/arch/tegra2.h> #include <asm/arch/tegra2.h>
#include <asm/arch/pinmux.h>
#ifdef CONFIG_TEGRA2_MMC #ifdef CONFIG_TEGRA2_MMC
#include <mmc.h> #include <mmc.h>
#endif #endif
#include "../common/board.h"
/* /*
* Routine: gpio_config_uart * Routine: gpio_config_uart
...@@ -37,6 +39,39 @@ void gpio_config_uart(void) ...@@ -37,6 +39,39 @@ void gpio_config_uart(void)
} }
#ifdef CONFIG_TEGRA2_MMC #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 * Routine: gpio_config_mmc
* Description: Set GPIOs for SD card * Description: Set GPIOs for SD card
...@@ -46,6 +81,27 @@ void gpio_config_mmc(void) ...@@ -46,6 +81,27 @@ void gpio_config_mmc(void)
/* Not implemented for now */ /* Not implemented for now */
} }
/* 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 */ /* this is a weak define that we are overriding */
int board_mmc_getcd(u8 *cd, struct mmc *mmc) int board_mmc_getcd(u8 *cd, struct mmc *mmc)
{ {
......
...@@ -24,10 +24,12 @@ ...@@ -24,10 +24,12 @@
#include <common.h> #include <common.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/arch/tegra2.h> #include <asm/arch/tegra2.h>
#include <asm/arch/pinmux.h>
#include <asm/gpio.h> #include <asm/gpio.h>
#ifdef CONFIG_TEGRA2_MMC #ifdef CONFIG_TEGRA2_MMC
#include <mmc.h> #include <mmc.h>
#endif #endif
#include "../common/board.h"
/* /*
* Routine: gpio_config_uart * Routine: gpio_config_uart
...@@ -55,6 +57,36 @@ void gpio_config_uart(void) ...@@ -55,6 +57,36 @@ void gpio_config_uart(void)
} }
#ifdef CONFIG_TEGRA2_MMC #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 * Routine: gpio_config_mmc
* Description: Set GPIOs for SDMMC3 SDIO slot. * Description: Set GPIOs for SDMMC3 SDIO slot.
...@@ -68,6 +100,27 @@ void gpio_config_mmc(void) ...@@ -68,6 +100,27 @@ void gpio_config_mmc(void)
gpio_direction_input(GPIO_PI5); gpio_direction_input(GPIO_PI5);
} }
/* 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 */ /* this is a weak define that we are overriding */
int board_mmc_getcd(u8 *cd, struct mmc *mmc) int board_mmc_getcd(u8 *cd, struct mmc *mmc)
{ {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment