On 6/21/24 10:05 AM, Philippe Mathieu-Daudé wrote:
It will be useful later to assert only AC commands
(Addressed point-to-point Commands, defined as the
'sd_ac' enum) extract the RCA value from the command
argument.

Signed-off-by: Philippe Mathieu-Daudé <phi...@linaro.org>


Reviewed-by: Cédric Le Goater <c...@redhat.com>

Thanks,

C.


---
  hw/sd/sd.c | 8 +++++++-
  1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/hw/sd/sd.c b/hw/sd/sd.c
index bc47ae36bc..cb9d85bb11 100644
--- a/hw/sd/sd.c
+++ b/hw/sd/sd.c
@@ -1102,7 +1102,7 @@ static sd_rsp_type_t sd_cmd_SET_BLOCK_COUNT(SDState *sd, 
SDRequest req)
static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req)
  {
-    uint16_t rca = sd_req_get_rca(sd, req);
+    uint16_t rca;
      uint64_t addr = (sd->ocr & (1 << 30)) ? (uint64_t) req.arg << 9 : req.arg;
sd->last_cmd_name = sd_cmd_name(req.cmd);
@@ -1160,6 +1160,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, 
SDRequest req)
          break;
case 7: /* CMD7: SELECT/DESELECT_CARD */
+        rca = sd_req_get_rca(sd, req);
          switch (sd->state) {
          case sd_standby_state:
              if (sd->rca != rca)
@@ -1214,6 +1215,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, 
SDRequest req)
          return sd_r7;
case 9: /* CMD9: SEND_CSD */
+        rca = sd_req_get_rca(sd, req);
          switch (sd->state) {
          case sd_standby_state:
              if (sd->rca != rca)
@@ -1237,6 +1239,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, 
SDRequest req)
          break;
case 10: /* CMD10: SEND_CID */
+        rca = sd_req_get_rca(sd, req);
          switch (sd->state) {
          case sd_standby_state:
              if (sd->rca != rca)
@@ -1277,6 +1280,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, 
SDRequest req)
          break;
case 13: /* CMD13: SEND_STATUS */
+        rca = sd_req_get_rca(sd, req);
          switch (sd->mode) {
          case sd_data_transfer_mode:
              if (!sd_is_spi(sd) && sd->rca != rca) {
@@ -1291,6 +1295,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, 
SDRequest req)
          break;
case 15: /* CMD15: GO_INACTIVE_STATE */
+        rca = sd_req_get_rca(sd, req);
          switch (sd->mode) {
          case sd_data_transfer_mode:
              if (sd->rca != rca)
@@ -1523,6 +1528,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, 
SDRequest req)
/* Application specific commands (Class 8) */
      case 55:  /* CMD55:  APP_CMD */
+        rca = sd_req_get_rca(sd, req);
          switch (sd->state) {
          case sd_ready_state:
          case sd_identification_state:


Reply via email to