summaryrefslogtreecommitdiff
path: root/drivers/mmc
diff options
context:
space:
mode:
authorAsutosh Das <asutoshd@codeaurora.org>2013-01-10 21:05:49 +0530
committerSubhash Jadavani <subhashj@codeaurora.org>2016-05-27 10:28:54 -0700
commita45d072d68387b27af213e9c49d7bfb806d8ac9a (patch)
tree556cf6bc90382cbe4a980b0cf8865bdbd99c717c /drivers/mmc
parent6d26067be7decc88beec36e6081507632cad15e1 (diff)
mmc: sdhci: add support for configurable request size
Some platform drivers support more than 128 adma descriptors and allows more than 512KB maximum request size per transfer. Add a callback to get maximum supported adma descriptors from platform driver instead of limiting host capabilities to 128 descriptors. Change-Id: I0ac0ffbd0e792a76931e21b321b39c35195ac8d6 Signed-off-by: Asutosh Das <asutoshd@codeaurora.org> [subhashj@codeaurora.org: fixed minor merge conflict] Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
Diffstat (limited to 'drivers/mmc')
-rw-r--r--drivers/mmc/host/sdhci.c2
-rw-r--r--drivers/mmc/host/sdhci.h5
2 files changed, 6 insertions, 1 deletions
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 724a574ed4e9..24f3cac7879f 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -819,7 +819,7 @@ static void sdhci_prepare_data(struct sdhci_host *host, struct mmc_command *cmd)
return;
/* Sanity checks */
- BUG_ON(data->blksz * data->blocks > 524288);
+ BUG_ON(data->blksz * data->blocks > host->mmc->max_req_size);
BUG_ON(data->blksz > host->mmc->max_blk_size);
BUG_ON(data->blocks > 65535);
diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h
index 63106bb28782..6d8ddfc07fb5 100644
--- a/drivers/mmc/host/sdhci.h
+++ b/drivers/mmc/host/sdhci.h
@@ -550,6 +550,10 @@ struct sdhci_host {
size_t adma_table_sz; /* ADMA descriptor table size */
size_t align_buffer_sz; /* Bounce buffer size */
+ unsigned int adma_desc_sz; /* ADMA descriptor table size */
+ unsigned int align_buf_sz; /* Bounce buffer size */
+ unsigned int adma_max_desc; /* Max ADMA descriptos (max sg segments) */
+
dma_addr_t adma_addr; /* Mapped ADMA descr. table */
dma_addr_t align_addr; /* Mapped bounce buffer */
@@ -624,6 +628,7 @@ struct sdhci_ops {
void (*set_uhs_signaling)(struct sdhci_host *host, unsigned int uhs);
void (*hw_reset)(struct sdhci_host *host);
void (*adma_workaround)(struct sdhci_host *host, u32 intmask);
+ unsigned int (*get_max_segments)(void);
void (*platform_init)(struct sdhci_host *host);
#define REQ_BUS_OFF (1 << 0)
#define REQ_BUS_ON (1 << 1)