MLK-11397 mmc: sdhci-esdhc-imx: move the setting of watermark level out of probe
authorHaibo Chen <haibo.chen@freescale.com>
Thu, 25 Jun 2015 02:08:46 +0000 (10:08 +0800)
committerNitin Garg <nitin.garg@nxp.com>
Mon, 19 Mar 2018 19:48:47 +0000 (14:48 -0500)
Currently, we config the watermark_level register only in probe.
This will cause the mmc write operation timeout issue after system
resume back in LPSR mode. Because in LPSR mode, after system resume
back, the watermark_level register(0x44) changes to 0x08000880, which
set the write watermark level as 0, and set the read watermark level
as 128. This value is incorrect.

This patch move the setting of watermark level register out of probe,
so after system resume back, mmc driver will set back this watermark
level register back to 0x10401040.

Signed-off-by: Haibo Chen <haibo.chen@freescale.com>
(cherry picked from commit 05f72329a3c288e15c2f187305a21815d6bffc6d)

Conflicts:
drivers/mmc/host/sdhci-esdhc-imx.c

drivers/mmc/host/sdhci-esdhc-imx.c

index 445fc47..4380b68 100644 (file)
@@ -609,6 +609,13 @@ static void esdhc_writeb_le(struct sdhci_host *host, u8 val, int reg)
                mask = 0xffff & ~(ESDHC_CTRL_BUSWIDTH_MASK | ESDHC_CTRL_D3CD);
 
                esdhc_clrset_le(host, mask, new_val, reg);
+
+               /*
+                * The imx6q ROM code will change the default watermark
+                * level setting to something insane.  Change it back here.
+                */
+               if (esdhc_is_usdhc(imx_data))
+                       writel(0x10401040, host->ioaddr + ESDHC_WTMK_LVL);
                return;
        }
        esdhc_clrset_le(host, 0xff, val, reg);