On 12/31/20 12:29 PM, Bin Meng wrote: > From: Bin Meng <bin.m...@windriver.com> > > commit f6fb1f9b319f ("sdcard: Correct CRC16 offset in sd_function_switch()") > changed the 16-bit CRC to be stored at offset 64. In fact, this CRC > calculation is completely wrong.
Yeah: https://www.mail-archive.com/qemu-devel@nongnu.org/msg531790.html > From the original codes, it wants > to calculate the CRC16 of the first 64 bytes of sd->data[], however > passing 64 as the `width` to sd_crc16() actually counts 256 bytes > starting from the `message` for the CRC16 calculation, which is not > what we want. > > Besides that, it seems exisitng sd_crc16() algorithm does not match > the SD spec, which says CRC16 is the CCITT one but the calculation > does not produce expected result. It turns out the CRC16 was never > transfered outside the sd core, Typos "existing", "transferred". Well, I tried by adding tests, see: https://www.mail-archive.com/qemu-devel@nongnu.org/msg531777.html (Series:) https://www.mail-archive.com/qemu-devel@nongnu.org/msg531768.html > as in sd_read_byte() we see: > > if (sd->data_offset >= 64) > sd->state = sd_transfer_state; > > Given above reaons, let's drop it. > > Signed-off-by: Bin Meng <bin.m...@windriver.com> > --- > > hw/sd/sd.c | 18 ------------------ > 1 file changed, 18 deletions(-)