Re: [PATCH RFC 1/3] mmc: core: Try harder if transfer mode switch fails

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 12 Mar 2020 at 15:25, Adrian Hunter <adrian.hunter@xxxxxxxxx> wrote:
>
> Add extra busy wait and retries if transfer mode switch fails.
>
> Signed-off-by: Adrian Hunter <adrian.hunter@xxxxxxxxx>
> ---
>  drivers/mmc/core/mmc_ops.c | 6 ++++++
>  1 file changed, 6 insertions(+)
>
> diff --git a/drivers/mmc/core/mmc_ops.c b/drivers/mmc/core/mmc_ops.c
> index aa0cab190cd8..619088a94688 100644
> --- a/drivers/mmc/core/mmc_ops.c
> +++ b/drivers/mmc/core/mmc_ops.c
> @@ -599,6 +599,12 @@ int __mmc_switch(struct mmc_card *card, u8 set, u8 index, u8 value,
>                 cmd.sanitize_busy = true;
>
>         err = mmc_wait_for_cmd(host, &cmd, MMC_CMD_RETRIES);
> +       if (err && index == EXT_CSD_HS_TIMING) {
> +               /* Try harder for timing changes */
> +               __mmc_poll_for_busy(card, timeout_ms, send_status,
> +                                   retry_crc_err, MMC_BUSY_CMD6);
> +               err = mmc_wait_for_cmd(host, &cmd, MMC_CMD_RETRIES);
> +       }

Hmm, what do you think of moving this to the caller(s) of
__mmc_switch() and in particular only at those places were we find it
useful. Me personally, would prefer that option.

To do that, we may need to have the possibility of specifying the
number of retries that should be used in the mmc_wait_for_cmd() call
to the caller can check the error code better.

Moreover, it looks a bit risky to do the polling for all kinds of
errors - shouldn't we do for CRC errors?

>         if (err)
>                 goto out;
>
> --
> 2.17.1
>

Kind regards
Uffe



[Index of Archives]     [Linux Memonry Technology]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux