From 9df7e24765adf7c69bee96171ee24571024ea8aa Mon Sep 17 00:00:00 2001 From: Krishna Konda Date: Tue, 17 Sep 2013 23:55:40 -0700 Subject: 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 --- drivers/mmc/host/sdhci-msm.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'drivers') 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 { -- cgit v1.2.3