Hello Marek-san, > From: U-Boot On Behalf Of Marek Vasut, Sent: Sunday, October 15, 2023 6:56 AM > > Unconditionally check for errors even after successful reception > of IRQ flag, since the hardware may set both an IRQ completion > flag and an error flag at the same time. > > This mode of failure happens in case of an error during transfer, > in which case the hardware may set the expected IRQ completion > flag as well as error flags. The later is currently not checked > by the driver and such an error is not detected. Improve the > error detection. > > Signed-off-by: Marek Vasut <marek.vasut+rene...@mailbox.org> > --- > Cc: Jaehoon Chung <jh80.ch...@samsung.com> > Cc: Nobuhiro Iwamatsu <iwama...@nigauri.org> > Cc: Peng Fan <peng....@nxp.com> > ---
Thank you for the patch. It looks good to me. So, Reviewed-by: Yoshihiro Shimoda <yoshihiro.shimoda...@renesas.com> Also, our outsourcing member tested it on R-Car H3 Salvator-XS and it works without any regression. So, Tested-by: Thuan Nguyen Hong <thuan.nguyen-h...@banvien.com.vn> Best regards, Yoshihiro Shimoda > drivers/mmc/tmio-common.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/mmc/tmio-common.c b/drivers/mmc/tmio-common.c > index d1e26815996..83eaf361f0c 100644 > --- a/drivers/mmc/tmio-common.c > +++ b/drivers/mmc/tmio-common.c > @@ -122,7 +122,10 @@ static int tmio_sd_wait_for_irq(struct udevice *dev, > struct mmc_cmd *cmd, > long wait = 1000000; > int ret; > > - while (!(tmio_sd_readl(priv, reg) & flag)) { > + while (true) { > + if (tmio_sd_readl(priv, reg) & flag) > + return tmio_sd_check_error(dev, cmd); > + > if (wait-- < 0) { > dev_err(dev, "timeout\n"); > return -ETIMEDOUT; > -- > 2.42.0