• S
    mmc: sdio: don't use rocr to check if the card could support UHS mode · 5fc3d80e
    Shawn Lin 提交于
    Per SDIO Simplified Specification V3, section 3.1.2, A host that
    supports UHS-I sets S18R to 1 in the argument of CMD5 to request a
    change of the signal voltage to 1.8V. If the card supports UHS-I and
    the current signal voltage is 3.3V, S18A is set to 1 in the R4 response.
    If the signal voltage is already 1.8V, the card sets S18A to 0 so that
    host maintains the current signal voltage. UHS-I is supported in SD mode
    and S18A is always 0 in SPI mode.
    
    For the current code, if the signaling voltage is fixed 1.8v, so
    the card will set S18A to 0 for rocr and thus we would clear the
    R4_18V_PRESENT from ocr, which make core won't try to use uhs mode.
    
    To fix it, we expect sdio_read_cccr would fail if the uhs mode won't
    work at all. Note that it's interesting that some sdio cards still
    response S18A even the voltage is fixed to 1.8v and the CMD11 will
    also accepted and finish enabling UHS mode successfully. I guess this
    is why folks didn't notice this problem. Anyway, fix it.
    Signed-off-by: NShawn Lin <shawn.lin@rock-chips.com>
    Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
    5fc3d80e
sdio.c 26.2 KB