mmc: dw_mmc: check fifo status with a timeout in fifo mode

While trying to enable the dw_mmc on rk3188 I managed to confuse
and hang the dw_mmc controller into not delivering further data.
The fifo state never became ready and the driver was iterating in
the while loop reading 0-byte packets forever.

So inspired by how other implementations handle this, check the fifo-
state beforhand and add a timeout to catch any glaring fifo issues
without hanging uboot altogether.

Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Reviewed-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
Acked-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
This commit is contained in:
Heiko Stuebner
2018-09-21 10:59:45 +02:00
committed by Philipp Tomsich
parent 2ba8bf2074
commit 05fa06b960
2 changed files with 32 additions and 2 deletions

View File

@@ -103,6 +103,8 @@
#define DWMCI_CTYPE_8BIT (1 << 16)
/* Status Register */
#define DWMCI_FIFO_EMPTY (1 << 2)
#define DWMCI_FIFO_FULL (1 << 3)
#define DWMCI_BUSY (1 << 9)
#define DWMCI_FIFO_MASK 0x1fff
#define DWMCI_FIFO_SHIFT 17