All of lore.kernel.org
 help / color / mirror / Atom feed
From: <subhashj@codeaurora.org>
To: 'Arindam Nath' <arindam.nath@amd.com>, cjb@laptop.org
Cc: zhangfei.gao@gmail.com, prakity@marvell.com,
	linux-mmc@vger.kernel.org, henry.su@amd.com, aaron.lu@amd.com,
	anath.amd@gmail.com
Subject: RE: [PATCH v2 08/12] mmc: sd: report correct speed and capacity of uhs cards
Date: Thu, 10 Mar 2011 17:18:21 +0530	[thread overview]
Message-ID: <001801cbdf19$10c9d3f0$325d7bd0$@org> (raw)
In-Reply-To: <1299238369-1768-9-git-send-email-arindam.nath@amd.com>



> -----Original Message-----
> From: linux-mmc-owner@vger.kernel.org [mailto:linux-mmc-
> owner@vger.kernel.org] On Behalf Of Arindam Nath
> Sent: Friday, March 04, 2011 5:03 PM
> To: cjb@laptop.org
> Cc: zhangfei.gao@gmail.com; prakity@marvell.com;
> subhashj@codeaurora.org; linux-mmc@vger.kernel.org; henry.su@amd.com;
> aaron.lu@amd.com; anath.amd@gmail.com; Arindam Nath
> Subject: [PATCH v2 08/12] mmc: sd: report correct speed and capacity of
> uhs cards
> 
> Since only UHS-I cards respond with S18A set in response to ACMD41,
> we set the card as ultra-high-speed after successfull initialization.
> We can have SDHC or SDXC UHS-I cards, so we need to decide based on
> C_SIZE field of CSDv2.0 register. According to Physical Layer spec
> v3.01, the minimum value of C_SIZE for SDXC card is 00FFFFh.
> 
> Signed-off-by: Arindam Nath <arindam.nath@amd.com>
> ---
>  drivers/mmc/core/bus.c   |   11 ++++++++---
>  drivers/mmc/core/sd.c    |   10 +++++++++-
>  include/linux/mmc/card.h |    7 +++++++
>  3 files changed, 24 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/mmc/core/bus.c b/drivers/mmc/core/bus.c
> index 63667a8..ceeefa4 100644
> --- a/drivers/mmc/core/bus.c
> +++ b/drivers/mmc/core/bus.c
> @@ -274,8 +274,12 @@ int mmc_add_card(struct mmc_card *card)
>  		break;
>  	case MMC_TYPE_SD:
>  		type = "SD";
> -		if (mmc_card_blockaddr(card))
> -			type = "SDHC";
> +		if (mmc_card_blockaddr(card)) {
> +			if (mmc_card_ext_capacity(card))
> +				type = "SDXC";
> +			else
> +				type = "SDHC";
> +		}
>  		break;
>  	case MMC_TYPE_SDIO:
>  		type = "SDIO";
> @@ -298,7 +302,8 @@ int mmc_add_card(struct mmc_card *card)
>  	} else {
>  		printk(KERN_INFO "%s: new %s%s%s card at address %04x\n",
>  			mmc_hostname(card->host),
> -			mmc_card_highspeed(card) ? "high speed " : "",
> +			mmc_card_ultrahighspeed(card) ? "ultra high speed "
:

we should use "sd" prefix before ultrahighspeed. Also can't we use name as
ush instead of ultrahighspeed? What about mmc_card_sd_ush().
Also with the USH, SD card's DDR50 mode also falls under UHS mode. And we
have DDR mode for MMC card as well (mmc_card_ddr_mode()). 
 
> +			(mmc_card_highspeed(card) ? "high speed " : ""),
>  			mmc_card_ddr_mode(card) ? "DDR " : "",
>  			type, card->rca);
>  	}
> diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
> index df98a2c..be01397 100644
> --- a/drivers/mmc/core/sd.c
> +++ b/drivers/mmc/core/sd.c
> @@ -129,7 +129,7 @@ static int mmc_decode_csd(struct mmc_card *card)
>  		break;
>  	case 1:
>  		/*
> -		 * This is a block-addressed SDHC card. Most
> +		 * This is a block-addressed SDHC or SDXC card. Most
>  		 * interesting fields are unused and have fixed
>  		 * values. To avoid getting tripped by buggy cards,
>  		 * we assume those fixed values ourselves.
> @@ -143,6 +143,7 @@ static int mmc_decode_csd(struct mmc_card *card)
>  		e = UNSTUFF_BITS(resp, 96, 3);
>  		csd->max_dtr	  = tran_exp[e] * tran_mant[m];
>  		csd->cmdclass	  = UNSTUFF_BITS(resp, 84, 12);
> +		csd->c_size	  = UNSTUFF_BITS(resp, 48, 22);
> 
>  		m = UNSTUFF_BITS(resp, 48, 22);
>  		csd->capacity     = (1 + m) << 10;
> @@ -922,6 +923,13 @@ static int mmc_sd_init_card(struct mmc_host *host,
> u32 ocr,
>  		err = mmc_sd_init_uhs_card(card);
>  		if (err)
>  			goto free_card;
> +
> +		/* Card is an ultra-high-speed card */
> +		mmc_card_set_ultrahighspeed(card);
> +
> +		/* SDXC cards have a minimum C_SIZE of 0x00FFFF */
> +		if (card->csd.c_size >= 0xFFFF)
> +			mmc_card_set_ext_capacity(card);
>  	} else {
>  		/*
>  		 * Attempt to change to high-speed (if supported)
> diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h
> index a6811ae..61459aa 100644
> --- a/include/linux/mmc/card.h
> +++ b/include/linux/mmc/card.h
> @@ -29,6 +29,7 @@ struct mmc_csd {
>  	unsigned short		cmdclass;
>  	unsigned short		tacc_clks;
>  	unsigned int		tacc_ns;
> +	unsigned int		c_size;
>  	unsigned int		r2w_factor;
>  	unsigned int		max_dtr;
>  	unsigned int		erase_size;		/* In sectors */
> @@ -151,6 +152,8 @@ struct mmc_card {
>  #define MMC_STATE_HIGHSPEED	(1<<2)		/* card is in high
> speed mode */
>  #define MMC_STATE_BLOCKADDR	(1<<3)		/* card uses block-
> addressing */
>  #define MMC_STATE_HIGHSPEED_DDR (1<<4)		/* card is in high
> speed mode */
> +#define MMC_STATE_ULTRAHIGHSPEED (1<<5)		/* card is in ultra
> high speed mode */
> +#define MMC_CARD_SDXC		(1<<6)		/* card is SDXC */
>  	unsigned int		quirks; 	/* card quirks */
>  #define MMC_QUIRK_LENIENT_FN0	(1<<0)		/* allow SDIO FN0
> writes outside of the VS CCCR range */
>  #define MMC_QUIRK_BLKSZ_FOR_BYTE_MODE (1<<1)	/* use func-
> >cur_blksize */
> @@ -193,12 +196,16 @@ struct mmc_card {
>  #define mmc_card_highspeed(c)	((c)->state & MMC_STATE_HIGHSPEED)
>  #define mmc_card_blockaddr(c)	((c)->state & MMC_STATE_BLOCKADDR)
>  #define mmc_card_ddr_mode(c)	((c)->state & MMC_STATE_HIGHSPEED_DDR)
> +#define mmc_card_ultrahighspeed(c) ((c)->state &
> MMC_STATE_ULTRAHIGHSPEED)
> +#define mmc_card_ext_capacity(c) ((c)->state & MMC_CARD_SDXC)
> 
>  #define mmc_card_set_present(c)	((c)->state |= MMC_STATE_PRESENT)
>  #define mmc_card_set_readonly(c) ((c)->state |= MMC_STATE_READONLY)
>  #define mmc_card_set_highspeed(c) ((c)->state |= MMC_STATE_HIGHSPEED)
>  #define mmc_card_set_blockaddr(c) ((c)->state |= MMC_STATE_BLOCKADDR)
>  #define mmc_card_set_ddr_mode(c) ((c)->state |=
> MMC_STATE_HIGHSPEED_DDR)
> +#define mmc_card_set_ultrahighspeed(c) ((c)->state |=
> MMC_STATE_ULTRAHIGHSPEED)
> +#define mmc_card_set_ext_capacity(c) ((c)->state |= MMC_CARD_SDXC)
> 
>  static inline int mmc_card_lenient_fn0(const struct mmc_card *c)
>  {
> --
> 1.7.1
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


  reply	other threads:[~2011-03-10 11:48 UTC|newest]

Thread overview: 125+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-04 11:32 [PATCH v2 00/12] add support for host controller v3.00 Arindam Nath
2011-03-04 11:32 ` [PATCH v2 01/12] mmc: sdhci: add support for auto CMD23 Arindam Nath
2011-03-09 12:22   ` subhashj
2011-03-09 12:55     ` Nath, Arindam
2011-03-15 11:23   ` Subhash Jadavani
2011-03-15 11:35     ` Nath, Arindam
2011-03-15 11:52       ` Subhash Jadavani
2011-03-16  6:07         ` Nath, Arindam
2011-03-04 11:32 ` [PATCH v2 02/12] mmc: sd: add support for signal voltage switch procedure Arindam Nath
2011-03-04 11:47   ` Wolfram Sang
2011-03-04 11:52     ` Nath, Arindam
2011-03-09 10:44   ` subhashj
2011-03-10  6:30     ` subhashj
2011-03-10  8:05       ` Nath, Arindam
2011-03-09 12:45   ` zhangfei gao
2011-03-10  8:11     ` Nath, Arindam
2011-03-15 10:18   ` Subhash Jadavani
2011-03-15 10:32     ` Nath, Arindam
2011-03-15 11:18       ` Subhash Jadavani
2011-03-15 11:28         ` Nath, Arindam
2011-03-15 11:58           ` Subhash Jadavani
2011-03-16  3:03             ` zhangfei gao
2011-03-16  6:30               ` Nath, Arindam
2011-03-16 10:44                 ` zhangfei gao
2011-03-16 10:48                   ` Nath, Arindam
2011-03-16 21:39   ` Philip Rakity
2011-03-17  4:18     ` Nath, Arindam
2011-03-24 10:52   ` zhangfei gao
2011-03-24 10:59     ` Nath, Arindam
2011-03-04 11:32 ` [PATCH v2 03/12] mmc: sd: query function modes for uhs cards Arindam Nath
2011-03-09 14:08   ` subhashj
2011-03-09 14:31     ` Nath, Arindam
2011-03-09 18:04       ` subhashj
2011-03-09 18:16         ` Nath, Arindam
2011-03-04 11:32 ` [PATCH v2 04/12] mmc: sd: add support for driver type selection Arindam Nath
2011-03-09  5:33   ` Philip Rakity
2011-03-09  8:11     ` Nath, Arindam
2011-03-10  6:57   ` subhashj
2011-03-10  8:31     ` Nath, Arindam
2011-03-10 10:28       ` subhashj
2011-03-10 10:44         ` Nath, Arindam
2011-03-10 11:25           ` subhashj
2011-03-10 11:34             ` Nath, Arindam
2011-03-04 11:32 ` [PATCH v2 05/12] mmc: sdhci: reset sdclk before setting high speed enable Arindam Nath
2011-03-05  4:57   ` Philip Rakity
2011-03-05  5:07     ` Nath, Arindam
2011-03-04 11:32 ` [PATCH v2 06/12] mmc: sd: add support for uhs bus speed mode selection Arindam Nath
2011-03-10  8:00   ` subhashj
2011-03-10  8:36     ` Nath, Arindam
2011-03-10 10:07       ` subhashj
2011-03-10 10:15         ` Nath, Arindam
2011-03-21  6:42   ` Subhash Jadavani
2011-03-23  6:04     ` Nath, Arindam
2011-03-23  6:14       ` Subhash Jadavani
2011-03-23  6:17         ` Nath, Arindam
2011-03-23  6:26           ` Subhash Jadavani
2011-03-23  6:35             ` Nath, Arindam
2011-03-23  7:23               ` Subhash Jadavani
2011-03-23 14:02                 ` Nath, Arindam
2011-03-24  7:25                   ` Subhash Jadavani
2011-03-24  8:42                     ` Nath, Arindam
2011-03-04 11:32 ` [PATCH v2 07/12] mmc: sd: set current limit for uhs cards Arindam Nath
2011-03-09 21:41   ` Philip Rakity
2011-03-10  3:12     ` Nath, Arindam
2011-03-10  8:16   ` subhashj
2011-03-10  8:43     ` Nath, Arindam
2011-03-10  9:45       ` subhashj
2011-03-16 14:26   ` Philip Rakity
2011-03-16 14:32     ` Nath, Arindam
2011-03-16 14:51       ` Philip Rakity
2011-03-16 15:00         ` Nath, Arindam
2011-03-16 15:18           ` Philip Rakity
2011-03-16 15:24             ` Nath, Arindam
2011-03-16 15:31               ` Philip Rakity
2011-03-16 15:33                 ` Nath, Arindam
2011-03-16 15:34                   ` Philip Rakity
2011-03-21  7:43   ` Subhash Jadavani
2011-03-21  7:54     ` Nath, Arindam
2011-03-04 11:32 ` [PATCH v2 08/12] mmc: sd: report correct speed and capacity of " Arindam Nath
2011-03-10 11:48   ` subhashj [this message]
2011-03-10 13:28     ` Nath, Arindam
2011-03-10 13:41       ` subhashj
2011-03-04 11:32 ` [PATCH v2 09/12] mmc: sd: add support for tuning during uhs initialization Arindam Nath
2011-03-04 18:27   ` Philip Rakity
2011-03-04 18:48     ` Nath, Arindam
2011-03-04 18:34   ` Philip Rakity
2011-03-04 18:54     ` Nath, Arindam
2011-03-15 10:32   ` zhangfei gao
2011-03-15 10:43     ` Nath, Arindam
2011-03-16  2:51       ` zhangfei gao
2011-03-16  6:20         ` Nath, Arindam
2011-03-16 10:18           ` zhangfei gao
2011-03-21  9:43   ` Subhash Jadavani
2011-03-21  9:50     ` Nath, Arindam
2011-03-23  6:58       ` Subhash Jadavani
2011-03-21 10:58   ` Subhash Jadavani
2011-03-21 11:07     ` Nath, Arindam
2011-03-23  6:08       ` Subhash Jadavani
2011-03-23  6:14         ` Nath, Arindam
2011-03-23  6:19           ` Subhash Jadavani
2011-03-23  6:22             ` Nath, Arindam
2011-03-23  6:34               ` Subhash Jadavani
2011-03-23  6:41                 ` Nath, Arindam
2011-03-23  6:45                   ` Subhash Jadavani
2011-03-23  6:48                     ` Nath, Arindam
2011-03-04 11:32 ` [PATCH v2 10/12] mmc: sdhci: enable preset value after " Arindam Nath
2011-03-10 13:23   ` subhashj
2011-03-10 13:30     ` Nath, Arindam
2011-03-10 13:45       ` subhashj
2011-03-10 13:49         ` Nath, Arindam
2011-03-10 14:03           ` subhashj
2011-03-10 14:07             ` Nath, Arindam
2011-03-10 14:12               ` subhashj
2011-03-10 14:15                 ` Nath, Arindam
2011-03-10 14:19                   ` subhashj
2011-03-10 14:24                     ` Nath, Arindam
2011-03-04 11:32 ` [PATCH v2 11/12] mmc: sdhci: add support for programmable clock mode Arindam Nath
2011-03-04 11:32 ` [PATCH v2 12/12] mmc: sdhci: add support for retuning mode 1 Arindam Nath
2011-03-10 13:57   ` subhashj
2011-03-10 14:00     ` Nath, Arindam
2011-03-04 15:16 ` [PATCH v2 00/12] add support for host controller v3.00 Chris Ball
2011-03-04 15:55   ` Nath, Arindam
2011-03-11 13:13 ` subhashj
2011-03-11 15:29   ` Nath, Arindam
2011-03-11 16:06     ` Chris Ball

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='001801cbdf19$10c9d3f0$325d7bd0$@org' \
    --to=subhashj@codeaurora.org \
    --cc=aaron.lu@amd.com \
    --cc=anath.amd@gmail.com \
    --cc=arindam.nath@amd.com \
    --cc=cjb@laptop.org \
    --cc=henry.su@amd.com \
    --cc=linux-mmc@vger.kernel.org \
    --cc=prakity@marvell.com \
    --cc=zhangfei.gao@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.