Hi Keerthy,
Can this problem be solved on SDK7.2?
The SBL can be damaged when an write error occurs, so the impact of the problem is very serious.
Best Regards,
Chen Zongsheng
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Hi Keerthy,
Can this problem be solved on SDK7.2?
The SBL can be damaged when an write error occurs, so the impact of the problem is very serious.
Best Regards,
Chen Zongsheng
The SBL can be damaged when an write error occurs, so the impact of the problem is very serious.
Hi,
Are you using SBL?! I believe you are using the SPL right?
Since this has a work around with delay addition this is still not fixed.
I am tracking this internally.
Are you facing some issues with this? Please let us know.
- Keerthy
Hi Keerthy,
When the "cadence-qspi 47040000.spi: Indirect write completion error (-110)" error occurs, the first four bytes of data in /dev/mtd0 may be overwritten. Which will cause SBL damage and the system cannot boot after restart.
You can make cqspi->wr_delay smaller quickly tested the issue.
Best Regards,
Chen Zongsheng
Hi Chen,
Could you please try this patch below:
diff --git a/drivers/spi/spi-cadence-quadspi.c b/drivers/spi/spi-cadence-quadspi.c index 53ba8502b988..c44ec4ffb0dd 100644 --- a/drivers/spi/spi-cadence-quadspi.c +++ b/drivers/spi/spi-cadence-quadspi.c @@ -1294,6 +1294,7 @@ static int cqspi_indirect_read_execute(struct cqspi_flash_pdata *f_pdata, reinit_completion(&cqspi->transfer_complete); writel(CQSPI_REG_INDIRECTRD_START_MASK, reg_base + CQSPI_REG_INDIRECTRD); + readl(reg_base + CQSPI_REG_INDIRECTRD); /* Flush posted write. */ while (remaining > 0) { if (!wait_for_completion_timeout(&cqspi->transfer_complete, @@ -1432,6 +1433,7 @@ static int cqspi_indirect_write_execute(struct cqspi_flash_pdata *f_pdata, reinit_completion(&cqspi->transfer_complete); writel(CQSPI_REG_INDIRECTWR_START_MASK, reg_base + CQSPI_REG_INDIRECTWR); + readl(reg_base + CQSPI_REG_INDIRECTWR); /* Flush posted write. */ /* * As per 66AK2G02 TRM SPRUHY8F section 11.15.5.3 Indirect Access * Controller programming sequence, couple of cycles of
Basically flushing the posted write.
Let us know if the above helps fix the failures you are observing.
Best Regards,
Keerthy