On Tue, 16 Jul 2024 at 03:37, Mengqi Zhang <mengqi.zhang@xxxxxxxxxxxx> wrote: > > When we use cmd8 as the tuning command in hs400 mode, the command > response sent back by some eMMC devices cannot be correctly sampled > by MTK eMMC controller at some weak sample timing. In this case, > command timeout error may occur. So we must receive the following > data to make sure the next cmd8 send correctly. > > Signed-off-by: Mengqi Zhang <mengqi.zhang@xxxxxxxxxxxx> > Fixes: c4ac38c6539b ("mmc: mtk-sd: Add HS400 online tuning support") > Cc: stable@xxxxxxxxxxxxxxx Applied for fixes, thanks! Kind regards Uffe > --- > drivers/mmc/host/mtk-sd.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/mmc/host/mtk-sd.c b/drivers/mmc/host/mtk-sd.c > index a94835b8ab93..e386f78e3267 100644 > --- a/drivers/mmc/host/mtk-sd.c > +++ b/drivers/mmc/host/mtk-sd.c > @@ -1230,7 +1230,7 @@ static bool msdc_cmd_done(struct msdc_host *host, int events, > } > > if (!sbc_error && !(events & MSDC_INT_CMDRDY)) { > - if (events & MSDC_INT_CMDTMO || > + if ((events & MSDC_INT_CMDTMO && !host->hs400_tuning) || > (!mmc_op_tuning(cmd->opcode) && !host->hs400_tuning)) > /* > * should not clear fifo/interrupt as the tune data > @@ -1323,9 +1323,9 @@ static void msdc_start_command(struct msdc_host *host, > static void msdc_cmd_next(struct msdc_host *host, > struct mmc_request *mrq, struct mmc_command *cmd) > { > - if ((cmd->error && > - !(cmd->error == -EILSEQ && > - (mmc_op_tuning(cmd->opcode) || host->hs400_tuning))) || > + if ((cmd->error && !host->hs400_tuning && > + !(cmd->error == -EILSEQ && > + mmc_op_tuning(cmd->opcode))) || > (mrq->sbc && mrq->sbc->error)) > msdc_request_done(host, mrq); > else if (cmd == mrq->sbc) > -- > 2.25.1 >