All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin Liu <keyuan.liu@gmail.com>
To: linux-mmc@vger.kernel.org, cjb@laptop.org, pierre@ossman.eu,
	ulf.hansson@linaro.org, zgao6@marvell.com
Cc: hzhuang1@marvell.com, cxie4@marvell.com, prakity@marvell.com,
	kliu5@marvell.com
Subject: [PATCH v6 11/14] mmc: sdhci: fix the bug that DDR50 can't work for emmc
Date: Wed, 17 Oct 2012 19:04:50 +0800	[thread overview]
Message-ID: <1350471893-29633-12-git-send-email-keyuan.liu@gmail.com> (raw)
In-Reply-To: <1350471893-29633-1-git-send-email-keyuan.liu@gmail.com>

From: Kevin Liu <kliu5@marvell.com>

Host controller must enable 1.8v signal for UHS modes. Otherwise
UHS modes won't take effect. But mmc core does NOT switch to 1.8v
for DDR50 mode. So enable the 1.8v signal for mmc DDR50 mode in host
driver.

In JEDEC spec, there are two emmc device types which support DDR50.
One type can work under signal 1.2v while the other type work under
signal 1.8v or 3v. So current code just keep 3v for the second device
type.

But in SD host spec, 1.8v signal must be enabled for all UHS modes
taking effect. So the fact is, if using SD host to work with emmc chip,
then 1.8v signal must be selected in order to enable DDR50.
Current code missed this.

Because DDR50 shall can work under both signal 1.8v and 3v according
to JEDEC spec,  So should not switch to 1.8v in mmc core code.
It's the host controller requirement that 1.8v signal must be enabled
in order to enable DDR50, which conflict with emmc spec. So add this
in host driver.

Signed-off-by: Kevin Liu <kliu5@marvell.com>
---
 drivers/mmc/host/sdhci.c |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index c3e786d..522e501 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -1529,8 +1529,15 @@ static void sdhci_do_set_ios(struct sdhci_host *host, struct mmc_ios *ios)
 				ctrl_2 |= SDHCI_CTRL_UHS_SDR50;
 			else if (ios->timing == MMC_TIMING_UHS_SDR104)
 				ctrl_2 |= SDHCI_CTRL_UHS_SDR104;
-			else if (ios->timing == MMC_TIMING_UHS_DDR50)
+			else if (ios->timing == MMC_TIMING_UHS_DDR50) {
+				struct mmc_card	*card;
+
 				ctrl_2 |= SDHCI_CTRL_UHS_DDR50;
+				card = container_of(&(host->mmc),
+					struct mmc_card, host);
+				if (mmc_card_mmc(card))
+					ctrl_2 |= SDHCI_CTRL_VDD_180;
+			}
 			sdhci_writew(host, ctrl_2, SDHCI_HOST_CONTROL2);
 		}
 		if (!(host->quirks2 & SDHCI_QUIRK2_PRESET_VALUE_BROKEN) &&
-- 
1.7.0.4


  parent reply	other threads:[~2012-10-17 11:05 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-17 11:04 mmc: sdhci: fixes and enhancements Kevin Liu
2012-10-17 11:04 ` [PATCH v6 01/14] mmc: sdhci: fix transfer mode setting bug for cmds w/o data transfer Kevin Liu
2012-10-17 11:04 ` [PATCH v6 02/14] mmc: sdhci: refine voltage support caps setting Kevin Liu
2012-10-17 11:04 ` [PATCH v6 03/14] mmc: sdhci: refine code for sd clock disable/enable in set ios Kevin Liu
2012-10-17 11:04 ` [PATCH v6 04/14] mmc: sdhci: keep the saved clock var up to date Kevin Liu
2012-10-17 11:04 ` [PATCH v6 05/14] mmc: sdhci: fix null return check of regulator_get Kevin Liu
2012-11-05 13:56   ` Chris Ball
2012-11-12  8:57     ` Kevin Liu
2012-11-13  3:00       ` Kevin Liu
2012-11-14  1:49         ` Haojian Zhuang
2012-10-17 11:04 ` [PATCH v6 06/14] mmc: sdhci-pxav3: controller can't get base clock Kevin Liu
2012-11-17 21:57   ` Chris Ball
2012-10-17 11:04 ` [PATCH v6 07/14] mmc: host: adjust uhs timing value Kevin Liu
2012-11-17 22:01   ` Chris Ball
2012-10-17 11:04 ` [PATCH v6 08/14] mmc: sdhci: enhance preset value function Kevin Liu
2012-10-17 11:04 ` [PATCH v6 09/14] mmc: sdhci-pxav3: add quirks2 Kevin Liu
2012-11-17 22:09   ` Chris Ball
2012-11-19  2:34     ` Kevin Liu
2012-11-25 19:26       ` Chris Ball
2012-10-17 11:04 ` [PATCH v6 10/14] mmc: sdhci: introduce signal_voltage_switch callback function Kevin Liu
2012-10-17 11:04 ` Kevin Liu [this message]
2012-11-17 22:35   ` [PATCH v6 11/14] mmc: sdhci: fix the bug that DDR50 can't work for emmc Chris Ball
2012-11-19  3:14     ` Kevin Liu
2012-11-19  8:57       ` Kevin Liu
2012-12-07 19:10         ` Chris Ball
2012-12-08  1:54           ` Kevin Liu
2012-12-08  3:14             ` Kevin Liu
2012-12-11 10:48               ` Kevin Liu
2012-10-17 11:04 ` [PATCH v6 12/14] mmc: sdhci-pxav3: remove set_uhs_signaling function Kevin Liu
2012-11-17 22:39   ` Chris Ball
2012-11-19 11:23     ` Kevin Liu
2012-10-17 11:04 ` [PATCH v6 13/14] mmc: sdhci: solve several vmmc/vqmmc regulator issues Kevin Liu
2012-11-17 23:02   ` Chris Ball
2012-10-17 11:04 ` [PATCH v6 14/14] mmc: sdhci: add function to get retunig timer count Kevin Liu

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=1350471893-29633-12-git-send-email-keyuan.liu@gmail.com \
    --to=keyuan.liu@gmail.com \
    --cc=cjb@laptop.org \
    --cc=cxie4@marvell.com \
    --cc=hzhuang1@marvell.com \
    --cc=kliu5@marvell.com \
    --cc=linux-mmc@vger.kernel.org \
    --cc=pierre@ossman.eu \
    --cc=prakity@marvell.com \
    --cc=ulf.hansson@linaro.org \
    --cc=zgao6@marvell.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.