The 'Transfer Block Size' field is 12-bit wide.
See section '2.2.2. Block Size Register (Offset 004h)' in datasheet.
Cc: <email address hidden> Cc: Igor Mitsyanko <email address hidden> Buglink: https://bugs.launchpad.net/qemu/+bug/1892960 Fixes: d7dfca0807a ("hw/sdhci: introduce standard SD host controller") Reported-by: Alexander Bulekov <email address hidden> Signed-off-by: Philippe Mathieu-Daudé <email address hidden> --- Cc: <email address hidden> --- hw/sd/sdhci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 60f083b84c1..ecbf84e9d3f 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -1104,7 +1104,7 @@ sdhci_write(void *opaque, hwaddr offset, uint64_t val, unsigned size) break; case SDHC_BLKSIZE: if (!TRANSFERRING_DATA(s->prnsts)) { - MASKED_WRITE(s->blksize, mask, value); + MASKED_WRITE(s->blksize, mask, extract32(value, 0, 12)); MASKED_WRITE(s->blkcnt, mask >> 16, value >> 16); }
-- 2.26.2
The 'Transfer Block Size' field is 12-bit wide.
See section '2.2.2. Block Size Register (Offset 004h)' in datasheet.
Cc: <email address hidden> /bugs.launchpad .net/qemu/ +bug/1892960
Cc: Igor Mitsyanko <email address hidden>
Buglink: https:/
Fixes: d7dfca0807a ("hw/sdhci: introduce standard SD host controller")
Reported-by: Alexander Bulekov <email address hidden>
Signed-off-by: Philippe Mathieu-Daudé <email address hidden>
---
Cc: <email address hidden>
---
hw/sd/sdhci.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c .ecbf84e9d3f 100644 DATA(s- >prnsts) ) { WRITE(s- >blksize, mask, value); WRITE(s- >blksize, mask, extract32(value, 0, 12));
MASKED_ WRITE(s- >blkcnt, mask >> 16, value >> 16);
index 60f083b84c1.
--- a/hw/sd/sdhci.c
+++ b/hw/sd/sdhci.c
@@ -1104,7 +1104,7 @@ sdhci_write(void *opaque, hwaddr offset, uint64_t val, unsigned size)
break;
case SDHC_BLKSIZE:
if (!TRANSFERRING_
- MASKED_
+ MASKED_
}
--
2.26.2