[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