Re: [PATCH 4/7] mmc_spi: do not check CID and CSD blocks with CRC16

From: David Brownell
Date: Wed Mar 11 2009 - 16:07:57 EST


On Wednesday 11 March 2009, Wolfgang Mües wrote:
> From: Wolfgang Muees <wolfgang.mues@xxxxxxxxxxxx>
>
> o Some cards are not able to calculate a valid CRC16 value
> for CID and CSD reads (CRC for 512 byte data blocks is OK).
> So ommit the check for CRC16, as CID and CSD have a checksum
> inside the block.
>
> Signed-off-by: Wolfgang Muees <wolfgang.mues@xxxxxxxxxxxx>

Acked-by: David Brownell <dbrownell@xxxxxxxxxxxxxxxxxxxxx>

>
> ---
> This is one of a line of patches to enhance the usability of
> the mmc spi host port driver from "don't work with most SD cards"
> to "work with nearly all SD cards" (including those ugly cards
> with non-byte-aligned responses).
>
> diff -uprN 2_6_29_rc7_patch3_delayed_data_response/drivers/mmc/host/mmc_spi.c 2_6_29_rc7_patch4_no_crc_on_CID_CSD/drivers/mmc/host/mmc_spi.c
> --- 2_6_29_rc7_patch3_delayed_data_response/drivers/mmc/host/mmc_spi.c 2009-03-11 13:42:48.000000000 +0100
> +++ 2_6_29_rc7_patch4_no_crc_on_CID_CSD/drivers/mmc/host/mmc_spi.c 2009-03-11 13:43:13.000000000 +0100
> @@ -762,7 +762,11 @@ mmc_spi_readblock(struct mmc_spi_host *h
> return -EIO;
> }
>
> - if (host->mmc->use_spi_crc) {
> + /* Omitt the CRC check for CID and CSD reads. There are some SDHC
> + * cards which don't supply a valid CRC after CID reads.
> + * Note that the CID has it's own CRC7 value inside the data block.
> + */
> + if (host->mmc->use_spi_crc && (t->len == MMC_SPI_BLOCKSIZE)) {
> u16 crc = crc_itu_t(0, t->rx_buf, t->len);
>
> be16_to_cpus(&scratch->crc_val);
>
> ---
> regards
>
> i. A. Wolfgang Mües
> --
> Auerswald GmbH & Co. KG
> Hardware Development
> Telefon: +49 (0)5306 9219 0
> Telefax: +49 (0)5306 9219 94
> E-Mail: Wolfgang.Mues@xxxxxxxxxxxx
> Web: http://www.auerswald.de
>  
> --------------------------------------------------------------
> Auerswald GmbH & Co. KG, Vor den Grashöfen 1, 38162 Cremlingen
> Registriert beim AG Braunschweig HRA 13289
> p.h.G Auerswald Geschäftsführungsges. mbH
> Registriert beim AG Braunschweig HRB 7463
> Geschäftsführer: Dipl-Ing. Gerhard Auerswald
>
>


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/