summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorKrishna Konda <kkonda@codeaurora.org>2013-09-17 23:55:40 -0700
committerSubhash Jadavani <subhashj@codeaurora.org>2016-05-27 10:28:56 -0700
commit9df7e24765adf7c69bee96171ee24571024ea8aa (patch)
tree9a7df6bc2c90292f0186472d4c53c257b8ff8a19 /drivers
parent29ff0494897e8afdf44d42e095174de1685eeb23 (diff)
mmc: sdhci-msm: set dma mask for lpae/64-bit machines
On machines that support more than 32-bit address via lpae or 64-bit buses set the dma mask as 64-bit. Change-Id: Ida88f3999fd5e7d09ebe73bb3481d3f1f4cf30c2 Signed-off-by: Krishna Konda <kkonda@codeaurora.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/mmc/host/sdhci-msm.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c
index e8c4279c1cbd..2a5f2cc6b758 100644
--- a/drivers/mmc/host/sdhci-msm.c
+++ b/drivers/mmc/host/sdhci-msm.c
@@ -91,6 +91,9 @@
#define CORE_HC_SELECT_IN_HS400 (6 << 19)
#define CORE_HC_SELECT_IN_MASK (7 << 19)
+#define CORE_VENDOR_SPEC_CAPABILITIES0 0x11C
+#define CORE_SYS_BUS_SUPPORT_64_BIT 28
+
#define CORE_VENDOR_SPEC_ADMA_ERR_ADDR0 0x114
#define CORE_VENDOR_SPEC_ADMA_ERR_ADDR1 0x118
@@ -2936,7 +2939,11 @@ static int sdhci_msm_probe(struct platform_device *pdev)
}
}
- if (dma_supported(mmc_dev(host->mmc), DMA_BIT_MASK(32))) {
+ if ((sdhci_readl(host, SDHCI_CAPABILITIES) & SDHCI_CAN_64BIT) &&
+ (dma_supported(mmc_dev(host->mmc), DMA_BIT_MASK(64)))) {
+ host->dma_mask = DMA_BIT_MASK(64);
+ mmc_dev(host->mmc)->dma_mask = &host->dma_mask;
+ } else if (dma_supported(mmc_dev(host->mmc), DMA_BIT_MASK(32))) {
host->dma_mask = DMA_BIT_MASK(32);
mmc_dev(host->mmc)->dma_mask = &host->dma_mask;
} else {