• Chevron Li's avatar
    mmc: sdhci: fix DMA configure compatibility issue when 64bit DMA mode is used. · 20dbd07e
    Chevron Li authored
    Bayhub SD host has hardware limitation:
    1.The upper 32bit address is inhibited to be written at SD Host Register
      [03E][13]=0 (32bits addressing) mode, is admitted to be written only at
      SD Host Register [03E][13]=1 (64bits addressing) mode.
    2.Because of above item#1, need to configure SD Host Register [03E][13] to
      1(64bits addressing mode) before set 64bit ADMA system address's higher
      32bits SD Host Register [05F~05C] if 64 bits addressing mode is used.
    
    The hardware limitation is reasonable for below reasons:
    1.Normal flow should set DMA working mode first, then do
      DMA-transfer-related configuration, such as system address.
    2.The hardware limitation may avoid the software to configure wrong higher
      32bit address at 32bits addressing mode although it is redundant.
    
    The change that set 32bits/64bits addressing mode before set ADMA address,
      has no side-effect to other host IPs for below reason:
    The setting order is reasonable and standard: DMA Mode setting first and
      then DMA address setting. It meets all DMA setting sequence.
    Signed-off-by: default avatarChevron Li <chevron.li@bayhubtech.com>
    Acked-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20230523111114.18124-1-chevron_li@126.comSigned-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    20dbd07e
sdhci.c 129 KB