2022-12-19 09:34:39

by Wenchao Chen

[permalink] [raw]
Subject: [PATCH] mmc: sdhci-sprd: disable polling scan for sdio card

Enable polling will increase the power consumption of the host.

Fixes: fb8bd90f83c4 ("mmc: sdhci-sprd: Add Spreadtrum's initial host controller")
Signed-off-by: Wenchao Chen <[email protected]>
---
drivers/mmc/host/sdhci-sprd.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/drivers/mmc/host/sdhci-sprd.c b/drivers/mmc/host/sdhci-sprd.c
index 525f979e2a97..113a5c77578f 100644
--- a/drivers/mmc/host/sdhci-sprd.c
+++ b/drivers/mmc/host/sdhci-sprd.c
@@ -696,6 +696,10 @@ static int sdhci_sprd_probe(struct platform_device *pdev)
if (ret)
goto err_cleanup_host;

+ if ((host->mmc->caps2 & MMC_CAP2_NO_SD) &&
+ (host->mmc->caps2 & MMC_CAP2_NO_MMC))
+ host->mmc->caps &= ~MMC_CAP_NEEDS_POLL;
+
pm_runtime_mark_last_busy(&pdev->dev);
pm_runtime_put_autosuspend(&pdev->dev);

--
2.17.1


2022-12-19 11:11:01

by Adrian Hunter

[permalink] [raw]
Subject: Re: [PATCH] mmc: sdhci-sprd: disable polling scan for sdio card

On 19/12/22 10:47, Wenchao Chen wrote:
> Enable polling will increase the power consumption of the host.
>
> Fixes: fb8bd90f83c4 ("mmc: sdhci-sprd: Add Spreadtrum's initial host controller")
> Signed-off-by: Wenchao Chen <[email protected]>
> ---
> drivers/mmc/host/sdhci-sprd.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/mmc/host/sdhci-sprd.c b/drivers/mmc/host/sdhci-sprd.c
> index 525f979e2a97..113a5c77578f 100644
> --- a/drivers/mmc/host/sdhci-sprd.c
> +++ b/drivers/mmc/host/sdhci-sprd.c
> @@ -696,6 +696,10 @@ static int sdhci_sprd_probe(struct platform_device *pdev)
> if (ret)
> goto err_cleanup_host;
>
> + if ((host->mmc->caps2 & MMC_CAP2_NO_SD) &&
> + (host->mmc->caps2 & MMC_CAP2_NO_MMC))
> + host->mmc->caps &= ~MMC_CAP_NEEDS_POLL;

How is MMC_CAP_NEEDS_POLL getting set? SDHCI won't set it for
non-removable cards. Is it removable?

> +
> pm_runtime_mark_last_busy(&pdev->dev);
> pm_runtime_put_autosuspend(&pdev->dev);
>