mmc: tegra: move pad_init_mmc() into MMC driver
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>
This commit is contained in:
parent
67748a73b1
commit
6b83588eea
@ -151,7 +151,5 @@ struct mmc_host {
|
|||||||
struct mmc_config cfg; /* mmc configuration */
|
struct mmc_config cfg; /* mmc configuration */
|
||||||
};
|
};
|
||||||
|
|
||||||
void pad_init_mmc(struct mmc_host *host);
|
|
||||||
|
|
||||||
#endif /* __ASSEMBLY__ */
|
#endif /* __ASSEMBLY__ */
|
||||||
#endif /* __TEGRA_MMC_H_ */
|
#endif /* __TEGRA_MMC_H_ */
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <asm/arch/tegra.h>
|
#include <asm/arch/tegra.h>
|
||||||
#include <asm/arch-tegra/mmc.h>
|
#include <asm/arch-tegra/mmc.h>
|
||||||
#include <asm/arch-tegra/tegra_mmc.h>
|
|
||||||
|
|
||||||
DECLARE_GLOBAL_DATA_PTR;
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
@ -31,10 +30,6 @@ int board_late_init(void)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void pad_init_mmc(struct mmc_host *host)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
int board_mmc_init(bd_t *bd)
|
int board_mmc_init(bd_t *bd)
|
||||||
{
|
{
|
||||||
tegra_mmc_init();
|
tegra_mmc_init();
|
||||||
|
@ -33,7 +33,6 @@
|
|||||||
#include <usb.h>
|
#include <usb.h>
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_TEGRA_MMC
|
#ifdef CONFIG_TEGRA_MMC
|
||||||
#include <asm/arch-tegra/tegra_mmc.h>
|
|
||||||
#include <asm/arch-tegra/mmc.h>
|
#include <asm/arch-tegra/mmc.h>
|
||||||
#endif
|
#endif
|
||||||
#include <asm/arch-tegra/xusb-padctl.h>
|
#include <asm/arch-tegra/xusb-padctl.h>
|
||||||
@ -248,34 +247,6 @@ int board_mmc_init(bd_t *bd)
|
|||||||
|
|
||||||
return 0;
|
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 */
|
#endif /* MMC */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -448,6 +448,34 @@ static void tegra_mmc_set_ios(struct mmc *mmc)
|
|||||||
debug("mmc_set_ios: hostctl = %08X\n", ctrl);
|
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)
|
static void mmc_reset(struct mmc_host *host, struct mmc *mmc)
|
||||||
{
|
{
|
||||||
unsigned int timeout;
|
unsigned int timeout;
|
||||||
|
Loading…
Reference in New Issue
Block a user