mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
mtd: cqspi: Wait for transfer completion
Wait for the read/write transfer finish bit get actually cleared, this does not happen immediately on at least SoCFPGA Gen5. Signed-off-by: Marek Vasut <marex@denx.de> Reviewed-by: Jagan Teki <jagan@amarulasolutions.com> Cc: Vignesh R <vigneshr@ti.com> Cc: Pratyush Yadav <p.yadav@ti.com>
This commit is contained in:
parent
4a14bfffd4
commit
846d1d9c11
1 changed files with 17 additions and 0 deletions
|
@ -858,6 +858,14 @@ cadence_qspi_apb_indirect_read_execute(struct cadence_spi_plat *plat,
|
|||
writel(CQSPI_REG_INDIRECTRD_DONE,
|
||||
plat->regbase + CQSPI_REG_INDIRECTRD);
|
||||
|
||||
/* Check indirect done status */
|
||||
ret = wait_for_bit_le32(plat->regbase + CQSPI_REG_INDIRECTRD,
|
||||
CQSPI_REG_INDIRECTRD_DONE, 0, 10, 0);
|
||||
if (ret) {
|
||||
printf("Indirect read clear completion error (%i)\n", ret);
|
||||
goto failrd;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
failrd:
|
||||
|
@ -1012,6 +1020,15 @@ cadence_qspi_apb_indirect_write_execute(struct cadence_spi_plat *plat,
|
|||
/* Clear indirect completion status */
|
||||
writel(CQSPI_REG_INDIRECTWR_DONE,
|
||||
plat->regbase + CQSPI_REG_INDIRECTWR);
|
||||
|
||||
/* Check indirect done status */
|
||||
ret = wait_for_bit_le32(plat->regbase + CQSPI_REG_INDIRECTWR,
|
||||
CQSPI_REG_INDIRECTWR_DONE, 0, 10, 0);
|
||||
if (ret) {
|
||||
printf("Indirect write clear completion error (%i)\n", ret);
|
||||
goto failwr;
|
||||
}
|
||||
|
||||
if (bounce_buf)
|
||||
free(bounce_buf);
|
||||
return 0;
|
||||
|
|
Loading…
Reference in a new issue