as it's depend on current direction Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagn...@jcrosoft.com> --- hw/sd/pl181.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/hw/sd/pl181.c b/hw/sd/pl181.c index 03875bf..91adbbd 100644 --- a/hw/sd/pl181.c +++ b/hw/sd/pl181.c @@ -344,7 +344,11 @@ static uint64_t pl181_read(void *opaque, hwaddr offset, data engine. DataCnt is decremented after each byte is transferred between the serial engine and the card. We don't emulate this level of detail, so both can be the same. */ - tmp = (s->datacnt + 3) >> 2; + if (s->datactrl & PL181_DATA_DIRECTION) + tmp = s->fifo_len; + else + tmp = s->datacnt; + tmp = (tmp + 3) >> 2; if (s->linux_hack) { s->linux_hack = 0; pl181_fifo_run(s); -- 1.8.4.rc3