From: Andrei Warkentin <andreiw@motorola.com>
To: linux-mmc@vger.kernel.org
Cc: cjb@laptop.org, Andrei Warkentin <andreiw@motorola.com>,
arindam.nath@amd.com, arnd@arndb.de, subhashj@codeaurora.org,
malchev@google.com
Subject: [v5 5/5] MMC: SDHCI AutoCMD23 support.
Date: Thu, 19 May 2011 16:46:30 -0500 [thread overview]
Message-ID: <1305841590-26963-6-git-send-email-andreiw@motorola.com> (raw)
In-Reply-To: <1303870235-29041-1-git-send-email-andreiw@motorola.com>
Enables Auto-CMD23 support where available (SDHCI 3.0 controllers)
Cc: arindam.nath@amd.com
Cc: cjb@laptop.org
Cc: arnd@arndb.de
Cc: subhashj@codeaurora.org
Cc: malchev@google.com
Tested-by: Arindam Nath <arindam.nath@amd.com>
Signed-off-by: Andrei Warkentin <andreiw@motorola.com>
---
drivers/mmc/host/sdhci.c | 17 ++++++++++++++++-
drivers/mmc/host/sdhci.h | 2 ++
include/linux/mmc/sdhci.h | 1 +
3 files changed, 19 insertions(+), 1 deletions(-)
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 1138b55..d79b2d0 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -860,7 +860,13 @@ static void sdhci_set_transfer_mode(struct sdhci_host *host,
if (!host->mrq->sbc &&
host->flags & SDHCI_ACMD12)
mode |= SDHCI_TRNS_ACMD12;
+ else if (host->mrq->sbc &&
+ host->flags & SDHCI_ACMD23) {
+ mode |= SDHCI_TRNS_ACMD23;
+ sdhci_writel(host, host->mrq->sbc->arg, SDHCI_ARGUMENT2);
+ }
}
+
if (data->flags & MMC_DATA_READ)
mode |= SDHCI_TRNS_READ;
if (host->flags & SDHCI_REQ_USE_DMA)
@@ -1255,7 +1261,7 @@ static void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq)
host->mrq = mrq;
}
- if (mrq->sbc)
+ if (mrq->sbc && !(host->flags & SDHCI_ACMD23))
sdhci_send_command(host, mrq->sbc);
else
sdhci_send_command(host, mrq->cmd);
@@ -2491,6 +2497,15 @@ int sdhci_add_host(struct sdhci_host *host)
if (host->quirks & SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12)
host->flags |= SDHCI_ACMD12;
+ /* Auto-CMD23 stuff only works in ADMA or PIO. */
+ if ((host->version == SDHCI_SPEC_300) &&
+ ((host->flags & SDHCI_USE_ADMA) ||
+ !(host->flags & SDHCI_REQ_USE_DMA))) {
+ host->flags |= SDHCI_ACMD23;
+ printk(KERN_INFO "%s: Auto-CMD23 available\n", mmc_hostname(mmc));
+ } else
+ printk(KERN_INFO "%s: Auto-CMD23 unavailable\n", mmc_hostname(mmc));
+
/*
* A controller may support 8-bit width, but the board itself
* might not have the pins brought out. Boards that support
diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h
index 7e28eec..713caf0 100644
--- a/drivers/mmc/host/sdhci.h
+++ b/drivers/mmc/host/sdhci.h
@@ -25,6 +25,7 @@
*/
#define SDHCI_DMA_ADDRESS 0x00
+#define SDHCI_ARGUMENT2 0x00
#define SDHCI_BLOCK_SIZE 0x04
#define SDHCI_MAKE_BLKSZ(dma, blksz) (((dma & 0x7) << 12) | (blksz & 0xFFF))
@@ -37,6 +38,7 @@
#define SDHCI_TRNS_DMA 0x01
#define SDHCI_TRNS_BLK_CNT_EN 0x02
#define SDHCI_TRNS_ACMD12 0x04
+#define SDHCI_TRNS_ACMD23 0x08
#define SDHCI_TRNS_READ 0x10
#define SDHCI_TRNS_MULTI 0x20
diff --git a/include/linux/mmc/sdhci.h b/include/linux/mmc/sdhci.h
index d70de9d..d0db8ae 100644
--- a/include/linux/mmc/sdhci.h
+++ b/include/linux/mmc/sdhci.h
@@ -114,6 +114,7 @@ struct sdhci_host {
#define SDHCI_SDR50_NEEDS_TUNING (1<<4) /* SDR50 needs tuning */
#define SDHCI_NEEDS_RETUNING (1<<5) /* Host needs retuning */
#define SDHCI_ACMD12 (1<<6) /* Auto CMD12 support */
+#define SDHCI_ACMD23 (1<<7) /* Auto CMD23 support */
unsigned int version; /* SDHCI spec. version */
--
1.7.0.4
next prev parent reply other threads:[~2011-05-19 21:12 UTC|newest]
Thread overview: 85+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-14 0:38 SET_BLOCK_COUNT-bounded multiblock transfers Andrei Warkentin
2011-04-14 0:03 ` Andrei Warkentin
2011-04-14 9:05 ` Gao, Yunpeng
2011-04-14 22:58 ` Andrei Warkentin
2011-04-14 23:18 ` Chris Ball
2011-04-15 7:10 ` Andrei Warkentin
2011-04-15 17:29 ` Andrei Warkentin
2011-04-14 0:38 ` [RFC 1/3] MMC: use CMD23 for multiblock transfers when we can Andrei Warkentin
2011-04-14 0:38 ` [RFC 2/3] MMC: Implement MMC_CAP_CMD23 for SDHCI Andrei Warkentin
2011-04-14 0:38 ` [RFC 3/3] MMC: Block CMD23 support for UHS104/SDXC cards Andrei Warkentin
2011-04-15 23:51 ` [patchv2 1/3] MMC: Use CMD23 for multiblock transfers when we can Andrei Warkentin
2011-04-15 23:51 ` [patchv2 2/3] MMC: Implement MMC_CAP_CMD23 for SDHCI Andrei Warkentin
2011-04-15 23:51 ` [patchv2 3/3] MMC: Block CMD23 support for UHS104/SDXC cards Andrei Warkentin
2011-04-16 10:40 ` CMD23 plumbing and support patchset Andrei Warkentin
2011-04-21 1:44 ` Chris Ball
2011-04-21 6:29 ` Andrei Warkentin
2011-04-21 6:30 ` Andrei Warkentin
2011-04-22 3:53 ` Andrei Warkentin
2011-04-23 2:51 ` Chris Ball
2011-04-26 23:30 ` Andrei Warkentin
2011-04-27 2:10 ` CMD23 plumbing patchset Andrei Warkentin
2011-04-27 2:10 ` [[v4] 1/5] MMC: Add/remove quirks conditional support Andrei Warkentin
2011-04-27 2:10 ` [[v4] 2/5] MMC: Use CMD23 for multiblock transfers when we can Andrei Warkentin
2011-04-27 2:10 ` [[v4] 3/5] MMC: Implement MMC_CAP_CMD23 for SDHCI Andrei Warkentin
2011-04-27 2:10 ` [[v4] 4/5] MMC: Block CMD23 support for UHS104/SDXC cards Andrei Warkentin
2011-04-27 2:10 ` [[v4] 5/5] MMC: SDHCI AutoCMD23 support Andrei Warkentin
2011-04-27 5:49 ` Nath, Arindam
2011-04-27 5:59 ` Andrei Warkentin
2011-04-27 6:02 ` Nath, Arindam
2011-04-27 6:05 ` Andrei Warkentin
2011-04-28 8:34 ` Nath, Arindam
2011-04-28 19:09 ` Andrei Warkentin
2011-04-29 5:34 ` Nath, Arindam
2011-05-19 2:37 ` [[v4] 2/5] MMC: Use CMD23 for multiblock transfers when we can Jaehoon Chung
2011-05-19 17:01 ` Andrei Warkentin
2011-05-20 4:38 ` Jaehoon Chung
[not found] ` <BANLkTik72KgftDWz6aNn=zGDqj1uMpwnYw@mail.gmail.com>
2011-05-20 6:54 ` Andrei Warkentin
2011-05-20 9:05 ` Jaehoon Chung
2011-05-23 12:40 ` Jaehoon Chung
2011-05-23 19:25 ` Andrei Warkentin
2011-05-23 19:33 ` Andrei Warkentin
2011-05-23 19:34 ` Andrei Warkentin
2011-05-23 20:45 ` Andrei Warkentin
2011-05-24 0:07 ` Jaehoon Chung
2011-04-29 23:25 ` CMD23 plumbing patchset Andrei Warkentin
2011-05-19 21:46 ` Andrei Warkentin
2011-05-23 20:06 ` Andrei Warkentin
2011-05-25 2:51 ` Chris Ball
2011-05-23 20:06 ` [v6 1/5] MMC: Add/remove quirks conditional support Andrei Warkentin
2011-05-23 20:06 ` [v6 2/5] MMC: Use CMD23 for multiblock transfers when we can Andrei Warkentin
2011-05-23 20:06 ` [v6 3/5] MMC: Implement MMC_CAP_CMD23 for SDHCI Andrei Warkentin
2011-05-23 20:06 ` [v6 4/5] MMC: Block CMD23 support for UHS104/SDXC cards Andrei Warkentin
2011-05-24 6:01 ` Nath, Arindam
2011-05-23 20:06 ` [v6 5/5] MMC: SDHCI AutoCMD23 support Andrei Warkentin
2011-05-24 23:27 ` Chris Ball
2011-05-25 0:37 ` Andrei Warkentin
2011-05-19 21:46 ` [v5 1/5] MMC: Add/remove quirks conditional support Andrei Warkentin
2011-05-19 21:46 ` [v5 2/5] MMC: Use CMD23 for multiblock transfers when we can Andrei Warkentin
2011-05-20 10:29 ` Jaehoon Chung
2011-05-20 18:12 ` Andrei Warkentin
2011-05-19 21:46 ` [v5 3/5] MMC: Implement MMC_CAP_CMD23 for SDHCI Andrei Warkentin
2011-05-19 21:46 ` [v5 4/5] MMC: Block CMD23 support for UHS104/SDXC cards Andrei Warkentin
2011-05-20 10:38 ` Nath, Arindam
2011-05-20 18:09 ` Andrei Warkentin
2011-05-19 21:46 ` Andrei Warkentin [this message]
2011-05-20 10:46 ` [v5 5/5] MMC: SDHCI AutoCMD23 support Nath, Arindam
2011-05-20 18:08 ` Andrei Warkentin
2011-04-16 10:40 ` [patchv3 1/5] MMC: Add/remove quirks conditional support Andrei Warkentin
2011-04-16 10:40 ` [patchv3 2/5] MMC: Use CMD23 for multiblock transfers when we can Andrei Warkentin
2011-04-17 17:23 ` Arnd Bergmann
2011-04-17 19:27 ` Andrei Warkentin
2011-04-19 3:44 ` Andrei Warkentin
2011-04-19 7:39 ` Arnd Bergmann
2011-04-19 15:18 ` Andrei Warkentin
2011-04-16 10:40 ` [patchv3 3/5] MMC: Implement MMC_CAP_CMD23 for SDHCI Andrei Warkentin
2011-04-16 10:40 ` [patchv3 4/5] MMC: Block CMD23 support for UHS104/SDXC cards Andrei Warkentin
2011-04-16 16:19 ` Nath, Arindam
2011-04-16 23:00 ` Andrei Warkentin
2011-04-16 23:38 ` [PATCH] " Andrei Warkentin
2011-04-16 10:40 ` [patchv3 5/5] MMC: SDHCI AutoCMD23 support Andrei Warkentin
2011-04-17 17:25 ` Arnd Bergmann
2011-04-17 19:31 ` Andrei Warkentin
2011-04-19 3:05 ` Andrei Warkentin
2011-04-19 3:19 ` Nath, Arindam
2011-04-19 3:32 ` Andrei Warkentin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1305841590-26963-6-git-send-email-andreiw@motorola.com \
--to=andreiw@motorola.com \
--cc=arindam.nath@amd.com \
--cc=arnd@arndb.de \
--cc=cjb@laptop.org \
--cc=linux-mmc@vger.kernel.org \
--cc=malchev@google.com \
--cc=subhashj@codeaurora.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.