mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 03:36:19 +00:00
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>
This commit is contained in:
parent
1c4a4f48a1
commit
ef1baed887
4 changed files with 26 additions and 0 deletions
|
@ -20,6 +20,11 @@ static inline dma_addr_t page_to_dma(struct device *dev, struct page *page)
|
||||||
return (dma_addr_t)__pfn_to_bus(page_to_pfn(page));
|
return (dma_addr_t)__pfn_to_bus(page_to_pfn(page));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline struct page *dma_to_page(struct device *dev, dma_addr_t addr)
|
||||||
|
{
|
||||||
|
return pfn_to_page(__bus_to_pfn(addr));
|
||||||
|
}
|
||||||
|
|
||||||
static inline void *dma_to_virt(struct device *dev, dma_addr_t addr)
|
static inline void *dma_to_virt(struct device *dev, dma_addr_t addr)
|
||||||
{
|
{
|
||||||
return (void *)__bus_to_virt(addr);
|
return (void *)__bus_to_virt(addr);
|
||||||
|
@ -35,6 +40,11 @@ static inline dma_addr_t page_to_dma(struct device *dev, struct page *page)
|
||||||
return __arch_page_to_dma(dev, page);
|
return __arch_page_to_dma(dev, page);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline struct page *dma_to_page(struct device *dev, dma_addr_t addr)
|
||||||
|
{
|
||||||
|
return __arch_dma_to_page(dev, addr);
|
||||||
|
}
|
||||||
|
|
||||||
static inline void *dma_to_virt(struct device *dev, dma_addr_t addr)
|
static inline void *dma_to_virt(struct device *dev, dma_addr_t addr)
|
||||||
{
|
{
|
||||||
return __arch_dma_to_virt(dev, addr);
|
return __arch_dma_to_virt(dev, addr);
|
||||||
|
|
|
@ -64,6 +64,8 @@ static inline unsigned long __lbus_to_virt(dma_addr_t x)
|
||||||
(dma_addr_t)page_to_phys(page); \
|
(dma_addr_t)page_to_phys(page); \
|
||||||
})
|
})
|
||||||
|
|
||||||
|
#define __arch_dma_to_page(dev, addr) phys_to_page(addr)
|
||||||
|
|
||||||
#endif /* CONFIG_ARCH_IOP13XX */
|
#endif /* CONFIG_ARCH_IOP13XX */
|
||||||
#endif /* !ASSEMBLY */
|
#endif /* !ASSEMBLY */
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,13 @@ extern struct bus_type platform_bus_type;
|
||||||
__dma = __dma - PHYS_OFFSET + KS8695_PCIMEM_PA; \
|
__dma = __dma - PHYS_OFFSET + KS8695_PCIMEM_PA; \
|
||||||
__dma; })
|
__dma; })
|
||||||
|
|
||||||
|
#define __arch_dma_to_page(dev, x) \
|
||||||
|
({ dma_addr_t __dma = x; \
|
||||||
|
if (!is_lbus_device(dev)) \
|
||||||
|
__dma += PHYS_OFFSET - KS8695_PCIMEM_PA; \
|
||||||
|
phys_to_page(__dma); \
|
||||||
|
})
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -68,6 +68,13 @@
|
||||||
__dma = __dma - PHYS_OFFSET + OMAP1510_LB_OFFSET; \
|
__dma = __dma - PHYS_OFFSET + OMAP1510_LB_OFFSET; \
|
||||||
__dma; })
|
__dma; })
|
||||||
|
|
||||||
|
#define __arch_dma_to_page(dev, addr) \
|
||||||
|
({ dma_addr_t __dma = addr; \
|
||||||
|
if (is_lbus_device(dev)) \
|
||||||
|
__dma += PHYS_OFFSET - OMAP1510_LB_OFFSET; \
|
||||||
|
phys_to_page(__dma); \
|
||||||
|
})
|
||||||
|
|
||||||
#define __arch_dma_to_virt(dev, addr) ({ (void *) (is_lbus_device(dev) ? \
|
#define __arch_dma_to_virt(dev, addr) ({ (void *) (is_lbus_device(dev) ? \
|
||||||
lbus_to_virt(addr) : \
|
lbus_to_virt(addr) : \
|
||||||
__phys_to_virt(addr)); })
|
__phys_to_virt(addr)); })
|
||||||
|
|
Loading…
Reference in a new issue