• Russell King's avatar
    mmc: sd: limit SD card power limit according to cards capabilities · 6f40d496
    Russell King authored
    commit d9812780 upstream.
    
    The SD card specification allows cards to error out a SWITCH command
    where the requested function in a group is not supported.  The spec
    provides for a set of capabilities which indicate which functions are
    supported.
    
    In the case of the power limit, requesting an unsupported power level
    via the SWITCH command fails, resulting in the power level remaining at
    the power-on default of 0.72W, even though the host and card may support
    higher powers levels.
    
    This has been seen with SanDisk 8GB cards, which support the default
    0.72W and 1.44W (200mA and 400mA) in combination with an iMX6 host,
    supporting up to 2.88W (800mA).  This currently causes us to try to set
    a power limit function value of '3' (2.88W) which the card errors out
    on, and thereby causes the power level to remain at 0.72W rather than
    the desired 1.44W.
    
    Arrange to limit the selected current limit by the capabilities reported
    by the card to avoid the SWITCH command failing.  Select the highest
    current limit that the host and card combination support.
    Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
    Fixes: a39ca6ae ("mmc: core: Simplify and fix for SD switch processing")
    Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: default avatarLuis Henriques <luis.henriques@canonical.com>
    6f40d496
sd.c 28.7 KB