Re: [RFC PATCH 10/10] hw/sd: Add sd_cmd_SEND_RELATIVE_ADDR() handler

2021-06-25 Thread Bin Meng
On Thu, Jun 24, 2021 at 10:28 PM Philippe Mathieu-Daudé  wrote:
>
> Signed-off-by: Philippe Mathieu-Daudé 
> ---
>  hw/sd/sd.c | 28 +++-
>  1 file changed, 15 insertions(+), 13 deletions(-)
>

Reviewed-by: Bin Meng 



[RFC PATCH 10/10] hw/sd: Add sd_cmd_SEND_RELATIVE_ADDR() handler

2021-06-24 Thread Philippe Mathieu-Daudé
Signed-off-by: Philippe Mathieu-Daudé 
---
 hw/sd/sd.c | 28 +++-
 1 file changed, 15 insertions(+), 13 deletions(-)

diff --git a/hw/sd/sd.c b/hw/sd/sd.c
index 70dde5ae0b8..43a59b34ee8 100644
--- a/hw/sd/sd.c
+++ b/hw/sd/sd.c
@@ -1010,6 +1010,20 @@ static sd_rsp_type_t sd_cmd_ALL_SEND_CID(SDState *sd, 
SDRequest req)
 return sd_r2_i;
 }
 
+static sd_rsp_type_t sd_cmd_SEND_RELATIVE_ADDR(SDState *sd, SDRequest req)
+{
+switch (sd->state) {
+case sd_identification_state:
+case sd_standby_state:
+sd->state = sd_standby_state;
+sd_set_rca(sd);
+return sd_r6;
+
+default:
+return sd_invalid_state_for_cmd(sd, req);
+}
+}
+
 static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req)
 {
 uint32_t rca = 0x;
@@ -1049,19 +1063,6 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, 
SDRequest req)
 
 switch (req.cmd) {
 /* Basic commands (Class 0 and Class 1) */
-case 3:/* CMD3:   SEND_RELATIVE_ADDR */
-switch (sd->state) {
-case sd_identification_state:
-case sd_standby_state:
-sd->state = sd_standby_state;
-sd_set_rca(sd);
-return sd_r6;
-
-default:
-break;
-}
-break;
-
 case 4:/* CMD4:   SEND_DSR */
 switch (sd->state) {
 case sd_standby_state:
@@ -2106,6 +2107,7 @@ static const SDProto sd_proto_sd = {
 [0] = sd_cmd_GO_IDLE_STATE,
 [1] = sd_cmd_illegal,
 [2] = sd_cmd_ALL_SEND_CID,
+[3] = sd_cmd_SEND_RELATIVE_ADDR,
 [5] = sd_cmd_illegal,
 [52 ... 54] = sd_cmd_illegal,
 [58]= sd_cmd_illegal,
-- 
2.31.1