aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFaiz Abbas2019-06-11 00:43:41 +0530
committerTom Rini2019-07-17 11:12:08 -0400
commitf605807f3d4686637a2f8b0f24bebabdcdef6898 (patch)
tree3ac6305dbf46eef3c7717f4b5c8a299eff227805
parentd1c0a2200afb398f67a0c2c84948a079b44290a1 (diff)
mmc: am654_sdhci: Add a platform specific set_control_reg() callback
Add a platform specific set_control_reg() callback to help switch to UHS speed modes. Signed-off-by: Faiz Abbas <faiz_abbas@ti.com> Reviewed-by: Tom Rini <trini@konsulko.com>
-rw-r--r--drivers/mmc/am654_sdhci.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/drivers/mmc/am654_sdhci.c b/drivers/mmc/am654_sdhci.c
index b9a7924d4e2..fe633aa39aa 100644
--- a/drivers/mmc/am654_sdhci.c
+++ b/drivers/mmc/am654_sdhci.c
@@ -75,6 +75,21 @@ struct am654_sdhci_plat {
bool dll_on;
};
+static void am654_sdhci_set_control_reg(struct sdhci_host *host)
+{
+ struct mmc *mmc = (struct mmc *)host->mmc;
+ u32 reg;
+
+ if (IS_SD(host->mmc) &&
+ mmc->signal_voltage == MMC_SIGNAL_VOLTAGE_180) {
+ reg = sdhci_readw(host, SDHCI_HOST_CONTROL2);
+ reg |= SDHCI_CTRL_VDD_180;
+ sdhci_writew(host, reg, SDHCI_HOST_CONTROL2);
+ }
+
+ sdhci_set_uhs_timing(host);
+}
+
static int am654_sdhci_set_ios_post(struct sdhci_host *host)
{
struct udevice *dev = host->mmc->dev;
@@ -143,7 +158,8 @@ static int am654_sdhci_set_ios_post(struct sdhci_host *host)
}
const struct sdhci_ops am654_sdhci_ops = {
- .set_ios_post = &am654_sdhci_set_ios_post,
+ .set_ios_post = &am654_sdhci_set_ios_post,
+ .set_control_reg = &am654_sdhci_set_control_reg,
};
int am654_sdhci_init(struct am654_sdhci_plat *plat)