[PATCH v1] mmc: fsl_esdhc_imx: fix watermark level in dma

From: Marcel Ziswiler marcel.ziswiler@toradex.com
Seems that we need the waterlevel setting not only for PIO mode as without this at least the i.MX 8M Mini won't boot anymore when being written by such a U-Boot. Corruption has also been observed both on the i.MX 6 as well as i.MX 8M Mini when using ums on the eMMC. Fix this by setting the watermark level again regardless of whether in DMA or PIO mode.
Fixes: 41c6a22fc296 ("mmc: fsl_esdhc_imx: simplify esdhc_setup_data()") Signed-off-by: Marcel Ziswiler marcel.ziswiler@toradex.com
---
drivers/mmc/fsl_esdhc_imx.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/mmc/fsl_esdhc_imx.c b/drivers/mmc/fsl_esdhc_imx.c index 9299635f50..efa5ed0af7 100644 --- a/drivers/mmc/fsl_esdhc_imx.c +++ b/drivers/mmc/fsl_esdhc_imx.c @@ -336,9 +336,8 @@ static int esdhc_setup_data(struct fsl_esdhc_priv *priv, struct mmc *mmc, } }
- if (IS_ENABLED(CONFIG_SYS_FSL_ESDHC_USE_PIO)) - esdhc_setup_watermark_level(priv, data); - else + esdhc_setup_watermark_level(priv, data); + if (!IS_ENABLED(CONFIG_SYS_FSL_ESDHC_USE_PIO)) esdhc_setup_dma(priv, data);
/* Calculate the timeout period for data transactions */

Hi Marcel,
On Mon, Jan 31, 2022 at 7:08 PM Marcel Ziswiler marcel@ziswiler.com wrote:
From: Marcel Ziswiler marcel.ziswiler@toradex.com
Seems that we need the waterlevel setting not only for PIO mode as without this at least the i.MX 8M Mini won't boot anymore when being written by such a U-Boot. Corruption has also been observed both on the i.MX 6 as well as i.MX 8M Mini when using ums on the eMMC. Fix this by setting the watermark level again regardless of whether in DMA or PIO mode.
Fixes: 41c6a22fc296 ("mmc: fsl_esdhc_imx: simplify esdhc_setup_data()") Signed-off-by: Marcel Ziswiler marcel.ziswiler@toradex.com
This is probably the failure I saw on imx7 when I tried testing 'ums'.
Reviewed-by: Fabio Estevam festevam@gmail.com

On Mon, Jan 31, 2022 at 10:44 PM Fabio Estevam festevam@gmail.com wrote:
Hi Marcel,
On Mon, Jan 31, 2022 at 7:08 PM Marcel Ziswiler marcel@ziswiler.com wrote:
From: Marcel Ziswiler marcel.ziswiler@toradex.com
Seems that we need the waterlevel setting not only for PIO mode as without this at least the i.MX 8M Mini won't boot anymore when being written by such a U-Boot. Corruption has also been observed both on the i.MX 6 as well as i.MX 8M Mini when using ums on the eMMC. Fix this by setting the watermark level again regardless of whether in DMA or PIO mode.
Fixes: 41c6a22fc296 ("mmc: fsl_esdhc_imx: simplify esdhc_setup_data()") Signed-off-by: Marcel Ziswiler marcel.ziswiler@toradex.com
This is probably the failure I saw on imx7 when I tried testing 'ums'.
Reviewed-by: Fabio Estevam festevam@gmail.com
This indeed fixes the regression I was seeing with imx7s-warp:
Tested-by: Fabio Estevam festevam@gmail.com

