• Brian Norris's avatar
    mmc: sdhci-brcmstb: Fix SDHCI_RESET_ALL for CQHCI · 56baa208
    Brian Norris authored
    [[ NOTE: this is completely untested by the author, but included solely
        because, as noted in commit df57d732 ("mmc: sdhci-pci: Fix
        SDHCI_RESET_ALL for CQHCI for Intel GLK-based controllers"), "other
        drivers using CQHCI might benefit from a similar change, if they
        also have CQHCI reset by SDHCI_RESET_ALL." We've now seen the same
        bug on at least MSM, Arasan, and Intel hardware. ]]
    
    SDHCI_RESET_ALL resets will reset the hardware CQE state, but we aren't
    tracking that properly in software. When out of sync, we may trigger
    various timeouts.
    
    It's not typical to perform resets while CQE is enabled, but this may
    occur in some suspend or error recovery scenarios.
    
    Include this fix by way of the new sdhci_and_cqhci_reset() helper.
    
    I only patch the bcm7216 variant even though others potentially *could*
    provide the 'supports-cqe' property (and thus enable CQHCI), because
    d46ba2d1 ("mmc: sdhci-brcmstb: Add support for Command Queuing
    (CQE)") and some Broadcom folks confirm that only the 7216 variant
    actually supports it.
    
    This patch depends on (and should not compile without) the patch
    entitled "mmc: cqhci: Provide helper for resetting both SDHCI and
    CQHCI".
    
    Fixes: d46ba2d1 ("mmc: sdhci-brcmstb: Add support for Command Queuing (CQE)")
    Signed-off-by: default avatarBrian Norris <briannorris@chromium.org>
    Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
    Acked-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20221026124150.v4.3.I6a715feab6d01f760455865e968ecf0d85036018@changeidSigned-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    56baa208
sdhci-brcmstb.c 11.6 KB