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

Reply via email to