AM62P SR1.0 and SR1.1 do not support HS400 due to errata i2458 [0] so
add functionality to detect these SoC revisions and disable HS400.

[0] https://www.ti.com/lit/er/sprz574a/sprz574a.pdf
Signed-off-by: Judith Mendez <j...@ti.com>
---
 drivers/mmc/am654_sdhci.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/drivers/mmc/am654_sdhci.c b/drivers/mmc/am654_sdhci.c
index d3c8f94dd0c..7e4e7e1b90e 100644
--- a/drivers/mmc/am654_sdhci.c
+++ b/drivers/mmc/am654_sdhci.c
@@ -629,6 +629,12 @@ const struct soc_attr am654_sdhci_soc_attr[] = {
        {/* sentinel */}
 };
 
+static struct soc_attr sdhci_am654_descope_hs400[] = {
+       { .family = "AM62PX", .revision = "SR1.0" },
+       { .family = "AM62PX", .revision = "SR1.1" },
+       { /* sentinel */ }
+};
+
 static int sdhci_am654_get_otap_delay(struct udevice *dev,
                                      struct mmc_config *cfg)
 {
@@ -715,6 +721,12 @@ static int am654_sdhci_probe(struct udevice *dev)
                host->ops = soc_drv_data->ops;
        }
 
+       soc = soc_device_match(sdhci_am654_descope_hs400);
+       if (soc) {
+               dev_err(dev, "Disable descoped HS400 mode for this silicon 
revision\n");
+               plat->cfg.host_caps &= ~(MMC_MODE_HS400 | MMC_MODE_HS400_ES);
+       }
+
        host->mmc->priv = host;
        upriv->mmc = host->mmc;
 
-- 
2.49.0

Reply via email to