NAND DRIVER: rk3368 support nand.
authorZhaoyifeng <zyf@rock-chips.com>
Tue, 14 Apr 2015 09:29:24 +0000 (17:29 +0800)
committerZhaoyifeng <zyf@rock-chips.com>
Tue, 14 Apr 2015 09:29:24 +0000 (17:29 +0800)
    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.

arch/arm/mach-rockchip/rknandbase.c

index 887fe973f4cbcd856f0d063d53750b300c18af76..deefabb67f37e409151c84353d0f941ebf333ae8 100755 (executable)
@@ -156,13 +156,22 @@ EXPORT_SYMBOL(rknand_dma_flush_dcache);
 \r
 unsigned long rknand_dma_map_single(unsigned long ptr,int size,int dir)\r
 {\r
+#ifdef CONFIG_ARM64\r
+    __dma_map_area((void*)ptr, size, dir);\r
+    return ((unsigned long )virt_to_phys((void *)ptr));\r
+#else\r
     return dma_map_single(NULL,(void*)ptr,size, dir?DMA_TO_DEVICE:DMA_FROM_DEVICE);\r
+#endif\r
 }\r
 EXPORT_SYMBOL(rknand_dma_map_single);\r
 \r
 void rknand_dma_unmap_single(unsigned long ptr,int size,int dir)\r
 {\r
+#ifdef CONFIG_ARM64\r
+    __dma_unmap_area(phys_to_virt(ptr), size, dir);\r
+#else\r
     dma_unmap_single(NULL, (dma_addr_t)ptr,size, dir?DMA_TO_DEVICE:DMA_FROM_DEVICE);\r
+#endif\r
 }\r
 EXPORT_SYMBOL(rknand_dma_unmap_single);\r
 \r