* [PATCH v3] mmc: sdhci: wait 5ms after set 1.8V signal enable
@ 2017-12-15 19:28 Zhoujie Wu
2017-12-18 13:19 ` Adrian Hunter
0 siblings, 1 reply; 3+ messages in thread
From: Zhoujie Wu @ 2017-12-15 19:28 UTC (permalink / raw)
To: ulf.hansson, adrian.hunter, linux-mmc
Cc: nadavh, xigu, xswang, dingwei, kostap, hannah, hongd, dougj, ygao,
liuw, gregory.clement, thomas.petazzoni, Zhoujie Wu
According to SD spec 3.00 3.6.1 signal voltage switch
procedure step 6~8,
(6) Set 1.8V Signal Enable in the Host Control 2 register.
(7) Wait 5ms. 1.8V voltage regulator shall be stable within this period.
(8) If 1.8V Signal Enable is cleared by Host Controller, go to step (12).
Host should wait 5ms after set 1.8V signal enable bit in
Host Control 2 register and check if 1.8V is stable or not.
But current code checks if this bit is cleared by controller
right after set it. On some platforms found the bit is not
cleared right away and host reports "1.8V regulator output
did not became stable" and 5ms delay can help.
Follow the spec and add 5ms delay to make sure the 1.8V Signal Enable
bit is cleared.
Signed-off-by: Zhoujie Wu <zjwu@marvell.com>
---
drivers/mmc/host/sdhci.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index e9290a3..fe5f208 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -1933,6 +1933,9 @@ int sdhci_start_signal_voltage_switch(struct mmc_host *mmc,
if (host->ops->voltage_switch)
host->ops->voltage_switch(host);
+ /* Wait for 5ms */
+ usleep_range(5000, 5500);
+
/* 1.8V regulator output should be stable within 5 ms */
ctrl = sdhci_readw(host, SDHCI_HOST_CONTROL2);
if (ctrl & SDHCI_CTRL_VDD_180)
--
1.9.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v3] mmc: sdhci: wait 5ms after set 1.8V signal enable
2017-12-15 19:28 [PATCH v3] mmc: sdhci: wait 5ms after set 1.8V signal enable Zhoujie Wu
@ 2017-12-18 13:19 ` Adrian Hunter
2017-12-18 22:26 ` [EXT] " Zhoujie Wu
0 siblings, 1 reply; 3+ messages in thread
From: Adrian Hunter @ 2017-12-18 13:19 UTC (permalink / raw)
To: Zhoujie Wu, ulf.hansson, linux-mmc
Cc: nadavh, xigu, xswang, dingwei, kostap, hannah, hongd, dougj, ygao,
liuw, gregory.clement, thomas.petazzoni
On 15/12/17 21:28, Zhoujie Wu wrote:
> According to SD spec 3.00 3.6.1 signal voltage switch
> procedure step 6~8,
> (6) Set 1.8V Signal Enable in the Host Control 2 register.
> (7) Wait 5ms. 1.8V voltage regulator shall be stable within this period.
> (8) If 1.8V Signal Enable is cleared by Host Controller, go to step (12).
>
> Host should wait 5ms after set 1.8V signal enable bit in
> Host Control 2 register and check if 1.8V is stable or not.
>
> But current code checks if this bit is cleared by controller
> right after set it. On some platforms found the bit is not
> cleared right away and host reports "1.8V regulator output
> did not became stable" and 5ms delay can help.
The check is for the bit set not cleared.
>
> Follow the spec and add 5ms delay to make sure the 1.8V Signal Enable
> bit is cleared.
>
> Signed-off-by: Zhoujie Wu <zjwu@marvell.com>
> ---
> drivers/mmc/host/sdhci.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
> index e9290a3..fe5f208 100644
> --- a/drivers/mmc/host/sdhci.c
> +++ b/drivers/mmc/host/sdhci.c
> @@ -1933,6 +1933,9 @@ int sdhci_start_signal_voltage_switch(struct mmc_host *mmc,
> if (host->ops->voltage_switch)
> host->ops->voltage_switch(host);
>
> + /* Wait for 5ms */
> + usleep_range(5000, 5500);
We have managed without this delay for a while and I am reluctant to add
delays that might anyway be specific to the controller. What do you think
about implementing ->voltage_switch() and putting the delay there?
> +
> /* 1.8V regulator output should be stable within 5 ms */
> ctrl = sdhci_readw(host, SDHCI_HOST_CONTROL2);
> if (ctrl & SDHCI_CTRL_VDD_180)
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [EXT] Re: [PATCH v3] mmc: sdhci: wait 5ms after set 1.8V signal enable
2017-12-18 13:19 ` Adrian Hunter
@ 2017-12-18 22:26 ` Zhoujie Wu
0 siblings, 0 replies; 3+ messages in thread
From: Zhoujie Wu @ 2017-12-18 22:26 UTC (permalink / raw)
To: Adrian Hunter, ulf.hansson, linux-mmc
Cc: nadavh, xigu, xswang, dingwei, kostap, hannah, hongd, dougj, ygao,
liuw, gregory.clement, thomas.petazzoni
On 12/18/2017 05:19 AM, Adrian Hunter wrote:
> External Email
>
> ----------------------------------------------------------------------
> On 15/12/17 21:28, Zhoujie Wu wrote:
>> According to SD spec 3.00 3.6.1 signal voltage switch
>> procedure step 6~8,
>> (6) Set 1.8V Signal Enable in the Host Control 2 register.
>> (7) Wait 5ms. 1.8V voltage regulator shall be stable within this period.
>> (8) If 1.8V Signal Enable is cleared by Host Controller, go to step (12).
>>
>> Host should wait 5ms after set 1.8V signal enable bit in
>> Host Control 2 register and check if 1.8V is stable or not.
>>
>> But current code checks if this bit is cleared by controller
>> right after set it. On some platforms found the bit is not
>> cleared right away and host reports "1.8V regulator output
>> did not became stable" and 5ms delay can help.
> The check is for the bit set not cleared.
I will correct the comments.
>> Follow the spec and add 5ms delay to make sure the 1.8V Signal Enable
>> bit is cleared.
>>
>> Signed-off-by: Zhoujie Wu <zjwu@marvell.com>
>> ---
>> drivers/mmc/host/sdhci.c | 3 +++
>> 1 file changed, 3 insertions(+)
>>
>> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
>> index e9290a3..fe5f208 100644
>> --- a/drivers/mmc/host/sdhci.c
>> +++ b/drivers/mmc/host/sdhci.c
>> @@ -1933,6 +1933,9 @@ int sdhci_start_signal_voltage_switch(struct mmc_host *mmc,
>> if (host->ops->voltage_switch)
>> host->ops->voltage_switch(host);
>>
>> + /* Wait for 5ms */
>> + usleep_range(5000, 5500);
> We have managed without this delay for a while and I am reluctant to add
> delays that might anyway be specific to the controller. What do you think
> about implementing ->voltage_switch() and putting the delay there?
Ok to me, will send out the updated version. Thanks.
>
>> +
>> /* 1.8V regulator output should be stable within 5 ms */
>> ctrl = sdhci_readw(host, SDHCI_HOST_CONTROL2);
>> if (ctrl & SDHCI_CTRL_VDD_180)
>>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2017-12-18 22:27 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-12-15 19:28 [PATCH v3] mmc: sdhci: wait 5ms after set 1.8V signal enable Zhoujie Wu
2017-12-18 13:19 ` Adrian Hunter
2017-12-18 22:26 ` [EXT] " Zhoujie Wu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox