> -----Original Message-----
> From: Ravulapalli, Naresh Kumar <naresh.kumar.ravulapa...@altera.com>
> Sent: Friday, March 7, 2025 5:38 PM
> To: u-boot@lists.denx.de
> Cc: Marek Vasut <ma...@denx.de>; Simon Goldschmidt
> <simon.k.r.goldschm...@gmail.com>; Chee, Tien Fong
> <tien.fong.c...@altera.com>; Jagan Teki <ja...@amarulasolutions.com>;
> Tom Rini <tr...@konsulko.com>; Ravulapalli, Naresh Kumar
> <naresh.kumar.ravulapa...@altera.com>
> Subject: [PATCH] drivers: spi: Fix data loss issue in QSPI
> 
> QSPI driver performs chip select operation before every read/write access.
> During this operation, driver needs to enable and disable the QSPI controller.
> This may cause data loss if there is inadvertent halting of any ongoing
> read/write operation. To avoid this scenario, waiting for the QSPI status to 
> be
> idle before next read/write operation is implemented.
> 
> Signed-off-by: Naresh Kumar Ravulapalli
> <nareshkumar.ravulapa...@altera.com>
> ---
>  drivers/spi/cadence_qspi_apb.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/drivers/spi/cadence_qspi_apb.c
> b/drivers/spi/cadence_qspi_apb.c index f2f69cf9f1..b579699d2e 100644
> --- a/drivers/spi/cadence_qspi_apb.c
> +++ b/drivers/spi/cadence_qspi_apb.c
> @@ -747,6 +747,10 @@ cadence_qspi_apb_indirect_read_execute(struct
> cadence_spi_priv *priv,
>               goto failrd;
>       }
> 
> +     /* Wait til QSPI is idle */
> +     if (!cadence_qspi_wait_idle(priv->regbase))
> +             return -EIO;
> +
>       return 0;
> 
>  failrd:
> @@ -914,6 +918,11 @@ cadence_qspi_apb_indirect_write_execute(struct
> cadence_spi_priv *priv,
> 
>       if (bounce_buf)
>               free(bounce_buf);
> +
> +     /* Wait til QSPI is idle */
> +     if (!cadence_qspi_wait_idle(priv->regbase))
> +             return -EIO;
> +
>       return 0;
> 
>  failwr:
> --
> 2.35.3

Reviewed-by: Tien Fong Chee <tien.fong.c...@intel.com>

Best regards,
Tien Fong

Reply via email to