summaryrefslogtreecommitdiffstats
path: root/hw/sd
diff options
context:
space:
mode:
authorBin Meng2021-02-16 16:02:25 +0100
committerPhilippe Mathieu-Daudé2021-02-20 00:17:09 +0100
commitc557e08d9c9729cdf6b98f7a9c1ebf72fa25e916 (patch)
treeaae5cf996288aee2453b1bf4724045a4684cf023 /hw/sd
parenthw/sd: sd: Skip write protect groups check in CMD24/25 for high capacity cards (diff)
downloadqemu-c557e08d9c9729cdf6b98f7a9c1ebf72fa25e916.tar.gz
qemu-c557e08d9c9729cdf6b98f7a9c1ebf72fa25e916.tar.xz
qemu-c557e08d9c9729cdf6b98f7a9c1ebf72fa25e916.zip
hw/sd: sd: Bypass the RCA check for CMD13 in SPI mode
Unlike SD mode, when SD card is working in SPI mode, the argument of CMD13 is stuff bits. Hence we should bypass the RCA check. See "Physical Layer Specification Version 8.00", chapter 7.3.1.3 Detailed Command Description (SPI mode): "The card shall ignore stuff bits and reserved bits in an argument" and Table 7-3 Commands and Arguments (SPI mode): "CMD13 Argument [31:0] stuff bits" Signed-off-by: Bin Meng <bin.meng@windriver.com> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-Id: <20210216150225.27996-9-bmeng.cn@gmail.com> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Diffstat (limited to 'hw/sd')
-rw-r--r--hw/sd/sd.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/hw/sd/sd.c b/hw/sd/sd.c
index 3a515a5365..8b397effbc 100644
--- a/hw/sd/sd.c
+++ b/hw/sd/sd.c
@@ -1163,8 +1163,9 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req)
case 13: /* CMD13: SEND_STATUS */
switch (sd->mode) {
case sd_data_transfer_mode:
- if (sd->rca != rca)
+ if (!sd->spi && sd->rca != rca) {
return sd_r0;
+ }
return sd_r1;