On 6/28/24 9:00 AM, Philippe Mathieu-Daudé wrote:
> SWITCH_FUNCTION is only allowed in TRANSFER state
> (See 4.8 "Card State Transition Table).
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> Tested-by: Cédric Le Goater <clg@redhat.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Thanks,
C.
> ---
> hw/sd/sd.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/hw/sd/sd.c b/hw/sd/sd.c
> index 7533a78cf6..8f441e418c 100644
> --- a/hw/sd/sd.c
> +++ b/hw/sd/sd.c
> @@ -1205,6 +1205,10 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req)
> if (sd->mode != sd_data_transfer_mode) {
> return sd_invalid_mode_for_cmd(sd, req);
> }
> + if (sd->state != sd_transfer_state) {
> + return sd_invalid_state_for_cmd(sd, req);
> + }
> +
> sd_function_switch(sd, req.arg);
> sd->state = sd_sendingdata_state;
> sd->data_start = 0;