diff mbox

MMC: SDHCI Auto-CMD23 fixes.

Message ID 1306307623-8610-1-git-send-email-andreiw@motorola.com (mailing list archive)
State New, archived
Headers show

Commit Message

Andrei Warkentin May 25, 2011, 7:13 a.m. UTC
Fixes bugs in Auto-CMD23 feature enable decision. Auto-CMD23
shoud be enabled if host is >= v3, and SDMA is not in use.

USE_ADMA | USE_SDMA | Auto-CMD23
---------+----------+-----------
    0    |    0     |     1
---------+----------+-----------
    0    |    1     |     0
---------+----------+-----------
    1    |    0     |     1
---------+----------+-----------
    1    |    1     |     1

Signed-off-by: Andrei Warkentin <andreiw@motorola.com>
---
 drivers/mmc/host/sdhci.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

Comments

Andrei Warkentin May 25, 2011, 6:47 a.m. UTC | #1
Chris,

On Wed, May 25, 2011 at 2:13 AM, Andrei Warkentin <andreiw@motorola.com> wrote:
> Fixes bugs in Auto-CMD23 feature enable decision. Auto-CMD23
> shoud be enabled if host is >= v3, and SDMA is not in use.
>
> USE_ADMA | USE_SDMA | Auto-CMD23
> ---------+----------+-----------
>    0    |    0     |     1
> ---------+----------+-----------
>    0    |    1     |     0
> ---------+----------+-----------
>    1    |    0     |     1
> ---------+----------+-----------
>    1    |    1     |     1
>
> Signed-off-by: Andrei Warkentin <andreiw@motorola.com>
> ---
>  drivers/mmc/host/sdhci.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
> index fbb1842..a4e64b0 100644
> --- a/drivers/mmc/host/sdhci.c
> +++ b/drivers/mmc/host/sdhci.c
> @@ -2498,9 +2498,9 @@ int sdhci_add_host(struct sdhci_host *host)
>                host->flags |= SDHCI_AUTO_CMD12;
>
>        /* Auto-CMD23 stuff only works in ADMA or PIO. */
> -       if ((host->version == SDHCI_SPEC_300) &&
> +       if ((host->version >= SDHCI_SPEC_300) &&
>            ((host->flags & SDHCI_USE_ADMA) ||
> -            !(host->flags & SDHCI_REQ_USE_DMA))) {
> +            !(host->flags & SDHCI_USE_SDMA))) {
>                host->flags |= SDHCI_AUTO_CMD23;
>                printk(KERN_INFO "%s: Auto-CMD23 available\n", mmc_hostname(mmc));
>        } else
> --
> 1.7.0.4
>
>

The reason the older logic didn't work correctly is because
SDHCI_REQ_USE_DMA is not set in sdhci_add_host, but set in
sdhci_prepare_data. That means if you didn't have USE_ADMA, but had
USE_SDMA, it would still enable AUTO_CMD23, since the
SDHCI_REQ_USE_DMA bit would always be 0. I would be very grateful if
you can try it out on your XO. I unfortunately can't test this out
right now.

A
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Chris Ball May 25, 2011, 8:13 p.m. UTC | #2
Hi,

On Wed, May 25 2011, Andrei Warkentin wrote:
> Fixes bugs in Auto-CMD23 feature enable decision. Auto-CMD23
> shoud be enabled if host is >= v3, and SDMA is not in use.
>
> USE_ADMA | USE_SDMA | Auto-CMD23
> ---------+----------+-----------
>     0    |    0     |     1
> ---------+----------+-----------
>     0    |    1     |     0
> ---------+----------+-----------
>     1    |    0     |     1
> ---------+----------+-----------
>     1    |    1     |     1
>
> Signed-off-by: Andrei Warkentin <andreiw@motorola.com>

Great, this does the right thing on my XO now.  I'll send it to Linus
along with the rest of the merge shortly.

Thanks!

- Chris.
Andrei Warkentin May 25, 2011, 8:35 p.m. UTC | #3
On Wed, May 25, 2011 at 3:13 PM, Chris Ball <cjb@laptop.org> wrote:
> Hi,
>
> On Wed, May 25 2011, Andrei Warkentin wrote:
>> Fixes bugs in Auto-CMD23 feature enable decision. Auto-CMD23
>> shoud be enabled if host is >= v3, and SDMA is not in use.
>>
>> USE_ADMA | USE_SDMA | Auto-CMD23
>> ---------+----------+-----------
>>     0    |    0     |     1
>> ---------+----------+-----------
>>     0    |    1     |     0
>> ---------+----------+-----------
>>     1    |    0     |     1
>> ---------+----------+-----------
>>     1    |    1     |     1
>>
>> Signed-off-by: Andrei Warkentin <andreiw@motorola.com>
>
> Great, this does the right thing on my XO now.  I'll send it to Linus
> along with the rest of the merge shortly.
>
> Thanks!
>

Great :-)! Thanks!

A
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index fbb1842..a4e64b0 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -2498,9 +2498,9 @@  int sdhci_add_host(struct sdhci_host *host)
 		host->flags |= SDHCI_AUTO_CMD12;
 
 	/* Auto-CMD23 stuff only works in ADMA or PIO. */
-	if ((host->version == SDHCI_SPEC_300) &&
+	if ((host->version >= SDHCI_SPEC_300) &&
 	    ((host->flags & SDHCI_USE_ADMA) ||
-	     !(host->flags & SDHCI_REQ_USE_DMA))) {
+	     !(host->flags & SDHCI_USE_SDMA))) {
 		host->flags |= SDHCI_AUTO_CMD23;
 		printk(KERN_INFO "%s: Auto-CMD23 available\n", mmc_hostname(mmc));
 	} else