[U-Boot] [PATCH v3 2/4] tegra2: Move board_mmc_init into board files
Simon Glass
sjg at chromium.org
Wed Oct 12 01:45:51 CEST 2011
Hi Stephen,
On Thu, Oct 6, 2011 at 10:53 AM, Stephen Warren <swarren at nvidia.com> wrote:
> 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.
>
> Signed-off-by: Stephen Warren <swarren at nvidia.com>
I get a warning - I think you need to include ../common/board.h in
seaboard/harmony.c
seaboard.c:100:2: warning: implicit declaration of function
'tegra2_mmc_init' [-Wimplicit-function-declaration]
Other than that I tested it and it works fine.
Regards,
Simon
> ---
> board/nvidia/common/board.c | 52 -----------------------------------
> board/nvidia/harmony/harmony.c | 55 ++++++++++++++++++++++++++++++++++++++
> board/nvidia/seaboard/seaboard.c | 52 +++++++++++++++++++++++++++++++++++
> 3 files changed, 107 insertions(+), 52 deletions(-)
>
> diff --git a/board/nvidia/common/board.c b/board/nvidia/common/board.c
> index 370a259..0f12de2 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 cbb30d6..b01302f 100644
> --- a/board/nvidia/harmony/harmony.c
> +++ b/board/nvidia/harmony/harmony.c
> @@ -24,6 +24,7 @@
> #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
> @@ -38,6 +39,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 +81,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 bc67d0f..f8ef865 100644
> --- a/board/nvidia/seaboard/seaboard.c
> +++ b/board/nvidia/seaboard/seaboard.c
> @@ -24,6 +24,7 @@
> #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>
> @@ -56,6 +57,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 +100,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");
> --
> 1.7.0.4
>
>
More information about the U-Boot
mailing list