mirror of https://github.com/xemu-project/xemu.git
hw/sd/sdcard: Reset both start/end addresses on error
From the Spec "4.3.5 Erase": The host should adhere to the following command sequence: ERASE_WR_BLK_START, ERASE_WR_BLK_END and ERASE (CMD38). If an erase (CMD38) or address setting (CMD32, 33) command is received out of sequence, the card shall set the ERASE_SEQ_ERROR bit in the status register and reset the whole sequence. Reset both addresses if the ERASE command occured out of sequence (one of the start/end address is not set). Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Tested-by: Alexander Bulekov <alxndr@bu.edu> Message-Id: <20201015063824.212980-5-f4bug@amsat.org>
This commit is contained in:
parent
7dae0a1dd1
commit
c8c8b3f1c1
|
@ -755,6 +755,8 @@ static void sd_erase(SDState *sd)
|
|||
if (sd->erase_start == INVALID_ADDRESS
|
||||
|| sd->erase_end == INVALID_ADDRESS) {
|
||||
sd->card_status |= ERASE_SEQ_ERROR;
|
||||
sd->erase_start = INVALID_ADDRESS;
|
||||
sd->erase_end = INVALID_ADDRESS;
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue