From: Bin Meng Date: Thu, 28 Jan 2021 06:30:35 +0000 (+0800) Subject: hw/sd: ssi-sd: Handle the rest commands with R1b response type X-Git-Tag: v6.0.0-rc0~73^2~9 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=17674695aba3d3fdeec4aeed7920fb760956c807;p=thirdparty%2Fqemu.git hw/sd: ssi-sd: Handle the rest commands with R1b response type Besides CMD12, the following command's reponse type is R1b: - SET_WRITE_PROT (CMD28) - CLR_WRITE_PROT (CMD29) - ERASE (CMD38) Reuse the same s->stopping to indicate a R1b reponse is needed. Signed-off-by: Bin Meng Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20210128063035.15674-10-bmeng.cn@gmail.com> Signed-off-by: Philippe Mathieu-Daudé --- diff --git a/hw/sd/ssi-sd.c b/hw/sd/ssi-sd.c index 907d681d19e..97ee58e20cf 100644 --- a/hw/sd/ssi-sd.c +++ b/hw/sd/ssi-sd.c @@ -194,6 +194,12 @@ static uint32_t ssi_sd_transfer(SSIPeripheral *dev, uint32_t val) /* CMD13 returns a 2-byte statuse work. Other commands only return the first byte. */ s->arglen = (s->cmd == 13) ? 2 : 1; + + /* handle R1b */ + if (s->cmd == 28 || s->cmd == 29 || s->cmd == 38) { + s->stopping = 1; + } + cardstatus = ldl_be_p(longresp); status = 0; if (((cardstatus >> 9) & 0xf) < 4)