> 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 in the device tree. Instead, go through the esdhc_soc_data > flags and enable the host caps where applicable to automatically > enable higher speeds. > Suggested-by: Fabio Estevam <feste...@gmail.com> > Signed-off-by: Adam Ford <aford...@gmail.com> > diff --git a/drivers/mmc/fsl_esdhc_imx.c b/drivers/mmc/fsl_esdhc_imx.c > index e5814232a2..5088e78bb6 100644 > --- a/drivers/mmc/fsl_esdhc_imx.c > +++ b/drivers/mmc/fsl_esdhc_imx.c > @@ -1305,8 +1305,29 @@ static int fsl_esdhc_init(struct fsl_esdhc_priv *priv, > val |= ESDHC_TUNING_CMD_CRC_CHECK_DISABLE; > esdhc_write32(®s->tuning_ctrl, val); > } > - } > > + /* > + * UHS doesn't have explicit ESDHC flags, so if it's > + * not supported, disable it in config. > + */ > + if (CONFIG_IS_ENABLED(MMC_UHS_SUPPORT)) > + cfg->host_caps |= UHS_CAPS; > + > + 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; > } > Applied to u-boot-imx, master, thanks !
Best regards, Stefano Babic -- ===================================================================== DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sba...@denx.de =====================================================================