hw/sd.c: Handle CRC and locked-card errors in normal code path
authorPeter Maydell <peter.maydell@linaro.org>
Sun, 18 Dec 2011 20:37:56 +0000 (21:37 +0100)
committerAndrzej Zaborowski <andrew.zaborowski@intel.com>
Wed, 21 Dec 2011 04:01:35 +0000 (05:01 +0100)
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>
Signed-off-by: Andrzej Zaborowski <andrew.zaborowski@intel.com>
hw/sd.c

diff --git a/hw/sd.c b/hw/sd.c
index 57925af1da9991f9142a1623be1033d09be28c6f..9116f67b83921b8760e0f3e7ca77fa2f2718eeda 100644 (file)
--- 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:
This page took 0.029366 seconds and 4 git commands to generate.