From: Zhaoyifeng <zyf@rock-chips.com>
Date: Tue, 14 Apr 2015 09:29:24 +0000 (+0800)
Subject:     NAND DRIVER: rk3368 support nand.
X-Git-Tag: firefly_0821_release~4158^2~205
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=e1bce0140d148e8e859fd474e6dcb03c05e446ea;p=firefly-linux-kernel-4.4.55.git

NAND DRIVER: rk3368 support nand.
    using __dma_map_area and virt_to_phys instead of rknand_dma_map_single
 and rknand_dma_unmap_single.
    dma_map_single need dev config dma ops struct and config dma_mask.
NAND flash driver has not this config and got the incorrect phy addr return by
dma_map_single.
---

diff --git a/arch/arm/mach-rockchip/rknandbase.c b/arch/arm/mach-rockchip/rknandbase.c
index 887fe973f4cb..deefabb67f37 100755
--- a/arch/arm/mach-rockchip/rknandbase.c
+++ b/arch/arm/mach-rockchip/rknandbase.c
@@ -156,13 +156,22 @@ EXPORT_SYMBOL(rknand_dma_flush_dcache);
 
 unsigned long rknand_dma_map_single(unsigned long ptr,int size,int dir)
 {
+#ifdef CONFIG_ARM64
+    __dma_map_area((void*)ptr, size, dir);
+    return ((unsigned long )virt_to_phys((void *)ptr));
+#else
     return dma_map_single(NULL,(void*)ptr,size, dir?DMA_TO_DEVICE:DMA_FROM_DEVICE);
+#endif
 }
 EXPORT_SYMBOL(rknand_dma_map_single);
 
 void rknand_dma_unmap_single(unsigned long ptr,int size,int dir)
 {
+#ifdef CONFIG_ARM64
+    __dma_unmap_area(phys_to_virt(ptr), size, dir);
+#else
     dma_unmap_single(NULL, (dma_addr_t)ptr,size, dir?DMA_TO_DEVICE:DMA_FROM_DEVICE);
+#endif
 }
 EXPORT_SYMBOL(rknand_dma_unmap_single);