Skip to content
  • Christian Löhle's avatar
    09247e11
    mmc: core: Allow UHS-I voltage switch for SDSC cards if supported · 09247e11
    Christian Löhle authored
    
    
    While initializing an UHS-I SD card, the mmc core first tries to switch to
    1.8V I/O voltage, before it continues to change the settings for the bus
    speed mode.
    
    However, the current behaviour in the mmc core is inconsistent and doesn't
    conform to the SD spec. More precisely, an SD card that supports UHS-I must
    set both the SD_OCR_CCS bit and the SD_OCR_S18R bit in the OCR register
    response. When switching to 1.8V I/O the mmc core correctly checks both of
    the bits, but only the SD_OCR_S18R bit when changing the settings for bus
    speed mode.
    
    Rather than actually fixing the code to confirm to the SD spec, let's
    deliberately deviate from it by requiring only the SD_OCR_S18R bit for both
    parts. This enables us to support UHS-I for SDSC cards (outside spec),
    which is actually being supported by some existing SDSC cards. Moreover,
    this fixes the inconsistent behaviour.
    
    Signed-off-by: default avatarChristian Loehle <cloehle@hyperstone.com>
    Link: https://lore.kernel.org/r/CWXP265MB26803AE79E0AD5ED083BF2A6C4529@CWXP265MB2680.GBRP265.PROD.OUTLOOK.COM
    
    
    Cc: stable@vger.kernel.org
    [Ulf: Rewrote commit message and comments to clarify the changes]
    Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    09247e11
    mmc: core: Allow UHS-I voltage switch for SDSC cards if supported
    Christian Löhle authored
    
    
    While initializing an UHS-I SD card, the mmc core first tries to switch to
    1.8V I/O voltage, before it continues to change the settings for the bus
    speed mode.
    
    However, the current behaviour in the mmc core is inconsistent and doesn't
    conform to the SD spec. More precisely, an SD card that supports UHS-I must
    set both the SD_OCR_CCS bit and the SD_OCR_S18R bit in the OCR register
    response. When switching to 1.8V I/O the mmc core correctly checks both of
    the bits, but only the SD_OCR_S18R bit when changing the settings for bus
    speed mode.
    
    Rather than actually fixing the code to confirm to the SD spec, let's
    deliberately deviate from it by requiring only the SD_OCR_S18R bit for both
    parts. This enables us to support UHS-I for SDSC cards (outside spec),
    which is actually being supported by some existing SDSC cards. Moreover,
    this fixes the inconsistent behaviour.
    
    Signed-off-by: default avatarChristian Loehle <cloehle@hyperstone.com>
    Link: https://lore.kernel.org/r/CWXP265MB26803AE79E0AD5ED083BF2A6C4529@CWXP265MB2680.GBRP265.PROD.OUTLOOK.COM
    
    
    Cc: stable@vger.kernel.org
    [Ulf: Rewrote commit message and comments to clarify the changes]
    Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
Loading