On 15/07/19 1:58 PM, Baolin Wang wrote: > In sdhci_runtime_resume_host() function, we will always do software reset > for all, but according to the specification, we should issue reset command > and reinitialize the SD/eMMC card. Where does it say that? > However, we only do reinitialize the > SD/eMMC card when the SD/eMMC card are power down during runtime suspend. > > Thus for those platforms that do not power down the SD/eMMC card during > runtime suspend, we should not do software reset for all. > To fix this > issue, we can add one condition to validate the MMC_CAP_AGGRESSIVE_PM > to decide if we can do software reset for all or just reset command > and data lines. > > Signed-off-by: Baolin Wang <baolin.wang@xxxxxxxxxx> > --- > drivers/mmc/host/sdhci.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c > index 9715834..470c5e0 100644 > --- a/drivers/mmc/host/sdhci.c > +++ b/drivers/mmc/host/sdhci.c > @@ -3333,7 +3333,7 @@ int sdhci_runtime_resume_host(struct sdhci_host *host) > host->ops->enable_dma(host); > } > > - sdhci_init(host, 0); > + sdhci_init(host, !(mmc->caps & MMC_CAP_AGGRESSIVE_PM)); We have done a full reset for a long time, so it would be surprising to need to change it. What problem is it causing? > > if (mmc->ios.power_mode != MMC_POWER_UNDEFINED && > mmc->ios.power_mode != MMC_POWER_OFF) { >