All of lore.kernel.org
 help / color / mirror / Atom feed
From: Addy Ke <addy.ke@rock-chips.com>
To: robh+dt@kernel.org, pawel.moll@arm.com, mark.rutland@arm.com,
	ijc+devicetree@hellion.org.uk, galak@codeaurora.org,
	rdunlap@infradead.org, tgih.jun@samsung.com,
	jh80.chung@samsung.com, chris@printf.net, ulf.hansson@linaro.org,
	dinguyen@altera.com, heiko@sntech.de, olof@lixom.net,
	dianders@chromium.org, sonnyrao@chromium.org,
	amstan@chromium.org
Cc: devicetree@vger.kernel.org, linux-doc@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-mmc@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-rockchip@lists.infradead.org, zhenfu.fang@rock-chips.com,
	cf@rock-chips.com, lintao@rock-chips.com, chenfen@rock-chips.com,
	zyf@rock-chips.com, xjq@rock-chips.com, huangtao@rock-chips.com,
	zyw@rock-chips.com, yzq@rock-chips.com, hj@rock-chips.com,
	kever.yang@rock-chips.com, zhangqing@rock-chips.com,
	hl@rock-chips.com, Addy Ke <addy.ke@rock-chips.com>
Subject: [PATCH] mmc: dw_mmc: try pick the exact same voltage as vmmc for vqmmc
Date: Tue, 11 Nov 2014 12:02:53 +0800	[thread overview]
Message-ID: <1415678573-6093-1-git-send-email-addy.ke@rock-chips.com> (raw)
In-Reply-To: <1415109789-7046-1-git-send-email-addy.ke@rock-chips.com>

SD2.0 cards need vqmmc and vmmc to be the same.
But vqmmc call regulator_set_voltage to set min_uv(2.7v) as far as possible.
So if we set vmmc 3.3V in dt table, we will get error information as follows:

[   17.785398] mmc_host mmc1: Bus speed (slot 0) = 50000000Hz (slot req
50000000Hz, actual 50000000HZ div = 0)
[   17.795175] mmc1: new high speed SDHC card at address e624
[   17.801283] mmcblk1: mmc1:e624 SU08G 7.40 GiB
[   17.816033]  mmcblk1: p1
[   17.839318] mmcblk1: error -110 sending status command, retrying
[   17.845363] mmcblk1: error -115 sending stop command, original cmd
response 0x900, card status 0x800b00
[   17.854758] mmcblk1: error -84 transferring data, sector 32, nr 24,
cmd response 0x900, card status 0xb00
[   17.864328] mmcblk1: retrying using single block read
[   17.873647] mmcblk1: error -110 sending status command, retrying
[   17.879660] mmcblk1: error -84 transferring data, sector 44, nr 12,
cmd response 0x900, card status 0x0
[   17.889051] end_request: I/O error, dev mmcblk1, sector 44
[   17.895594] Buffer I/O error on device mmcblk1, logical block 5
[   17.902484] mmcblk1: error -110 sending status command, retrying
[   17.908498] mmcblk1: error -84 transferring data, sector 50, nr 6,
cmd response 0x900, card status 0x0
[   17.917802] end_request: I/O error, dev mmcblk1, sector 50
[   17.924984] Buffer I/O error on device mmcblk1, logical block 6
[   18.431258] mmc_host mmc1: Timeout sending command (cmd 0x200000 arg
0x0 status 0x80200000)

