The Linux driver automatically can detect and enable UHS, HS200, HS400
and HS400_ES automatically without extra flags being placed into the
device tree.

Right now, for U-Boot to use UHS, HS200 or HS400, the extra flags are
needed.  Let's go through the esdhc_soc_data flags and enable the
host caps where applicable.

Suggested-by: Fabio Estevam <feste...@gmail.com>
Signed-off-by: Adam Ford <aford...@gmail.com>
---
I am not an expert on the SD/MMC standards, but I used the Linux
driver as a model, and made the assumption that the USDHC flag needs
to be set in order to use the extra speeds.

diff --git a/drivers/mmc/fsl_esdhc_imx.c b/drivers/mmc/fsl_esdhc_imx.c
index e5409ade1b..3f1774551a 100644
--- a/drivers/mmc/fsl_esdhc_imx.c
+++ b/drivers/mmc/fsl_esdhc_imx.c
@@ -1293,8 +1293,30 @@ static int fsl_esdhc_init(struct fsl_esdhc_priv *priv,
                        val |= ESDHC_TUNING_CMD_CRC_CHECK_DISABLE;
                        esdhc_write32(&regs->tuning_ctrl, val);
                }
-       }
 
+               if (CONFIG_IS_ENABLED(MMC_UHS_SUPPORT)) {
+                       cfg->host_caps |= MMC_CAP(UHS_SDR12);
+                       cfg->host_caps |= MMC_CAP(UHS_SDR25);
+                       cfg->host_caps |= MMC_CAP(UHS_SDR50);
+                       cfg->host_caps |= MMC_CAP(UHS_SDR104);
+                       cfg->host_caps |= MMC_CAP(UHS_DDR50);
+               }
+
+               if (CONFIG_IS_ENABLED(MMC_HS200_SUPPORT)) {
+                       if (priv->flags & ESDHC_FLAG_HS200)
+                               cfg->host_caps |= MMC_CAP(MMC_HS_200);
+               }
+
+               if (CONFIG_IS_ENABLED(MMC_HS400_SUPPORT)) {
+                       if (priv->flags & ESDHC_FLAG_HS400)
+                               cfg->host_caps |= MMC_CAP(MMC_HS_400);
+               }
+
+               if (CONFIG_IS_ENABLED(MMC_HS400_ES_SUPPORT)) {
+                       if (priv->flags & ESDHC_FLAG_HS400_ES)
+                               cfg->host_caps |= MMC_CAP(MMC_HS_400_ES);
+               }
+       }
        return 0;
 }
 
-- 
2.25.1

Reply via email to