[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <200903181052.39586.wolfgang.mues@auerswald.de>
Date: Wed, 18 Mar 2009 10:52:39 +0100
From: Wolfgang Mües <wolfgang.mues@...rswald.de>
To: Pierre Ossman <drzeus@...eus.cx>
Cc: "Andrew Morton" <akpm@...ux-foundation.org>,
"Matt Fleming" <matt@...sole-pimps.org>,
"David Brownell" <dbrownell@...rs.sourceforge.net>,
"Mike Frysinger" <vapier.adi@...il.com>,
linux-kernel@...r.kernel.org
Subject: [PATCH 4/7 revised] mmc_spi: do not check CID and CSD blocks with CRC16
From: Wolfgang Muees <wolfgang.mues@...rswald.de>
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@...rswald.de>
---
This is patch #4 revised to apply after #1,#2,#5 (already applied)
and #3 (acked by David Brownell). Documentation was extended.
There were some suggestions to move this check into an upper layer
but none of these tries were a valid solution, so stick with this
minimal change here in the readblock function.
diff -uprN 2_6_29_rc7_patch1253/drivers/mmc/host/mmc_spi.c 2_6_29_rc7_patch12534/drivers/mmc/host/mmc_spi.c
--- 2_6_29_rc7_patch1253/drivers/mmc/host/mmc_spi.c 2009-03-16 12:15:36.000000000 +0100
+++ 2_6_29_rc7_patch12534/drivers/mmc/host/mmc_spi.c 2009-03-18 10:32:45.000000000 +0100
@@ -767,7 +767,13 @@ mmc_spi_readblock(struct mmc_spi_host *h
return -EIO;
}
- if (host->mmc->use_spi_crc) {
+ /* Omitt the CRC check for CID reads. There are some SDHC
+ * cards which don't supply a valid CRC after CID reads.
+ * All data reads have len == MMC_SPI_BLOCKSIZE, so use this
+ * check to distinguish between data reads and CID/CSD reads.
+ * Note that CID/CSD has it's own CRC7 value inside the structure.
+ */
+ 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@...rswald.de
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@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists