2020-02-24 09:16:16

by Baolin Wang

[permalink] [raw]
Subject: [PATCH] mmc: host: sdhci-sprd: Set the missing MMC_CAP_WAIT_WHILE_BUSY flag

The Spreadtrum host controller supports HW busy detection for I/O
operations, which means when the host gets a transfer complete event,
that always indicates the busy signal is released. Thus we can set
the MMC_CAP_WAIT_WHILE_BUSY flag to remove some redundant software
busy polling.

Signed-off-by: Baolin Wang <[email protected]>
---
drivers/mmc/host/sdhci-sprd.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/mmc/host/sdhci-sprd.c b/drivers/mmc/host/sdhci-sprd.c
index d346223..2ab42c5 100644
--- a/drivers/mmc/host/sdhci-sprd.c
+++ b/drivers/mmc/host/sdhci-sprd.c
@@ -556,7 +556,7 @@ static int sdhci_sprd_probe(struct platform_device *pdev)
sdhci_sprd_voltage_switch;

host->mmc->caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_MMC_HIGHSPEED |
- MMC_CAP_ERASE | MMC_CAP_CMD23;
+ MMC_CAP_ERASE | MMC_CAP_CMD23 | MMC_CAP_WAIT_WHILE_BUSY;
ret = mmc_of_parse(host->mmc);
if (ret)
goto pltfm_free;
--
1.9.1


2020-02-27 13:21:18

by Adrian Hunter

[permalink] [raw]
Subject: Re: [PATCH] mmc: host: sdhci-sprd: Set the missing MMC_CAP_WAIT_WHILE_BUSY flag

On 24/02/20 11:08 am, Baolin Wang wrote:
> The Spreadtrum host controller supports HW busy detection for I/O
> operations, which means when the host gets a transfer complete event,
> that always indicates the busy signal is released. Thus we can set
> the MMC_CAP_WAIT_WHILE_BUSY flag to remove some redundant software
> busy polling.
>
> Signed-off-by: Baolin Wang <[email protected]>

Acked-by: Adrian Hunter <[email protected]>

> ---
> drivers/mmc/host/sdhci-sprd.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/mmc/host/sdhci-sprd.c b/drivers/mmc/host/sdhci-sprd.c
> index d346223..2ab42c5 100644
> --- a/drivers/mmc/host/sdhci-sprd.c
> +++ b/drivers/mmc/host/sdhci-sprd.c
> @@ -556,7 +556,7 @@ static int sdhci_sprd_probe(struct platform_device *pdev)
> sdhci_sprd_voltage_switch;
>
> host->mmc->caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_MMC_HIGHSPEED |
> - MMC_CAP_ERASE | MMC_CAP_CMD23;
> + MMC_CAP_ERASE | MMC_CAP_CMD23 | MMC_CAP_WAIT_WHILE_BUSY;
> ret = mmc_of_parse(host->mmc);
> if (ret)
> goto pltfm_free;
>

2020-03-04 15:36:11

by Ulf Hansson

[permalink] [raw]
Subject: Re: [PATCH] mmc: host: sdhci-sprd: Set the missing MMC_CAP_WAIT_WHILE_BUSY flag

On Mon, 24 Feb 2020 at 10:09, Baolin Wang <[email protected]> wrote:
>
> The Spreadtrum host controller supports HW busy detection for I/O
> operations, which means when the host gets a transfer complete event,

I assume HW busy detection also works for R1B commands, so I am adding
that information to changelog to clarify this.

Please have a look at the next branch to see that it looks good to you.

> that always indicates the busy signal is released. Thus we can set
> the MMC_CAP_WAIT_WHILE_BUSY flag to remove some redundant software
> busy polling.
>
> Signed-off-by: Baolin Wang <[email protected]>

So, applied for next, thanks!

Kind regards
Uffe


> ---
> drivers/mmc/host/sdhci-sprd.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/mmc/host/sdhci-sprd.c b/drivers/mmc/host/sdhci-sprd.c
> index d346223..2ab42c5 100644
> --- a/drivers/mmc/host/sdhci-sprd.c
> +++ b/drivers/mmc/host/sdhci-sprd.c
> @@ -556,7 +556,7 @@ static int sdhci_sprd_probe(struct platform_device *pdev)
> sdhci_sprd_voltage_switch;
>
> host->mmc->caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_MMC_HIGHSPEED |
> - MMC_CAP_ERASE | MMC_CAP_CMD23;
> + MMC_CAP_ERASE | MMC_CAP_CMD23 | MMC_CAP_WAIT_WHILE_BUSY;
> ret = mmc_of_parse(host->mmc);
> if (ret)
> goto pltfm_free;
> --
> 1.9.1
>

2020-03-05 01:17:34

by Baolin Wang

[permalink] [raw]
Subject: Re: [PATCH] mmc: host: sdhci-sprd: Set the missing MMC_CAP_WAIT_WHILE_BUSY flag

Hi Ulf,

On Wed, Mar 4, 2020 at 11:35 PM Ulf Hansson <[email protected]> wrote:
>
> On Mon, 24 Feb 2020 at 10:09, Baolin Wang <[email protected]> wrote:
> >
> > The Spreadtrum host controller supports HW busy detection for I/O
> > operations, which means when the host gets a transfer complete event,
>
> I assume HW busy detection also works for R1B commands, so I am adding
> that information to changelog to clarify this.
>
> Please have a look at the next branch to see that it looks good to you.

Looks good to me. Thanks for your help.

>
> > that always indicates the busy signal is released. Thus we can set
> > the MMC_CAP_WAIT_WHILE_BUSY flag to remove some redundant software
> > busy polling.
> >
> > Signed-off-by: Baolin Wang <[email protected]>
>
> So, applied for next, thanks!
>
> Kind regards
> Uffe
>
>
> > ---
> > drivers/mmc/host/sdhci-sprd.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/mmc/host/sdhci-sprd.c b/drivers/mmc/host/sdhci-sprd.c
> > index d346223..2ab42c5 100644
> > --- a/drivers/mmc/host/sdhci-sprd.c
> > +++ b/drivers/mmc/host/sdhci-sprd.c
> > @@ -556,7 +556,7 @@ static int sdhci_sprd_probe(struct platform_device *pdev)
> > sdhci_sprd_voltage_switch;
> >
> > host->mmc->caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_MMC_HIGHSPEED |
> > - MMC_CAP_ERASE | MMC_CAP_CMD23;
> > + MMC_CAP_ERASE | MMC_CAP_CMD23 | MMC_CAP_WAIT_WHILE_BUSY;
> > ret = mmc_of_parse(host->mmc);
> > if (ret)
> > goto pltfm_free;
> > --
> > 1.9.1
> >



--
Baolin Wang