Message ID | 20240621080554.18986-16-philmd@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | hw/sd/sdcard: Accumulation of cleanups and fixes | expand |
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é <philmd@linaro.org> Reviewed-by: Cédric Le Goater <clg@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:
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:
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é <philmd@linaro.org> --- hw/sd/sd.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)