Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: dma-mapping: provide dma_to_page()

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Tested-By: Jamie Iles <jamie@jamieiles.com>

+26
+10
arch/arm/include/asm/dma-mapping.h
··· 20 20 return (dma_addr_t)__pfn_to_bus(page_to_pfn(page)); 21 21 } 22 22 23 + static inline struct page *dma_to_page(struct device *dev, dma_addr_t addr) 24 + { 25 + return pfn_to_page(__bus_to_pfn(addr)); 26 + } 27 + 23 28 static inline void *dma_to_virt(struct device *dev, dma_addr_t addr) 24 29 { 25 30 return (void *)__bus_to_virt(addr); ··· 38 33 static inline dma_addr_t page_to_dma(struct device *dev, struct page *page) 39 34 { 40 35 return __arch_page_to_dma(dev, page); 36 + } 37 + 38 + static inline struct page *dma_to_page(struct device *dev, dma_addr_t addr) 39 + { 40 + return __arch_dma_to_page(dev, addr); 41 41 } 42 42 43 43 static inline void *dma_to_virt(struct device *dev, dma_addr_t addr)
+2
arch/arm/mach-iop13xx/include/mach/memory.h
··· 64 64 (dma_addr_t)page_to_phys(page); \ 65 65 }) 66 66 67 + #define __arch_dma_to_page(dev, addr) phys_to_page(addr) 68 + 67 69 #endif /* CONFIG_ARCH_IOP13XX */ 68 70 #endif /* !ASSEMBLY */ 69 71
+7
arch/arm/mach-ks8695/include/mach/memory.h
··· 41 41 __dma = __dma - PHYS_OFFSET + KS8695_PCIMEM_PA; \ 42 42 __dma; }) 43 43 44 + #define __arch_dma_to_page(dev, x) \ 45 + ({ dma_addr_t __dma = x; \ 46 + if (!is_lbus_device(dev)) \ 47 + __dma += PHYS_OFFSET - KS8695_PCIMEM_PA; \ 48 + phys_to_page(__dma); \ 49 + }) 50 + 44 51 #endif 45 52 46 53 #endif
+7
arch/arm/plat-omap/include/mach/memory.h
··· 68 68 __dma = __dma - PHYS_OFFSET + OMAP1510_LB_OFFSET; \ 69 69 __dma; }) 70 70 71 + #define __arch_dma_to_page(dev, addr) \ 72 + ({ dma_addr_t __dma = addr; \ 73 + if (is_lbus_device(dev)) \ 74 + __dma += PHYS_OFFSET - OMAP1510_LB_OFFSET; \ 75 + phys_to_page(__dma); \ 76 + }) 77 + 71 78 #define __arch_dma_to_virt(dev, addr) ({ (void *) (is_lbus_device(dev) ? \ 72 79 lbus_to_virt(addr) : \ 73 80 __phys_to_virt(addr)); })