hw/sd: ssi-sd: Fix STOP_TRANSMISSION (CMD12) response
commit5b45a3666ef77ec65f49b0b074a28f1ef460b9c5
authorBin Meng <bin.meng@windriver.com>
Thu, 28 Jan 2021 06:30:34 +0000 (28 14:30 +0800)
committerPhilippe Mathieu-Daudé <f4bug@amsat.org>
Fri, 19 Feb 2021 23:17:09 +0000 (20 00:17 +0100)
treea02ebf876636f8002559c5477b6d642e83fe0113
parent6ae29af3ed4b24dc733ed4186ebe906b6d1063cd
hw/sd: ssi-sd: Fix STOP_TRANSMISSION (CMD12) response

CMD12's response type is R1b, which is basically a R1 plus optional
addition of the busy signal token that can be any number of bytes.
A zero value indicates card is busy and a non-zero value indicates
the card is ready for the next command.

Current implementation sends the busy signal token without sending
the R1 first. This does not break the U-Boot/Linux mmc_spi driver,
but it does not make the VxWorks driver happy.

Move the testing logic of s->stopping in the SSI_SD_RESPONSE state
a bit later, after the first byte of the card reponse is sent out,
to conform with the spec. After the busy signal token is sent, the
state should be transferred to SSI_SD_CMD.

Fixes: 775616c3ae8c ("Partial SD card SPI mode support")
Signed-off-by: Bin Meng <bin.meng@windriver.com>
Message-Id: <20210128063035.15674-9-bmeng.cn@gmail.com>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
hw/sd/ssi-sd.c