• Adrian Hunter's avatar
    mmc: sdhci: Fix SDHCI_QUIRK2_STOP_WITH_TC · fc605f1d
    Adrian Hunter authored
    Multi-block data transfers can specify the number of blocks either using a
    Set Block Count command (CMD23) or by sending a STOP command (CMD12) after
    the required number of blocks has transferred. CMD23 is preferred, but some
    cards don't support it. CMD12 with R1b response is used for writes, and
    R1 response for reads.
    
    Some SDHCI host controllers give a Transfer Complete (TC) interrupt for the
    STOP command (CMD12) whether or not a R1b response has been specified. The
    quirk SDHCI_QUIRK2_STOP_WITH_TC identifies those host controllers, but the
    implementation only considers the case where the TC interrupt arrives at
    the same time as the Command Complete (CC) interrupt. However,
    occasionally TC arrives before CC. That is harmless, but does generate an
    error message "Got data interrupt 0x00000002 even though no data operation
    was in progress".
    
    A simpler approach is to force R1b response onto all STOP commands, because
    SDHCI will handle TC before CC in the general case, so do that.
    Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
    Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
    Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    fc605f1d
sdhci.c 96.2 KB