Patchwork [06/10] hw/sd.c: Handle CRC and locked-card errors in normal code path

login
register
mail settings
Submitter Peter Maydell
Date Dec. 18, 2011, 8:37 p.m.
Message ID <1324240680-26905-7-git-send-email-peter.maydell@linaro.org>
Download mbox | patch
Permalink /patch/132117/
State New
Headers show

Comments

Peter Maydell - Dec. 18, 2011, 8:37 p.m.
Handle returning CRC and locked-card errors in the same code path
we use for other responses. This makes no difference in behaviour
but means that these error responses will be printed by the debug
logging code.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 hw/sd.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

Patch

diff --git a/hw/sd.c b/hw/sd.c
index 57925af..9116f67 100644
--- a/hw/sd.c
+++ b/hw/sd.c
@@ -1296,7 +1296,8 @@  int sd_do_command(SDState *sd, SDRequest *req,
 
     if (sd_req_crc_validate(req)) {
         sd->card_status |= COM_CRC_ERROR;
-        return 0;
+        rtype = sd_illegal;
+        goto send_response;
     }
 
     sd->card_status &= ~CARD_STATUS_B;
@@ -1306,7 +1307,8 @@  int sd_do_command(SDState *sd, SDRequest *req,
         if (!cmd_valid_while_locked(sd, req)) {
             sd->card_status |= ILLEGAL_COMMAND;
             fprintf(stderr, "SD: Card is locked\n");
-            return 0;
+            rtype = sd_illegal;
+            goto send_response;
         }
     }
 
@@ -1322,6 +1324,7 @@  int sd_do_command(SDState *sd, SDRequest *req,
 
     sd->current_cmd = req->cmd;
 
+send_response:
     switch (rtype) {
     case sd_r1:
     case sd_r1b: