• Mårten Lindahl's avatar
    mmc: dw_mmc: Do not wait for DTO in case of error · 1a6fe7bb
    Mårten Lindahl authored
    When running the ARTPEC-8 DWMMC IP version, and a data error interrupt
    comes during a data read transfer, there is no guarantee for the data
    transfer over interrupt (DTO) to come within the specified data timeout.
    This case is handled by the dto_timer handler which will complete the
    request with the comment:
    
     /*
      * If DTO interrupt does NOT come in sending data state,
      * we should notify the driver to terminate current transfer
      * and report a data timeout to the core.
      */
    
    But since the ARTPEC-8 DWMMC IP version, supports an extended TMOUT
    register which allows longer timeouts than the non ARTPEC-8 version
    does, waiting for the dto_timer to complete the request in error cases
    may cause the request to take significantly longer time than necessary.
    This is specifically true for the failing steps during tuning of a
    device.
    
    Fix this by completing the request when the error interrupt comes. Since
    this fix is specific for the ARTPEC-8, a quirk is added.
    Signed-off-by: default avatarMårten Lindahl <marten.lindahl@axis.com>
    Link: https://lore.kernel.org/r/20211220113026.21129-5-marten.lindahl@axis.comSigned-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    1a6fe7bb
dw_mmc.h 18.8 KB