Re: [PATCH] mmc: Adjust timings for power ramping up

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 08/14/2012 04:58 PM, Girish K S wrote:
On 13 August 2012 11:19, Dmitry Rozhkov <dmitry.rozhkov@xxxxxxxxxxxxxxx> wrote:
According to p6.4.1.1 of the Physical Layer Simplified Specification
Ver3.01 the "host needs to keep power line level less than 0.5V and
more than 1ms before power ramp up". This patch adds an explicit delay
of 10ms just before power rump up.

Without this patch some microSD cards (e.g. Kingston 8G Class 10) can't be
used as bootable media on some TI OMAP chips at least.
See https://bugs.nemomobile.org/show_bug.cgi?id=92 for details.

Signed-off-by: Dmitry Rozhkov <dmitry.rozhkov@xxxxxxxxxxxxxxx>
---
  drivers/mmc/core/core.c |    7 +++++++
  1 file changed, 7 insertions(+)

diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
index 0b6141d..22b0eb2 100644
--- a/drivers/mmc/core/core.c
+++ b/drivers/mmc/core/core.c
@@ -1163,6 +1163,13 @@ static void mmc_power_up(struct mmc_host *host)

         mmc_host_clk_hold(host);

+       /*
+        * According to p6.4.1.1 of the Physical Layer Simplified Specification
+        * Ver3.01 the "host needs to keep power line level less than 0.5V and
+        * more than 1ms before power ramp up".
+        */
+       mmc_delay(10);
can you instead just try giving this delay in mmc_start_host as a
parameter to mmc_detect_change.
It would be too late. Here is the theory.

The function mmc_power_up currently controls the process of powering up as a two-phases process:

0V (initial state) => apply MMC_POWER_UP => delay 10ms until Vdd is reached (first phase) => apply MMC_POWER_ON => delay 10ms for initialization sequence to complete (second phase).

It perfectly conforms to the spec V2.00

But the spec V3.01 clarifies now that the process consists of three phases actually:
1. keeping reset level voltage (>1ms)
2. power ramp up phase (from 0.1ms to 35ms)
3. initialization sequence (1ms)

See the figure 6-2 on the page 111.

If I add the delay as a parameter to mmc_detect_change in mmc_start_host it'd be equal to extending the third phase to 20ms though even 10ms is more than enough.

The second things is that it's better to keep this sequence in one function for the sake of maintainability.

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


[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux