aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mmc
diff options
context:
space:
mode:
authorOlof Johansson <olof@lixom.net>2011-01-01 19:37:32 -0500
committerChris Ball <cjb@laptop.org>2011-01-08 23:52:23 -0500
commit30652aa36b58d57fcc1a0acce51e391bbb6edf5e (patch)
tree80743c840e0456381b4e1aea223661eb694a976e /drivers/mmc
parentc288b85554097a3d1271f935c48b442280b2db9e (diff)
mmc: sdhci: add quirk for max len ADMA descriptors
Some controllers misparse segment length 0 as being 0, not 65536. Add a quirk to deal with it. Signed-off-by: Olof Johansson <olof@lixom.net> Reviewed-by: Chris Ball <cjb@laptop.org> Signed-off-by: Chris Ball <cjb@laptop.org>
Diffstat (limited to 'drivers/mmc')
-rw-r--r--drivers/mmc/host/sdhci.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index d5febe584b05..9e15f41f87be 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -1949,10 +1949,14 @@ int sdhci_add_host(struct sdhci_host *host)
1949 * of bytes. When doing hardware scatter/gather, each entry cannot 1949 * of bytes. When doing hardware scatter/gather, each entry cannot
1950 * be larger than 64 KiB though. 1950 * be larger than 64 KiB though.
1951 */ 1951 */
1952 if (host->flags & SDHCI_USE_ADMA) 1952 if (host->flags & SDHCI_USE_ADMA) {
1953 mmc->max_seg_size = 65536; 1953 if (host->quirks & SDHCI_QUIRK_BROKEN_ADMA_ZEROLEN_DESC)
1954 else 1954 mmc->max_seg_size = 65535;
1955 else
1956 mmc->max_seg_size = 65536;
1957 } else {
1955 mmc->max_seg_size = mmc->max_req_size; 1958 mmc->max_seg_size = mmc->max_req_size;
1959 }
1956 1960
1957 /* 1961 /*
1958 * Maximum block size. This varies from controller to controller and 1962 * Maximum block size. This varies from controller to controller and