summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorTom Rini <[email protected]>2022-02-20 08:09:08 -0500
committerTom Rini <[email protected]>2022-02-20 12:07:20 -0500
commit55e9cef1432ffd42559874b2a469729f20b627d9 (patch)
tree3d94af0bac0b0081bb8cf9be44dad4ac98f90317 /drivers
parent8ad1c9c26f7740806a162818b790d4a72f515b7e (diff)
parentfea66073171461eebcf35264293616d6423788e5 (diff)
Merge tag 'u-boot-imx-20220220' of https://gitlab.denx.de/u-boot/custodians/u-boot-imx
u-boot-imx-20220220 ------------------- CI : https://source.denx.de/u-boot/custodians/u-boot-imx/-/pipelines/11037 - ESDHC fixes - imx8mq : MNT Reform 2 board - imx8m: add support for Advantech RSB-3720 - fixes for imx8mn-ddr4-evk - fixes gateworks boards - doc : fix build for imx8mn_beacon - fuses: compare and read functions - imx8mn-ddr4-evk: boot from SD and Ethernet support
Diffstat (limited to 'drivers')
-rw-r--r--drivers/clk/imx/Kconfig2
-rw-r--r--drivers/mmc/fsl_esdhc_imx.c41
2 files changed, 29 insertions, 14 deletions
diff --git a/drivers/clk/imx/Kconfig b/drivers/clk/imx/Kconfig
index 19e40da725f..cdd348020b0 100644
--- a/drivers/clk/imx/Kconfig
+++ b/drivers/clk/imx/Kconfig
@@ -42,6 +42,7 @@ config SPL_CLK_IMX8MN
depends on ARCH_IMX8M && SPL
select SPL_CLK
select SPL_CLK_CCF
+ select SPL_CLK_COMPOSITE_CCF
help
This enables SPL DM/DTS support for clock driver in i.MX8MN
@@ -50,6 +51,7 @@ config CLK_IMX8MN
depends on ARCH_IMX8M
select CLK
select CLK_CCF
+ select CLK_COMPOSITE_CCF
help
This enables support clock driver for i.MX8MN platforms.
diff --git a/drivers/mmc/fsl_esdhc_imx.c b/drivers/mmc/fsl_esdhc_imx.c
index 32b42c3fd5c..697e3c641d0 100644
--- a/drivers/mmc/fsl_esdhc_imx.c
+++ b/drivers/mmc/fsl_esdhc_imx.c
@@ -595,16 +595,12 @@ static void set_sysctl(struct fsl_esdhc_priv *priv, struct mmc *mmc, uint clock)
int sdhc_clk = priv->sdhc_clk;
uint clk;
- if (IS_ENABLED(ARCH_MXC)) {
#if IS_ENABLED(CONFIG_MX53)
- /* For i.MX53 eSDHCv3, SYSCTL.SDCLKFS may not be set to 0. */
- pre_div = (regs == (struct fsl_esdhc *)MMC_SDHC3_BASE_ADDR) ? 2 : 1;
+ /* For i.MX53 eSDHCv3, SYSCTL.SDCLKFS may not be set to 0. */
+ pre_div = (regs == (struct fsl_esdhc *)MMC_SDHC3_BASE_ADDR) ? 2 : 1;
#else
- pre_div = 1;
+ pre_div = 1;
#endif
- } else {
- pre_div = 2;
- }
while (sdhc_clk / (16 * pre_div * ddr_pre_div) > clock && pre_div < 256)
pre_div *= 2;
@@ -612,6 +608,8 @@ static void set_sysctl(struct fsl_esdhc_priv *priv, struct mmc *mmc, uint clock)
while (sdhc_clk / (div * pre_div * ddr_pre_div) > clock && div < 16)
div++;
+ mmc->clock = sdhc_clk / pre_div / div / ddr_pre_div;
+
pre_div >>= 1;
div -= 1;
@@ -633,7 +631,6 @@ static void set_sysctl(struct fsl_esdhc_priv *priv, struct mmc *mmc, uint clock)
else
esdhc_setbits32(&regs->sysctl, SYSCTL_PEREN | SYSCTL_CKEN);
- mmc->clock = sdhc_clk / pre_div / div;
priv->clock = clock;
}
@@ -1007,11 +1004,6 @@ static int esdhc_init_common(struct fsl_esdhc_priv *priv, struct mmc *mmc)
esdhc_write32(&regs->dllctrl, 0x0);
}
-#ifndef ARCH_MXC
- /* Enable cache snooping */
- esdhc_write32(&regs->scr, 0x00000040);
-#endif
-
if (IS_ENABLED(CONFIG_FSL_USDHC))
esdhc_setbits32(&regs->vendorspec,
VENDORSPEC_HCKEN | VENDORSPEC_IPGEN);
@@ -1224,8 +1216,29 @@ static int fsl_esdhc_init(struct fsl_esdhc_priv *priv,
val |= ESDHC_TUNING_CMD_CRC_CHECK_DISABLE;
esdhc_write32(&regs->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;
}