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: