mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Wolfgang Mües" <wolfgang.mues@auerswald.de>
To: Pierre Ossman <drzeus@drzeus.cx>
Cc: "Andrew Morton" <akpm@linux-foundation.org>,
	"Matt Fleming" <matt@console-pimps.org>,
	"David Brownell" <dbrownell@users.sourceforge.net>,
	"Mike Frysinger" <vapier.adi@gmail.com>,
	linux-kernel@vger.kernel.org
Subject: [PATCH 4/7 revised] mmc_spi: do not check CID and CSD blocks with CRC16
Date: Wed, 18 Mar 2009 10:52:39 +0100	[thread overview]
Message-ID: <200903181052.39586.wolfgang.mues@auerswald.de> (raw)

From: Wolfgang Muees <wolfgang.mues@auerswald.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@auerswald.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@Auerswald.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

             reply	other threads:[~2009-03-18  9:53 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-18  9:52 Wolfgang Mües [this message]
2009-03-24 20:11 ` David Brownell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200903181052.39586.wolfgang.mues@auerswald.de \
    --to=wolfgang.mues@auerswald.de \
    --cc=akpm@linux-foundation.org \
    --cc=dbrownell@users.sourceforge.net \
    --cc=drzeus@drzeus.cx \
    --cc=linux-kernel@vger.kernel.org \
    --cc=matt@console-pimps.org \
    --cc=vapier.adi@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®