* [PATCH 1/2] mmc: do not send cmd13 if the parameter 'send_status' is 0 for __mmc_switch
@ 2020-09-22 10:11 haibo.chen at nxp.com
2020-09-22 10:11 ` [PATCH 2/2] mmc: fsl_esdhc_imx: remove the 1ms delay before sending command haibo.chen at nxp.com
0 siblings, 1 reply; 2+ messages in thread
From: haibo.chen at nxp.com @ 2020-09-22 10:11 UTC (permalink / raw)
To: u-boot
From: Haibo Chen <haibo.chen@nxp.com>
According to the code logic in __mmc_switch, if the parameter 'send_status'
is zero, no need to send cmd13, just wait the stated timeout time, then
can return directly.
Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
---
drivers/mmc/mmc.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index d79cdef62e..6cb2af4232 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -805,8 +805,10 @@ static int __mmc_switch(struct mmc *mmc, u8 set, u8 index, u8 value,
* capable of polling by using mmc_wait_dat0, then rely on waiting the
* stated timeout to be sufficient.
*/
- if (ret == -ENOSYS && !send_status)
+ if (ret == -ENOSYS && !send_status) {
mdelay(timeout_ms);
+ return 0;
+ }
/* Finally wait until the card is ready or indicates a failure
* to switch. It doesn't hurt to use CMD13 here even if send_status
--
2.17.1
^ permalink raw reply related [flat|nested] 2+ messages in thread* [PATCH 2/2] mmc: fsl_esdhc_imx: remove the 1ms delay before sending command
2020-09-22 10:11 [PATCH 1/2] mmc: do not send cmd13 if the parameter 'send_status' is 0 for __mmc_switch haibo.chen at nxp.com
@ 2020-09-22 10:11 ` haibo.chen at nxp.com
0 siblings, 0 replies; 2+ messages in thread
From: haibo.chen at nxp.com @ 2020-09-22 10:11 UTC (permalink / raw)
To: u-boot
From: Haibo Chen <haibo.chen@nxp.com>
This 1ms delay before sending command already exist from the beginning
of the fsl_esdhc driver added in year 2008. Now this driver has been
split for two files: fsl_esdhc.c and fsl_esdhc_imx.c. fsl_esdhc_imx.c
only for i.MX series. i.MX series esdhc/usdhc do not need this 1ms delay
before sending any command. So remove this 1ms, this will save a lot
time if handling a large mmc data.
Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
---
drivers/mmc/fsl_esdhc_imx.c | 7 -------
1 file changed, 7 deletions(-)
diff --git a/drivers/mmc/fsl_esdhc_imx.c b/drivers/mmc/fsl_esdhc_imx.c
index a0a0903ae4..ac65ed1ee1 100644
--- a/drivers/mmc/fsl_esdhc_imx.c
+++ b/drivers/mmc/fsl_esdhc_imx.c
@@ -462,13 +462,6 @@ static int esdhc_send_cmd_common(struct fsl_esdhc_priv *priv, struct mmc *mmc,
while (esdhc_read32(®s->prsstat) & PRSSTAT_DLA)
;
- /* Wait at least 8 SD clock cycles before the next command */
- /*
- * Note: This is way more than 8 cycles, but 1ms seems to
- * resolve timing issues with some cards
- */
- udelay(1000);
-
/* Set up for a data transfer if we have one */
if (data) {
err = esdhc_setup_data(priv, mmc, data);
--
2.17.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2020-09-22 10:11 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-09-22 10:11 [PATCH 1/2] mmc: do not send cmd13 if the parameter 'send_status' is 0 for __mmc_switch haibo.chen at nxp.com
2020-09-22 10:11 ` [PATCH 2/2] mmc: fsl_esdhc_imx: remove the 1ms delay before sending command haibo.chen at nxp.com
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox