EXT_CSD Register : CSD_STRUCTURE vs CSD_CSD_REV
s-ghorai at ti.com
Mon Sep 14 22:46:34 EDT 2009
Thanks for the information.
And what I understood from MMCA specification is that -
EXT_CSD_REV: Defines the fixed parameters. related to the EXT_CSD, according to its revision. Nothing to do with MMCA specification version or > 4GB card.
SO, I need just one more help from you to browse the MMCA specification where it's mentioned that if Card is >4GB then EXT_CSD_REV Revision should be > 2 (Rev 1.2)?
And again the fact I mentioned in my previous email that below fact is from Symbian OS too.
So please reply sometime to helping me understand better.
Thanks & regards,
From: Pierre Ossman [mailto:pierre at ossman.eu]
Sent: 2009-09-15 01:22
To: Ghorai, Sukumar
Cc: linux-mmc at vger.kernel.org; linux-arm-kernel at lists.infradead.org; Chikkature Rajashekar, Madhusudhan; Benjamin.Telya at sandisk.com; drzeus-list at drzeus.cx; Pandita, Vikram; Joshi, Rhishi; Sawant, Anand; Raju, Veeramanikandan
Subject: Re: EXT_CSD Register : CSD_STRUCTURE vs CSD_CSD_REV
On Mon, 14 Sep 2009 20:34:35 +0530
"Ghorai, Sukumar" <s-ghorai at ti.com> wrote:
> I am working in Linux MMC driver.
> Recently I came across one 16GB MMC card where EXT_CSD Register having EXT_CSD_REV field as ZERO, which is valid according to Specification. But card is not working due to following reason -
> 1. As we know there are two fields in Extended CSD Register - CSD_STRUCTURE Version & EXT_CSD_REV Revision .
> 1. In mmc.c/ mmc_read_ext_csd ()
> * Implementation expecting EXT_CSD_REV non zero (e.g. >3 in current code)
> * I think it could be checking for CSD_STRUCTURE version.
> * Because EXT_CSD_REV having Zero is the valid Field.
> * This is the way it's done in other OS too.
The opposite, it expects the version to be below 3 as those are the
only ones it knows about. Checking the CSD version for the EXT_CSD
would just be silly.
> 1. To check the high capacity card.
> * We could check in access mode from OCR. This is not in Linux exactly and steps to check the EXT_CSD_REV.
> * This is done in some other OS too.
Checking the OCR is insufficient if I remember the spec correctly, so
we ignore it completely. The EXT_CSD needs to be correct for high
capacity to work anyway.
> So do you think we can update the code to check the CSD_STRUCTURE Version? Please let us know your opinion.
No, as that would violate the spec and possibly misinterpret some cards
To handle your card you would have to build some kind of quirks system
so that the kernel can identify that this card is buggy and compensate
-- Pierre Ossman
WARNING: This correspondence is being monitored by the
Swedish government. Make sure your server uses encryption
for SMTP traffic and consider using PGP for end-to-end
More information about the linux-arm-kernel