From: Andrei Warkentin <andreiw@motorola.com>
To: linux-mmc@vger.kernel.org
Cc: arindam.nath@amd.com, Andrei Warkentin <andreiw@motorola.com>,
cjb@laptop.org, arnd@arndb.de, subhashj@codeaurora.org
Subject: [patchv3 5/5] MMC: SDHCI AutoCMD23 support.
Date: Sat, 16 Apr 2011 05:40:58 -0500 [thread overview]
Message-ID: <1302950458-1969-6-git-send-email-andreiw@motorola.com> (raw)
In-Reply-To: <1302741523-22276-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
Signed-off-by: Andrei Warkentin <andreiw@motorola.com>
---
drivers/mmc/host/Kconfig | 9 +++++++++
drivers/mmc/host/sdhci.c | 16 +++++++++++++++-
drivers/mmc/host/sdhci.h | 2 ++
include/linux/mmc/sdhci.h | 1 +
4 files changed, 27 insertions(+), 1 deletions(-)
diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
index b981715..d4e5658 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -68,6 +68,15 @@ config MMC_SDHCI_PCI
If unsure, say N.
+config MMC_SDHCI_AUTO_CMD23
+ tristate "SDHCI 3.0 Auto-CMD23 support (EXPERIMENTAL)"
+ depends on MMC_SDHCI && EXPERIMENTAL
+ help
+ This enables the Auto-CMD23 optimization for multiblock
+ transfers where a CMD23 would be sent
+
+ If unsure, say N.
+
config MMC_RICOH_MMC
bool "Ricoh MMC Controller Disabler (EXPERIMENTAL)"
depends on MMC_SDHCI_PCI
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 41c987d..e7a38b6 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -844,7 +844,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, data->blocks, SDHCI_ARGUMENT2);
+ }
}
+
if (data->flags & MMC_DATA_READ)
mode |= SDHCI_TRNS_READ;
if (host->flags & SDHCI_REQ_USE_DMA)
@@ -1189,7 +1195,7 @@ static void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq)
tasklet_schedule(&host->finish_tasklet);
} else {
- if (mrq->sbc)
+ if (mrq->sbc && !(host->flags & SDHCI_ACMD23))
sdhci_send_command(host, mrq->sbc);
else
sdhci_send_command(host, mrq->cmd);
@@ -1947,6 +1953,14 @@ int sdhci_add_host(struct sdhci_host *host)
if (host->quirks & SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12)
host->flags |= SDHCI_ACMD12;
+#ifdef CONFIG_MMC_SDHCI_CMD23
+ /* 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;
+#endif
+
/*
* 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 85750a9..2b3fb76 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 c54ac14..d91585a 100644
--- a/include/linux/mmc/sdhci.h
+++ b/include/linux/mmc/sdhci.h
@@ -110,6 +110,7 @@ struct sdhci_host {
#define SDHCI_REQ_USE_DMA (1<<2) /* Use DMA for this req. */
#define SDHCI_DEVICE_DEAD (1<<3) /* Device unresponsive */
#define SDHCI_ACMD12 (1<<4) /* Auto CMD12 support */
+#define SDHCI_ACMD23 (1<<5) /* Auto CMD23 support */
unsigned int version; /* SDHCI spec. version */
--
1.7.0.4
next prev parent reply other threads:[~2011-04-16 10:02 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 ` [v5 5/5] MMC: SDHCI AutoCMD23 support Andrei Warkentin
2011-05-20 10:46 ` 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 ` Andrei Warkentin [this message]
2011-04-17 17:25 ` [patchv3 5/5] MMC: SDHCI AutoCMD23 support 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=1302950458-1969-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=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.