mmc: tegra: move pad_init_mmc() into MMC driver
authorStephen Warren <swarren@nvidia.com>
Tue, 13 Sep 2016 16:45:44 +0000 (10:45 -0600)
committerTom Warren <twarren@nvidia.com>
Tue, 27 Sep 2016 16:11:01 +0000 (09:11 -0700)
pad_init_mmc() is performing an SoC-specific operation, using registers
within the MMC controller. There's no reason to implement this code
outside the MMC driver, so move it inside the driver.

Cc: Jaehoon Chung <jh80.chung@samsung.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Tom Warren <twarren@nvidia.com>
arch/arm/include/asm/arch-tegra/tegra_mmc.h
arch/arm/mach-tegra/board186.c
arch/arm/mach-tegra/board2.c
drivers/mmc/tegra_mmc.c

index 07ef4c04c858a7021f925ded55f76414f85d228b..fecb6599a844495083251ba3bf8807ac7b84ff70 100644 (file)
@@ -151,7 +151,5 @@ struct mmc_host {
        struct mmc_config cfg;  /* mmc configuration */
 };
 
-void pad_init_mmc(struct mmc_host *host);
-
 #endif /* __ASSEMBLY__ */
 #endif /* __TEGRA_MMC_H_ */
index 1b9799fd80c22fae6b16890a079da49f22ca1cce..8b762059a01fec25443ef85dd99ffc6c70f0c7e8 100644 (file)
@@ -7,7 +7,6 @@
 #include <common.h>
 #include <asm/arch/tegra.h>
 #include <asm/arch-tegra/mmc.h>
-#include <asm/arch-tegra/tegra_mmc.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -31,10 +30,6 @@ int board_late_init(void)
        return 0;
 }
 
-void pad_init_mmc(struct mmc_host *host)
-{
-}
-
 int board_mmc_init(bd_t *bd)
 {
        tegra_mmc_init();
index 9158ace44c4248d932843ef9b0871345618678b2..e3cdb009ce923f648c0e6d3c109419c7fe753866 100644 (file)
@@ -33,7 +33,6 @@
 #include <usb.h>
 #endif
 #ifdef CONFIG_TEGRA_MMC
-#include <asm/arch-tegra/tegra_mmc.h>
 #include <asm/arch-tegra/mmc.h>
 #endif
 #include <asm/arch-tegra/xusb-padctl.h>
@@ -248,34 +247,6 @@ int board_mmc_init(bd_t *bd)
 
        return 0;
 }
-
-void pad_init_mmc(struct mmc_host *host)
-{
-#if defined(CONFIG_TEGRA30)
-       enum periph_id id = host->mmc_id;
-       u32 val;
-
-       debug("%s: sdmmc address = %08x, id = %d\n", __func__,
-               (unsigned int)host->reg, id);
-
-       /* Set the pad drive strength for SDMMC1 or 3 only */
-       if (id != PERIPH_ID_SDMMC1 && id != PERIPH_ID_SDMMC3) {
-               debug("%s: settings are only valid for SDMMC1/SDMMC3!\n",
-                       __func__);
-               return;
-       }
-
-       val = readl(&host->reg->sdmemcmppadctl);
-       val &= 0xFFFFFFF0;
-       val |= MEMCOMP_PADCTRL_VREF;
-       writel(val, &host->reg->sdmemcmppadctl);
-
-       val = readl(&host->reg->autocalcfg);
-       val &= 0xFFFF0000;
-       val |= AUTO_CAL_PU_OFFSET | AUTO_CAL_PD_OFFSET | AUTO_CAL_ENABLED;
-       writel(val, &host->reg->autocalcfg);
-#endif /* T30 */
-}
 #endif /* MMC */
 
 /*
index 08b4bd48245a3166a982ec974cf9bfa33950d4a1..5e6cfe710a1de1180072f7a715d2b8b6cc265a8f 100644 (file)
@@ -448,6 +448,34 @@ static void tegra_mmc_set_ios(struct mmc *mmc)
        debug("mmc_set_ios: hostctl = %08X\n", ctrl);
 }
 
+static void pad_init_mmc(struct mmc_host *host)
+{
+#if defined(CONFIG_TEGRA30)
+       enum periph_id id = host->mmc_id;
+       u32 val;
+
+       debug("%s: sdmmc address = %08x, id = %d\n", __func__,
+             (unsigned int)host->reg, id);
+
+       /* Set the pad drive strength for SDMMC1 or 3 only */
+       if (id != PERIPH_ID_SDMMC1 && id != PERIPH_ID_SDMMC3) {
+               debug("%s: settings are only valid for SDMMC1/SDMMC3!\n",
+                     __func__);
+               return;
+       }
+
+       val = readl(&host->reg->sdmemcmppadctl);
+       val &= 0xFFFFFFF0;
+       val |= MEMCOMP_PADCTRL_VREF;
+       writel(val, &host->reg->sdmemcmppadctl);
+
+       val = readl(&host->reg->autocalcfg);
+       val &= 0xFFFF0000;
+       val |= AUTO_CAL_PU_OFFSET | AUTO_CAL_PD_OFFSET | AUTO_CAL_ENABLED;
+       writel(val, &host->reg->autocalcfg);
+#endif
+}
+
 static void mmc_reset(struct mmc_host *host, struct mmc *mmc)
 {
        unsigned int timeout;