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