qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 10/22] hw/sd: sd: Remove duplicated codes in single/multiple


From: Alistair Francis
Subject: Re: [PATCH 10/22] hw/sd: sd: Remove duplicated codes in single/multiple block read/write
Date: Wed, 13 Jan 2021 09:02:17 -0800

On Thu, Dec 31, 2020 at 3:42 AM Bin Meng <bmeng.cn@gmail.com> wrote:
>
> From: Bin Meng <bin.meng@windriver.com>
>
> The single block read (CMD17) codes are the same as the multiple
> block read (CMD18). Merge them into one. The same applies to single
> block write (CMD24) and multiple block write (CMD25).
>
> Signed-off-by: Bin Meng <bin.meng@windriver.com>

Acked-by: Alistair Francis <alistair.francis@wdc.com>

Alistair

> ---
>
>  hw/sd/sd.c | 47 -----------------------------------------------
>  1 file changed, 47 deletions(-)
>
> diff --git a/hw/sd/sd.c b/hw/sd/sd.c
> index 52c7217fe1..1ada616e1e 100644
> --- a/hw/sd/sd.c
> +++ b/hw/sd/sd.c
> @@ -1180,24 +1180,6 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, 
> SDRequest req)
>          break;
>
>      case 17:   /* CMD17:  READ_SINGLE_BLOCK */
> -        switch (sd->state) {
> -        case sd_transfer_state:
> -
> -            if (addr + sd->blk_len > sd->size) {
> -                sd->card_status |= ADDRESS_ERROR;
> -                return sd_r1;
> -            }
> -
> -            sd->state = sd_sendingdata_state;
> -            sd->data_start = addr;
> -            sd->data_offset = 0;
> -            return sd_r1;
> -
> -        default:
> -            break;
> -        }
> -        break;
> -
>      case 18:   /* CMD18:  READ_MULTIPLE_BLOCK */
>          switch (sd->state) {
>          case sd_transfer_state:
> @@ -1244,35 +1226,6 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, 
> SDRequest req)
>
>      /* Block write commands (Class 4) */
>      case 24:   /* CMD24:  WRITE_SINGLE_BLOCK */
> -        switch (sd->state) {
> -        case sd_transfer_state:
> -            /* Writing in SPI mode not implemented.  */
> -            if (sd->spi)
> -                break;
> -
> -            if (addr + sd->blk_len > sd->size) {
> -                sd->card_status |= ADDRESS_ERROR;
> -                return sd_r1;
> -            }
> -
> -            sd->state = sd_receivingdata_state;
> -            sd->data_start = addr;
> -            sd->data_offset = 0;
> -            sd->blk_written = 0;
> -
> -            if (sd_wp_addr(sd, sd->data_start)) {
> -                sd->card_status |= WP_VIOLATION;
> -            }
> -            if (sd->csd[14] & 0x30) {
> -                sd->card_status |= WP_VIOLATION;
> -            }
> -            return sd_r1;
> -
> -        default:
> -            break;
> -        }
> -        break;
> -
>      case 25:   /* CMD25:  WRITE_MULTIPLE_BLOCK */
>          switch (sd->state) {
>          case sd_transfer_state:
> --
> 2.25.1
>
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]