]> git.baikalelectronics.ru Git - kernel.git/commit
mmc: sdhci-sprd: Fix the incorrect soft reset operation when runtime resuming
authorBaolin Wang <baolin.wang@linaro.org>
Thu, 25 Jul 2019 03:14:22 +0000 (11:14 +0800)
committerUlf Hansson <ulf.hansson@linaro.org>
Tue, 6 Aug 2019 16:59:14 +0000 (18:59 +0200)
commit6b7b277a2254ee2e95b90440e068da5ce2dcf573
tree979f6cfebb12a4732d460920a9f93a986143cfc5
parent98f2f03894443d3a44ddfe8334be57b6ae4f612b
mmc: sdhci-sprd: Fix the incorrect soft reset operation when runtime resuming

The SD host controller specification defines 3 types software reset:
software reset for data line, software reset for command line and software
reset for all. Software reset for all means this reset affects the entire
Host controller except for the card detection circuit.

In sdhci_runtime_resume_host() we always do a software "reset for all",
which causes the Spreadtrum variant controller to work abnormally after
resuming. To fix the problem, let's do a software reset for the data and
the command part, rather than "for all".

However, as sdhci_runtime_resume() is a common sdhci function and we don't
want to change the behaviour for other variants, let's introduce a new
in-parameter for it. This enables the caller to decide if a "reset for all"
shall be done or not.

Signed-off-by: Baolin Wang <baolin.wang@linaro.org>
Fixes: 4e150946b509 ("mmc: sdhci-sprd: Add Spreadtrum's initial host controller")
Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/sdhci-acpi.c
drivers/mmc/host/sdhci-esdhc-imx.c
drivers/mmc/host/sdhci-of-at91.c
drivers/mmc/host/sdhci-pci-core.c
drivers/mmc/host/sdhci-pxav3.c
drivers/mmc/host/sdhci-s3c.c
drivers/mmc/host/sdhci-sprd.c
drivers/mmc/host/sdhci-xenon.c
drivers/mmc/host/sdhci.c
drivers/mmc/host/sdhci.h