SEND_IF_COND got introduced by Spec v2.
Firmwares use the CMD8 in SPI mode to poll the Spec version supported:
7.2.1 Mode Selection and Initialization (SPI mode)
The SD Card is powered up in the SD mode. It will enter
SPI mode if the CS signal is asserted (negative) during
the reception of the reset command (CMD0). If the card
recognizes that the SD mode is required it will not
respond to the command and remain in the SD mode. If SPI
mode is required, the card will switch to SPI and respond
with the SPI mode R1 response.
The only way to return to the SD mode is by entering the
power cycle. In SPI mode, the SD Card protocol state
machine in SD mode is not observed. All the SD Card
commands supported in SPI mode are always available.
[...]
If the card indicates an illegal command, the card is
legacy and does not support CMD8. If the card supports
CMD8 and can operate on the supplied voltage, the response
echoes back the supply voltage and the check pattern that
were set in the command argument.
This change restore the SSI/SD functionality of the Stellaris
LM3S6965EVB board.
Message-Id: 201204252110.20873.paul@codesourcery.com
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
Paolo, I guess this would be a good use of the
Based-on: 201204252110.20873.paul@codesourcery.com tag in
the git history :P
hw/sd/sd.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/hw/sd/sd.c b/hw/sd/sd.c
index 81f178b36e..da65f2b178 100644
--- a/hw/sd/sd.c
+++ b/hw/sd/sd.c
@@ -1017,7 +1017,9 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req)
break;
case 8: /* CMD8: SEND_IF_COND */
- /* Physical Layer Specification Version 2.00 command */
+ if (sd->spec_version < SD_PHY_SPECv2_00_VERS) {
+ break;
+ }
if (sd->state != sd_idle_state) {
break;
}
--
2.17.1