forked from OERV-BSP/u-boot
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.ravulapalli@altera.com> Reviewed-by: Tien Fong Chee <tien.fong.chee@intel.com>
This commit is contained in:
committed by
Tom Rini
parent
93f4888d71
commit
c0ed43c2a9
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user