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);