[PATCH 1/2] mmc: do not send cmd13 if the parameter 'send_status' is 0 for __mmc_switch

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[PATCH 1/2] mmc: do not send cmd13 if the parameter 'send_status' is 0 for __mmc_switch

haibo.chen
From: Haibo Chen <[hidden email]>

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 <[hidden email]>
---
 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

Reply | Threaded
Open this post in threaded view
|

[PATCH 2/2] mmc: fsl_esdhc_imx: remove the 1ms delay before sending command

haibo.chen
From: Haibo Chen <[hidden email]>

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 <[hidden email]>
---
 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(&regs->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