• Takeshi Saito's avatar
    mmc: renesas_sdhi: Fix card initialization failure in high speed mode · d30ae056
    Takeshi Saito authored
    This fixes card initialization failure in high speed mode.
    
    If U-Boot uses SDR or HS200/400 mode before starting Linux and Linux
    DT does not enable SDR/HS200/HS400 mode, card initialization fails in
    high speed mode.
    
    It is necessary to initialize SCC registers during card initialization
    phase. HW reset function is registered only for a port with either of
    SDR/HS200/HS400 properties in device tree. If SDR/HS200/HS400 properties
    are not present in device tree, SCC registers will not be reset. In SoC
    that support SCC registers, HW reset function should be registered
    regardless of the configuration of device tree.
    
    Reproduction procedure:
    - Use U-Boot that support MMC HS200/400 mode.
    - Delete HS200/HS400 properties in device tree.
      (Delete mmc-hs200-1_8v and mmc-hs400-1_8v)
    - MMC port works high speed mode and all commands fail.
    Signed-off-by: default avatarTakeshi Saito <takeshi.saito.xv@renesas.com>
    Signed-off-by: default avatarMarek Vasut <marek.vasut+renesas@gmail.com>
    Cc: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
    Cc: Simon Horman <horms+renesas@verge.net.au>
    Reviewed-by: default avatarWolfram Sang <wsa+renesas@sang-engineering.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    d30ae056
renesas_sdhi_core.c 23.9 KB