Skip to content
  • Andrew Gabbasov's avatar
    mmc: Fix handling of bus widths and DDR card capabilities · 786e8f81
    Andrew Gabbasov authored
    
    
    If the MMC_MODE_DDR_52MHz flag is set in card capabilities bitmask,
    it is never cleared, even if switching to DDR mode fails, and if
    the controller driver uses this flag to check the DDR mode, it can
    take incorrect actions.
    
    Also, DDR related checks in mmc_startup() incorrectly handle the case
    when the host controller does not support some bus widths (e.g. can't
    support 8 bits), since the host_caps is checked for DDR bit, but not
    bus width bits.
    
    This fix clearly separates using of card_caps bitmask, having there
    the flags for the capabilities, that the card can support, and actual
    operation mode, described outside of card_caps (i.e. bus_width and
    ddr_mode fields in mmc structure). Separate host controller drivers
    may need to be updated to use the actual flags. Respectively,
    the capabilities checks in mmc_startup are made more correct and clear.
    
    Also, some clean up is made with errors handling and code syntax layout.
    
    Signed-off-by: default avatarAndrew Gabbasov <andrew_gabbasov@mentor.com>
    786e8f81