diff options
| author | Tom Rini <[email protected]> | 2022-02-20 08:09:08 -0500 |
|---|---|---|
| committer | Tom Rini <[email protected]> | 2022-02-20 12:07:20 -0500 |
| commit | 55e9cef1432ffd42559874b2a469729f20b627d9 (patch) | |
| tree | 3d94af0bac0b0081bb8cf9be44dad4ac98f90317 /drivers | |
| parent | 8ad1c9c26f7740806a162818b790d4a72f515b7e (diff) | |
| parent | fea66073171461eebcf35264293616d6423788e5 (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/Kconfig | 2 | ||||
| -rw-r--r-- | drivers/mmc/fsl_esdhc_imx.c | 41 |
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(®s->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(®s->dllctrl, 0x0); } -#ifndef ARCH_MXC - /* Enable cache snooping */ - esdhc_write32(®s->scr, 0x00000040); -#endif - if (IS_ENABLED(CONFIG_FSL_USDHC)) esdhc_setbits32(®s->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(®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; } |
