]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
mmc: fsl_esdhc_imx: Reset tuning logic
authorPeng Fan <peng.fan@nxp.com>
Tue, 1 Oct 2024 13:07:57 +0000 (21:07 +0800)
committerFabio Estevam <festevam@gmail.com>
Fri, 4 Oct 2024 12:15:15 +0000 (09:15 -0300)
When supporting partition reset for SoC such as i.MX95 , the Linux
Kernel may have configured the tuning, while after force reset by
wdog or else, uboot CMD0 will never pass unless config RSTT to reset
tuning logic.

Since RSTA and RSTT are independent, so need both to be reseted in the
controller.

Acked-by: Haibo Chen <haibo.chen@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
drivers/mmc/fsl_esdhc_imx.c
include/fsl_esdhc_imx.h

index debfc78b7f0934541f720be6e9ff67ed5907a768..fb410104c1fcdda5bcf0d29ea1c21c10e557ae32 100644 (file)
@@ -987,11 +987,11 @@ static int esdhc_init_common(struct fsl_esdhc_priv *priv, struct mmc *mmc)
        ulong start;
 
        /* Reset the entire host controller */
-       esdhc_setbits32(&regs->sysctl, SYSCTL_RSTA);
+       esdhc_setbits32(&regs->sysctl, SYSCTL_RSTA | SYSCTL_RSTT);
 
        /* Wait until the controller is available */
        start = get_timer(0);
-       while ((esdhc_read32(&regs->sysctl) & SYSCTL_RSTA)) {
+       while ((esdhc_read32(&regs->sysctl) & (SYSCTL_RSTA | SYSCTL_RSTT))) {
                if (get_timer(start) > 1000)
                        return -ETIMEDOUT;
        }
@@ -1095,11 +1095,11 @@ static int esdhc_reset(struct fsl_esdhc *regs)
        ulong start;
 
        /* reset the controller */
-       esdhc_setbits32(&regs->sysctl, SYSCTL_RSTA);
+       esdhc_setbits32(&regs->sysctl, SYSCTL_RSTA | SYSCTL_RSTT);
 
        /* hardware clears the bit when it is done */
        start = get_timer(0);
-       while ((esdhc_read32(&regs->sysctl) & SYSCTL_RSTA)) {
+       while ((esdhc_read32(&regs->sysctl) & (SYSCTL_RSTA | SYSCTL_RSTT))) {
                if (get_timer(start) > 100) {
                        printf("MMC/SD: Reset never completed.\n");
                        return -ETIMEDOUT;
index b8efd2a1664c48cd5bdfa63d8de332f640ded279..8612b56609e410dd6f7d5afbd1c551b51b70e543 100644 (file)
@@ -31,6 +31,7 @@
 #define SYSCTL_RSTA            0x01000000
 #define SYSCTL_RSTC            0x02000000
 #define SYSCTL_RSTD            0x04000000
+#define SYSCTL_RSTT            0x10000000
 
 #define VENDORSPEC_CKEN                0x00004000
 #define VENDORSPEC_PEREN       0x00002000