lkml.org 
[lkml]   [2018]   [Mar]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL for 4.14 42/67] mmc: sdhci-xenon: wait 5ms after set 1.8V signal enable
    Date
    From: Zhoujie Wu <zjwu@marvell.com>

    [ Upstream commit 8d876bf472dba73c015cea9feea80dcb80626a7c ]

    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 this bit right after set it.
    On some platforms with xenon controller found the bit is
    cleared right away and host reports "1.8V regulator output
    did not became stable" and 5ms delay can help.

    Implement voltage_switch callback for xenon controller to add 5ms
    delay to make sure the 1.8V signal enable bit is set by controller.

    Signed-off-by: Zhoujie Wu <zjwu@marvell.com>
    Acked-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    ---
    drivers/mmc/host/sdhci-xenon.c | 7 +++++++
    1 file changed, 7 insertions(+)

    diff --git a/drivers/mmc/host/sdhci-xenon.c b/drivers/mmc/host/sdhci-xenon.c
    index 0842bbc2d7ad..4d0791f6ec23 100644
    --- a/drivers/mmc/host/sdhci-xenon.c
    +++ b/drivers/mmc/host/sdhci-xenon.c
    @@ -230,7 +230,14 @@ static void xenon_set_power(struct sdhci_host *host, unsigned char mode,
    mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, vdd);
    }

    +static void xenon_voltage_switch(struct sdhci_host *host)
    +{
    + /* Wait for 5ms after set 1.8V signal enable bit */
    + usleep_range(5000, 5500);
    +}
    +
    static const struct sdhci_ops sdhci_xenon_ops = {
    + .voltage_switch = xenon_voltage_switch,
    .set_clock = sdhci_set_clock,
    .set_power = xenon_set_power,
    .set_bus_width = sdhci_set_bus_width,
    --
    2.14.1
    \
     
     \ /
      Last update: 2018-03-08 07:43    [W:4.111 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site