qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v2 2/4] sdcard: Correct CRC16 offset in sd_funct


From: Peter Maydell
Subject: Re: [Qemu-devel] [PATCH v2 2/4] sdcard: Correct CRC16 offset in sd_function_switch()
Date: Mon, 14 May 2018 16:50:14 +0100

On 9 May 2018 at 07:01, Philippe Mathieu-Daudé <address@hidden> wrote:
> Per the Physical Layer Simplified Spec. "4.3.10.4 Switch Function Status":
>
>   The block length is predefined to 512 bits
>
> and "4.10.2 SD Status":
>
>   The SD Status contains status bits that are related to the SD Memory Card
>   proprietary features and may be used for future application-specific usage.
>   The size of the SD Status is one data block of 512 bit. The content of this
>   register is transmitted to the Host over the DAT bus along with a 16-bit 
> CRC.
>
> Thus the 16-bit CRC goes at offset 64.
>
> Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
> ---
>  hw/sd/sd.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/hw/sd/sd.c b/hw/sd/sd.c
> index 5fb4787671..24aaf0c767 100644
> --- a/hw/sd/sd.c
> +++ b/hw/sd/sd.c
> @@ -791,7 +791,7 @@ static void sd_function_switch(SDState *sd, uint32_t arg)
>          sd->data[14 + (i >> 1)] = new_func << ((i * 4) & 4);
>      }
>      memset(&sd->data[17], 0, 47);
> -    stw_be_p(sd->data + 65, sd_crc16(sd->data, 64));
> +    stw_be_p(sd->data + 64, sd_crc16(sd->data, 64));
>  }
>
>  static inline bool sd_wp_addr(SDState *sd, uint64_t addr)
> --

Oops, yes, off-by-one error that's been present forever (it was
there before we did the conversion to stw_be_p()).

Applied this one to target-arm.next.

thanks
-- PMM



reply via email to

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