Hi Jaehoon,
On Wed, Feb 2, 2022 at 2:08 PM Fabio Estevam festevam@gmail.com wrote:
On Mon, Jan 31, 2022 at 10:44 PM Fabio Estevam festevam@gmail.com wrote:
Hi Marcel,
On Mon, Jan 31, 2022 at 7:08 PM Marcel Ziswiler marcel@ziswiler.com wrote:
From: Marcel Ziswiler marcel.ziswiler@toradex.com
Seems that we need the waterlevel setting not only for PIO mode as without this at least the i.MX 8M Mini won't boot anymore when being written by such a U-Boot. Corruption has also been observed both on the i.MX 6 as well as i.MX 8M Mini when using ums on the eMMC. Fix this by setting the watermark level again regardless of whether in DMA or PIO mode.
Fixes: 41c6a22fc296 ("mmc: fsl_esdhc_imx: simplify esdhc_setup_data()") Signed-off-by: Marcel Ziswiler marcel.ziswiler@toradex.com
This is probably the failure I saw on imx7 when I tried testing 'ums'.
Reviewed-by: Fabio Estevam festevam@gmail.com
This indeed fixes the regression I was seeing with imx7s-warp:
Tested-by: Fabio Estevam festevam@gmail.com
Could you please apply this fix?
Thanks

Hi Fabio,
On 2/8/22 10:32, Fabio Estevam wrote:
Hi Jaehoon,
On Wed, Feb 2, 2022 at 2:08 PM Fabio Estevam festevam@gmail.com wrote:
On Mon, Jan 31, 2022 at 10:44 PM Fabio Estevam festevam@gmail.com wrote:
Hi Marcel,
On Mon, Jan 31, 2022 at 7:08 PM Marcel Ziswiler marcel@ziswiler.com wrote:
From: Marcel Ziswiler marcel.ziswiler@toradex.com
Seems that we need the waterlevel setting not only for PIO mode as without this at least the i.MX 8M Mini won't boot anymore when being written by such a U-Boot. Corruption has also been observed both on the i.MX 6 as well as i.MX 8M Mini when using ums on the eMMC. Fix this by setting the watermark level again regardless of whether in DMA or PIO mode.
Fixes: 41c6a22fc296 ("mmc: fsl_esdhc_imx: simplify esdhc_setup_data()") Signed-off-by: Marcel Ziswiler marcel.ziswiler@toradex.com
This is probably the failure I saw on imx7 when I tried testing 'ums'.
Reviewed-by: Fabio Estevam festevam@gmail.com
This indeed fixes the regression I was seeing with imx7s-warp:
Tested-by: Fabio Estevam festevam@gmail.com
Could you please apply this fix?
Sorry for late. I had been vacation until yesterday. I'm looking for pending patches. I will pick this soon.
Best Regards, Jaehoon Chung
Thanks

On 2/1/22 07:08, Marcel Ziswiler wrote:
From: Marcel Ziswiler marcel.ziswiler@toradex.com
Seems that we need the waterlevel setting not only for PIO mode as without this at least the i.MX 8M Mini won't boot anymore when being written by such a U-Boot. Corruption has also been observed both on the i.MX 6 as well as i.MX 8M Mini when using ums on the eMMC. Fix this by setting the watermark level again regardless of whether in DMA or PIO mode.
Fixes: 41c6a22fc296 ("mmc: fsl_esdhc_imx: simplify esdhc_setup_data()") Signed-off-by: Marcel Ziswiler marcel.ziswiler@toradex.com
Applied on u-boot-mmc/master.
Thanks!
Best Regards, Jaehoon Chung
drivers/mmc/fsl_esdhc_imx.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/mmc/fsl_esdhc_imx.c b/drivers/mmc/fsl_esdhc_imx.c index 9299635f50..efa5ed0af7 100644 --- a/drivers/mmc/fsl_esdhc_imx.c +++ b/drivers/mmc/fsl_esdhc_imx.c @@ -336,9 +336,8 @@ static int esdhc_setup_data(struct fsl_esdhc_priv *priv, struct mmc *mmc, } }
- if (IS_ENABLED(CONFIG_SYS_FSL_ESDHC_USE_PIO))
esdhc_setup_watermark_level(priv, data);
- else
esdhc_setup_watermark_level(priv, data);
if (!IS_ENABLED(CONFIG_SYS_FSL_ESDHC_USE_PIO)) esdhc_setup_dma(priv, data);
/* Calculate the timeout period for data transactions */
participants (3)
-
Fabio Estevam
-
Jaehoon Chung
-
Marcel Ziswiler