From: Jaejoon Yoo Date: Tue, 10 Jan 2017 10:05:01 +0000 (+0900) Subject: DMA: Support 36bit address when call getposition function. X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=26f3777747e3aa489f77e34f65af23b9a0ac36da;p=GitHub%2FLineageOS%2Fandroid_kernel_motorola_exynos9610.git DMA: Support 36bit address when call getposition function. Change-Id: I542860611c550d25b014e6cb112e64edf94e4e02 Signed-off-by: Jaejoon Yoo --- diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c index 768bee7f4c3d..fe5479bcca94 100644 --- a/drivers/dma/pl330.c +++ b/drivers/dma/pl330.c @@ -3026,6 +3026,9 @@ int pl330_dma_getposition(struct dma_chan *chan, *src = readl(regs + SA(thrd->id)); *dst = readl(regs + DA(thrd->id)); + *src |= (dma_addr_t)readl(thrd->ar_wrapper) << 32; + *dst |= (dma_addr_t)readl(thrd->aw_wrapper) << 32; + return 0; } EXPORT_SYMBOL(pl330_dma_getposition); @@ -3115,7 +3118,11 @@ pl330_probe(struct amba_device *adev, const struct amba_id *id) int num_chan; struct device_node *np = adev->dev.of_node; +#ifdef CONFIG_ZONE_DMA + ret = dma_set_mask_and_coherent(&adev->dev, DMA_BIT_MASK(32)); +#else ret = dma_set_mask_and_coherent(&adev->dev, DMA_BIT_MASK(36)); +#endif if (ret) return ret;