Signed-off-by: Addy Ke <addy.ke@rock-chips.com>
---
 drivers/mmc/host/dw_mmc.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index b4c3044..a8b70b5 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -1163,8 +1163,14 @@ static int dw_mci_switch_voltage(struct mmc_host *mmc, struct mmc_ios *ios)
 	 */
 	uhs = mci_readl(host, UHS_REG);
 	if (ios->signal_voltage == MMC_SIGNAL_VOLTAGE_330) {
-		min_uv = 2700000;
-		max_uv = 3600000;
+		/* try pick the exact same voltage as vmmc for vqmmc */
+		if (!IS_ERR(mmc->supply.vmmc)) {
+			min_uv = regulator_get_voltage(mmc->supply.vmmc);
+			max_uv = min_uv;
+		} else {
+			min_uv = 2700000;
+			max_uv = 3600000;
+		}
 		uhs &= ~v18;
 	} else {
 		min_uv = 1700000;
-- 
1.8.3.2



WARNING: multiple messages have this Message-ID (diff)
From: Addy Ke <addy.ke-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
To: robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
	pawel.moll-5wv7dgnIgG8@public.gmane.org,
	mark.rutland-5wv7dgnIgG8@public.gmane.org,
	ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org,
	galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org,
	rdunlap-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org,
	tgih.jun-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org,
	jh80.chung-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org,
	chris-OsFVWbfNK3isTnJN9+BGXg@public.gmane.org,
	ulf.hansson-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org,
	dinguyen-EIB2kfCEclfQT0dZR+AlfA@public.gmane.org,
	heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org,
	olof-nZhT3qVonbNeoWH0uzbU5w@public.gmane.org,
	dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org,
	sonnyrao-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org,
	amstan-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org
Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-mmc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	zhenfu.fang-TNX95d0MmH7DzftRWevZcw@public.gmane.org,
	cf-TNX95d0MmH7DzftRWevZcw@public.gmane.org,
	lintao-TNX95d0MmH7DzftRWevZcw@public.gmane.org,
	chenfen-TNX95d0MmH7DzftRWevZcw@public.gmane.org,
	zyf-TNX95d0MmH7DzftRWevZcw@public.gmane.org,
	xjq-TNX95d0MmH7DzftRWevZcw@public.gmane.org,
	huangtao-TNX95d0MmH7DzftRWevZcw@public.gmane.org,
	zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org,
	yzq-TNX95d0MmH7DzftRWevZcw@public.gmane.org,
	hj-TNX95d0MmH7DzftRWevZcw@public.gmane.org,
	kever.yang-TNX95d0MmH7DzftRWevZcw@public.gmane.org,
	zhangqing-TNX95d0MmH7DzftRWevZcw@public.gmane.org,
	hl-TNX95d0MmH7DzftRWevZcw@public.gmane.org,
	Addy Ke <addy.ke-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
Subject: [PATCH] mmc: dw_mmc: try pick the exact same voltage as vmmc for vqmmc
Date: Tue, 11 Nov 2014 12:02:53 +0800	[thread overview]
Message-ID: <1415678573-6093-1-git-send-email-addy.ke@rock-chips.com> (raw)
In-Reply-To: <1415109789-7046-1-git-send-email-addy.ke-TNX95d0MmH7DzftRWevZcw@public.gmane.org>

SD2.0 cards need vqmmc and vmmc to be the same.
But vqmmc call regulator_set_voltage to set min_uv(2.7v) as far as possible.
So if we set vmmc 3.3V in dt table, we will get error information as follows:

[   17.785398] mmc_host mmc1: Bus speed (slot 0) = 50000000Hz (slot req
50000000Hz, actual 50000000HZ div = 0)
[   17.795175] mmc1: new high speed SDHC card at address e624
[   17.801283] mmcblk1: mmc1:e624 SU08G 7.40 GiB
[   17.816033]  mmcblk1: p1
[   17.839318] mmcblk1: error -110 sending status command, retrying
[   17.845363] mmcblk1: error -115 sending stop command, original cmd
response 0x900, card status 0x800b00
[   17.854758] mmcblk1: error -84 transferring data, sector 32, nr 24,
cmd response 0x900, card status 0xb00
[   17.864328] mmcblk1: retrying using single block read
[   17.873647] mmcblk1: error -110 sending status command, retrying
[   17.879660] mmcblk1: error -84 transferring data, sector 44, nr 12,
cmd response 0x900, card status 0x0
[   17.889051] end_request: I/O error, dev mmcblk1, sector 44
[   17.895594] Buffer I/O error on device mmcblk1, logical block 5
[   17.902484] mmcblk1: error -110 sending status command, retrying
[   17.908498] mmcblk1: error -84 transferring data, sector 50, nr 6,
cmd response 0x900, card status 0x0
[   17.917802] end_request: I/O error, dev mmcblk1, sector 50
[   17.924984] Buffer I/O error on device mmcblk1, logical block 6
[   18.431258] mmc_host mmc1: Timeout sending command (cmd 0x200000 arg
0x0 status 0x80200000)

Signed-off-by: Addy Ke <addy.ke-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
---
 drivers/mmc/host/dw_mmc.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index b4c3044..a8b70b5 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -1163,8 +1163,14 @@ static int dw_mci_switch_voltage(struct mmc_host *mmc, struct mmc_ios *ios)
 	 */
 	uhs = mci_readl(host, UHS_REG);
 	if (ios->signal_voltage == MMC_SIGNAL_VOLTAGE_330) {
-		min_uv = 2700000;
-		max_uv = 3600000;
+		/* try pick the exact same voltage as vmmc for vqmmc */
+		if (!IS_ERR(mmc->supply.vmmc)) {
+			min_uv = regulator_get_voltage(mmc->supply.vmmc);
+			max_uv = min_uv;
+		} else {
+			min_uv = 2700000;
+			max_uv = 3600000;
+		}
 		uhs &= ~v18;
 	} else {
 		min_uv = 1700000;
-- 
1.8.3.2


--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: addy.ke@rock-chips.com (Addy Ke)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] mmc: dw_mmc: try pick the exact same voltage as vmmc for vqmmc
Date: Tue, 11 Nov 2014 12:02:53 +0800	[thread overview]
Message-ID: <1415678573-6093-1-git-send-email-addy.ke@rock-chips.com> (raw)
In-Reply-To: <1415109789-7046-1-git-send-email-addy.ke@rock-chips.com>

SD2.0 cards need vqmmc and vmmc to be the same.
But vqmmc call regulator_set_voltage to set min_uv(2.7v) as far as possible.
So if we set vmmc 3.3V in dt table, we will get error information as follows:

[   17.785398] mmc_host mmc1: Bus speed (slot 0) = 50000000Hz (slot req
50000000Hz, actual 50000000HZ div = 0)
[   17.795175] mmc1: new high speed SDHC card at address e624
[   17.801283] mmcblk1: mmc1:e624 SU08G 7.40 GiB
[   17.816033]  mmcblk1: p1
[   17.839318] mmcblk1: error -110 sending status command, retrying
[   17.845363] mmcblk1: error -115 sending stop command, original cmd
response 0x900, card status 0x800b00
[   17.854758] mmcblk1: error -84 transferring data, sector 32, nr 24,
cmd response 0x900, card status 0xb00
[   17.864328] mmcblk1: retrying using single block read
[   17.873647] mmcblk1: error -110 sending status command, retrying
[   17.879660] mmcblk1: error -84 transferring data, sector 44, nr 12,
cmd response 0x900, card status 0x0
[   17.889051] end_request: I/O error, dev mmcblk1, sector 44
[   17.895594] Buffer I/O error on device mmcblk1, logical block 5
[   17.902484] mmcblk1: error -110 sending status command, retrying
[   17.908498] mmcblk1: error -84 transferring data, sector 50, nr 6,
cmd response 0x900, card status 0x0
[   17.917802] end_request: I/O error, dev mmcblk1, sector 50
[   17.924984] Buffer I/O error on device mmcblk1, logical block 6
[   18.431258] mmc_host mmc1: Timeout sending command (cmd 0x200000 arg
0x0 status 0x80200000)

Signed-off-by: Addy Ke <addy.ke@rock-chips.com>
---
 drivers/mmc/host/dw_mmc.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index b4c3044..a8b70b5 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -1163,8 +1163,14 @@ static int dw_mci_switch_voltage(struct mmc_host *mmc, struct mmc_ios *ios)
 	 */
 	uhs = mci_readl(host, UHS_REG);
 	if (ios->signal_voltage == MMC_SIGNAL_VOLTAGE_330) {
-		min_uv = 2700000;
-		max_uv = 3600000;
+		/* try pick the exact same voltage as vmmc for vqmmc */
+		if (!IS_ERR(mmc->supply.vmmc)) {
+			min_uv = regulator_get_voltage(mmc->supply.vmmc);
+			max_uv = min_uv;
+		} else {
+			min_uv = 2700000;
+			max_uv = 3600000;
+		}
 		uhs &= ~v18;
 	} else {
 		min_uv = 1700000;
-- 
1.8.3.2

  reply	other threads:[~2014-11-11  4:03 UTC|newest]

Thread overview: 104+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-30  2:21 [PATCH] mmc: dw_mmc: add a quirk for the defferent bit of sdio interrupt Addy Ke
2014-10-30  2:21 ` Addy Ke
2014-10-30  4:35 ` Jaehoon Chung
2014-10-30  4:35   ` Jaehoon Chung
2014-10-30  4:41 ` Doug Anderson
2014-10-30  4:41   ` Doug Anderson
2014-10-30  4:41   ` Doug Anderson
2014-10-30  4:49   ` Doug Anderson
2014-10-30  4:49     ` Doug Anderson
2014-10-30  4:49     ` Doug Anderson
2014-10-30  6:54     ` addy ke
2014-10-30  6:54       ` addy ke
2014-10-30 10:50 ` [PATCH] mmc: dw_mmc: add support for the other " Addy Ke
2014-10-30 10:50   ` Addy Ke
2014-10-30 11:02   ` Jaehoon Chung
2014-10-30 11:02     ` Jaehoon Chung
2014-10-31  0:46     ` addy ke
2014-10-31  0:46       ` addy ke
2014-10-31  1:14       ` Jaehoon Chung
2014-10-31  1:14         ` Jaehoon Chung
2014-10-30 11:11   ` Ulf Hansson
2014-10-30 11:11     ` Ulf Hansson
2014-10-30 11:11     ` Ulf Hansson
2014-10-30 11:17     ` Jaehoon Chung
2014-10-30 11:17       ` Jaehoon Chung
2014-10-30 11:17       ` Jaehoon Chung
2014-10-31  0:54       ` addy ke
2014-10-31  0:54         ` addy ke
2014-10-31  3:50   ` [PATCH v2] " Addy Ke
2014-10-31  3:50     ` Addy Ke
2014-10-31  5:14     ` Doug Anderson
2014-10-31  5:14       ` Doug Anderson
2014-10-31  5:14       ` Doug Anderson
2014-10-31  8:45     ` Jaehoon Chung
2014-10-31  8:45       ` Jaehoon Chung
2014-10-31  8:45       ` Jaehoon Chung
2014-10-31 15:55       ` Doug Anderson
2014-10-31 15:55         ` Doug Anderson
2014-10-31 15:55         ` Doug Anderson
2014-10-31 10:43     ` Heiko Stübner
2014-10-31 10:43       ` Heiko Stübner
2014-11-03  0:54       ` addy ke
2014-11-03  0:54         ` addy ke
2014-11-03  1:20   ` [PATCH v3] " Addy Ke
2014-11-03  1:20     ` Addy Ke
2014-11-03  8:59     ` Jaehoon Chung
2014-11-03  8:59       ` Jaehoon Chung
2014-11-03 10:23       ` addy ke
2014-11-03 10:23         ` addy ke
2014-11-04  2:14         ` Jaehoon Chung
2014-11-04  2:14           ` Jaehoon Chung
2014-11-03 10:23       ` Heiko Stübner
2014-11-03 10:23         ` Heiko Stübner
2014-11-04  2:15         ` Jaehoon Chung
2014-11-04  2:15           ` Jaehoon Chung
2014-11-04 14:03     ` [PATCH v4] " Addy Ke
2014-11-04 14:03       ` Addy Ke
2014-11-11  4:02       ` Addy Ke [this message]
2014-11-11  4:02         ` [PATCH] mmc: dw_mmc: try pick the exact same voltage as vmmc for vqmmc Addy Ke
2014-11-11  4:02         ` Addy Ke
2014-11-11  8:52         ` Ulf Hansson
2014-11-11  8:52           ` Ulf Hansson
2014-11-11  8:52           ` Ulf Hansson
2014-11-12 18:04           ` Doug Anderson
2014-11-12 18:04             ` Doug Anderson
2014-11-12 18:04             ` Doug Anderson
2014-11-13  2:19             ` addy ke
2014-11-13  2:19               ` addy ke
2014-11-21 12:06               ` Ulf Hansson
2014-11-21 12:06                 ` Ulf Hansson
2014-11-21 12:06                 ` Ulf Hansson
2014-11-21 12:29                 ` Jaehoon Chung
2014-11-21 12:29                   ` Jaehoon Chung
2014-11-21 12:29                   ` Jaehoon Chung
2014-11-21 17:42                 ` Doug Anderson
2014-11-21 17:42                   ` Doug Anderson
2014-11-21 17:42                   ` Doug Anderson
2014-11-21 21:04                   ` Doug Anderson
2014-11-21 21:04                     ` Doug Anderson
2014-11-21 21:04                     ` Doug Anderson
2014-11-24 13:29                     ` Ulf Hansson
2014-11-24 13:29                       ` Ulf Hansson
2014-11-24 13:29                       ` Ulf Hansson
2014-11-25  2:38                       ` Addy
2014-11-25  2:38                         ` Addy
2014-11-25  2:38                         ` Addy
2014-11-25  5:36                         ` Doug Anderson
2014-11-25  5:36                           ` Doug Anderson
2014-11-25  5:36                           ` Doug Anderson
2014-11-25 21:11                           ` Alexandru Stan
2014-11-25 21:11                             ` Alexandru Stan
2014-11-25 21:11                             ` Alexandru Stan
2014-11-25  5:29                       ` Doug Anderson
2014-11-25  5:29                         ` Doug Anderson
2014-11-25  5:29                         ` Doug Anderson
2014-11-13 18:58       ` [PATCH v4] mmc: dw_mmc: add support for the other bit of sdio interrupt Doug Anderson
2014-11-13 18:58         ` Doug Anderson
2014-11-13 18:58         ` Doug Anderson
2014-11-14 13:25         ` Jaehoon Chung
2014-11-14 13:25           ` Jaehoon Chung
2014-11-14 13:25           ` Jaehoon Chung
2014-11-19 10:32       ` Ulf Hansson
2014-11-19 10:32         ` Ulf Hansson
2014-11-19 10:32         ` Ulf Hansson

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=1415678573-6093-1-git-send-email-addy.ke@rock-chips.com \
    --to=addy.ke@rock-chips.com \
    --cc=amstan@chromium.org \
    --cc=cf@rock-chips.com \
    --cc=chenfen@rock-chips.com \
    --cc=chris@printf.net \
    --cc=devicetree@vger.kernel.org \
    --cc=dianders@chromium.org \
    --cc=dinguyen@altera.com \
    --cc=galak@codeaurora.org \
    --cc=heiko@sntech.de \
    --cc=hj@rock-chips.com \
    --cc=hl@rock-chips.com \
    --cc=huangtao@rock-chips.com \
    --cc=ijc+devicetree@hellion.org.uk \
    --cc=jh80.chung@samsung.com \
    --cc=kever.yang@rock-chips.com \
    --cc=lintao@rock-chips.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=mark.rutland@arm.com \
    --cc=olof@lixom.net \
    --cc=pawel.moll@arm.com \
    --cc=rdunlap@infradead.org \
    --cc=robh+dt@kernel.org \
    --cc=sonnyrao@chromium.org \
    --cc=tgih.jun@samsung.com \
    --cc=ulf.hansson@linaro.org \
    --cc=xjq@rock-chips.com \
    --cc=yzq@rock-chips.com \
    --cc=zhangqing@rock-chips.com \
    --cc=zhenfu.fang@rock-chips.com \
    --cc=zyf@rock-chips.com \
    --cc=zyw@rock-chips.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.