On 1/28/21 7:30 AM, Bin Meng wrote: > From: Bin Meng <[email protected]> > > 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 <[email protected]> > > --- > > Changes in v4: > - new patch: handle the rest commands with R1b response type > > hw/sd/ssi-sd.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/hw/sd/ssi-sd.c b/hw/sd/ssi-sd.c > index 907d681d19..97ee58e20c 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) {
Why not also check CMD13 for completeness? Otherwise: Reviewed-by: Philippe Mathieu-Daudé <[email protected]> > + s->stopping = 1; > + } > + > cardstatus = ldl_be_p(longresp); > status = 0; > if (((cardstatus >> 9) & 0xf) < 4) >
