[U-Boot] [PATCH v3 1/4] tegra2: Move MMC clock initialization into MMC driver
Simon Glass
sjg at chromium.org
Sat Oct 8 02:03:28 CEST 2011
On Thu, Oct 6, 2011 at 10:53 AM, Stephen Warren <swarren at nvidia.com> wrote:
> This centralizes knowledge of MMC clocking into the MMC driver. This also
> removes clock setup from the board files, which will simplify later changes
> that modify the Harmony board to support the correct set of MMC controllers.
>
> Signed-off-by: Stephen Warren <swarren at nvidia.com>
> ---
> Note: These patches build on various Tegra2-related patches recently posted
> by Simon Glass; see v2 of the 6-entry patchset shown at:
> http://patchwork.ozlabs.org/project/uboot/list/?submitter=6170&state=1&q=tegra2
>
> board/nvidia/common/board.c | 13 +------------
> drivers/mmc/tegra2_mmc.c | 12 +++++++++---
> 2 files changed, 10 insertions(+), 15 deletions(-)
>
> diff --git a/board/nvidia/common/board.c b/board/nvidia/common/board.c
> index d13537d..370a259 100644
> --- a/board/nvidia/common/board.c
> +++ b/board/nvidia/common/board.c
> @@ -102,16 +102,6 @@ static void pin_mux_uart(void)
>
> #ifdef CONFIG_TEGRA2_MMC
> /*
> - * Routine: clock_init_mmc
> - * Description: init the PLL and clocks for the SDMMC controllers
> - */
> -static void clock_init_mmc(void)
> -{
> - clock_start_periph_pll(PERIPH_ID_SDMMC4, CLOCK_ID_PERIPH, 20000000);
> - clock_start_periph_pll(PERIPH_ID_SDMMC3, CLOCK_ID_PERIPH, 20000000);
> -}
> -
> -/*
> * Routine: pin_mux_mmc
> * Description: setup the pin muxes/tristate values for the SDMMC(s)
> */
> @@ -157,8 +147,7 @@ int board_init(void)
> int board_mmc_init(bd_t *bd)
> {
> debug("board_mmc_init called\n");
> - /* Enable clocks, muxes, etc. for SDMMC controllers */
> - clock_init_mmc();
> + /* Enable muxes, etc. for SDMMC controllers */
> pin_mux_mmc();
> gpio_config_mmc();
>
> diff --git a/drivers/mmc/tegra2_mmc.c b/drivers/mmc/tegra2_mmc.c
> index 9e741f2..78b1190 100644
> --- a/drivers/mmc/tegra2_mmc.c
> +++ b/drivers/mmc/tegra2_mmc.c
> @@ -435,14 +435,22 @@ static int mmc_core_init(struct mmc *mmc)
>
> static int tegra2_mmc_initialize(int dev_index, int bus_width)
> {
> + struct mmc_host *host;
> struct mmc *mmc;
>
> debug(" mmc_initialize called\n");
>
> + host = &mmc_host[dev_index];
> +
> + host->clock = 0;
> + tegra2_get_setup(host, dev_index);
> +
> + clock_start_periph_pll(host->mmc_id, CLOCK_ID_PERIPH, 20000000);
> +
> mmc = &mmc_dev[dev_index];
>
> sprintf(mmc->name, "Tegra2 SD/MMC");
> - mmc->priv = &mmc_host[dev_index];
> + mmc->priv = host;
> mmc->send_cmd = mmc_send_cmd;
> mmc->set_ios = mmc_set_ios;
> mmc->init = mmc_core_init;
> @@ -465,8 +473,6 @@ static int tegra2_mmc_initialize(int dev_index, int bus_width)
> mmc->f_min = 375000;
> mmc->f_max = 48000000;
>
> - mmc_host[dev_index].clock = 0;
> - tegra2_get_setup(&mmc_host[dev_index], dev_index);
> mmc_register(mmc);
>
> return 0;
> --
> 1.7.0.4
>
>
Acked-by: Simon Glass <sjg at chromium.org>
More information about the U-Boot
mailing list