• Douglas Anderson's avatar
    mmc: sdhci-of-arasan: Don't power PHY w/ slow/no clock · b2db9c67
    Douglas Anderson authored
    PHY intended to be used with the Arasan SDHCI 5.1 controller has trouble
    turning on when the card clock is slow or off.  Strangely these problems
    appear to show up consistently on some boards while other boards work
    fine, but on the boards where it shows up the problem reproduces 100% of
    the time and is quite consistent in its behavior.
    
    These problems can be fixed by always making sure that we power on the
    PHY (and turn on its DLL) when the card clock is faster than about 50
    MHz.  Once on, we need to make sure that we never power down the PHY /
    turn off its DLL until the clock is faster again.
    
    We'll add logic for handling this into the sdhci-of-arasan driver.  Note
    that right now the only user of a PHY in the sdhci-of-arasan driver is
    arasan,sdhci-5.1.  It's presumed that all arasan,sdhci-5.1 PHY
    implementations need this workaround, so the logic is only contingent on
    having a PHY to control.  If future Arasan controllers don't have this
    problem we can add code to decide if we want this flow or not.
    
    Also note that we check for slow clocks by checking for <= 400 kHz
    rather than checking for 50 MHz.  This keeps things the most consistent
    and also means we can power the PHY on at max speed (where the DLL will
    lock fastest).  Presumably anyone who intends to run with a card clock
    of < 50 MHz and > 400 kHz will be running on a device where this problem
    is fixed anyway.
    
    I believe this brings some resolution to the problems reported before.
    See the commit 6fc09244 ("mmc: sdhci-of-arasan: Revert: Always power
    the PHY off/on when clock changes").
    Signed-off-by: default avatarDouglas Anderson <dianders@chromium.org>
    Acked-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
    Reviewed-by: default avatarShawn Lin <shawn.lin@rock-chips.com>
    Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    b2db9c67
sdhci-of-arasan.c 18.4 KB