diff options
author | Asutosh Das <asutoshd@codeaurora.org> | 2013-01-10 21:05:49 +0530 |
---|---|---|
committer | Subhash Jadavani <subhashj@codeaurora.org> | 2016-05-27 10:28:54 -0700 |
commit | a45d072d68387b27af213e9c49d7bfb806d8ac9a (patch) | |
tree | 556cf6bc90382cbe4a980b0cf8865bdbd99c717c /drivers/mmc | |
parent | 6d26067be7decc88beec36e6081507632cad15e1 (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.c | 2 | ||||
-rw-r--r-- | drivers/mmc/host/sdhci.h | 5 |
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) |