[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
[Qemu-devel] [PATCH v2 3/4] sdcard: Implement the UHS-I SWITCH_FUNCTION entries (Spec v3), Philippe Mathieu-Daudé, 2018/05/09
[Qemu-devel] [PATCH v2 4/4] sdcard: Add a 'uhs' property, update the OCR register ACCEPT_SWITCH_1V8 bit, Philippe Mathieu-Daudé, 2018/05/09