Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ef1baed8 authored by Russell King's avatar Russell King
Browse files

ARM: dma-mapping: provide dma_to_page()

parent 1c4a4f48
Loading
Loading
Loading
Loading
+10 −0
Original line number Original line Diff line number Diff line
@@ -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);
+2 −0
Original line number Original line Diff line number Diff line
@@ -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 */


+7 −0
Original line number Original line Diff line number Diff line
@@ -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
+7 −0
Original line number Original line Diff line number Diff line
@@ -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)); })