x86, IA64, powerpc: add phys_to_dma() and dma_to_phys()
This adds two functions, phys_to_dma() and dma_to_phys() to x86, IA64 and powerpc. swiotlb uses them. phys_to_dma() converts a physical address to a dma address. dma_to_phys() does the opposite. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Acked-by: Becky Bruce <beckyb@kernel.crashing.org>
This commit is contained in:
@@ -77,6 +77,16 @@ static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size)
|
|||||||
return addr + size <= *dev->dma_mask;
|
return addr + size <= *dev->dma_mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline dma_addr_t phys_to_dma(struct device *dev, phys_addr_t paddr)
|
||||||
|
{
|
||||||
|
return paddr;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline phys_addr_t dma_to_phys(struct device *dev, dma_addr_t daddr)
|
||||||
|
{
|
||||||
|
return daddr;
|
||||||
|
}
|
||||||
|
|
||||||
extern int dma_get_cache_alignment(void);
|
extern int dma_get_cache_alignment(void);
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
|
@@ -437,6 +437,16 @@ static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size)
|
|||||||
return addr + size <= *dev->dma_mask;
|
return addr + size <= *dev->dma_mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline dma_addr_t phys_to_dma(struct device *dev, phys_addr_t paddr)
|
||||||
|
{
|
||||||
|
return paddr + get_dma_direct_offset(dev);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline phys_addr_t dma_to_phys(struct device *dev, dma_addr_t daddr)
|
||||||
|
{
|
||||||
|
return daddr - get_dma_direct_offset(dev);
|
||||||
|
}
|
||||||
|
|
||||||
#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f)
|
#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f)
|
||||||
#define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h)
|
#define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h)
|
||||||
#ifdef CONFIG_NOT_COHERENT_CACHE
|
#ifdef CONFIG_NOT_COHERENT_CACHE
|
||||||
|
@@ -63,6 +63,16 @@ static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size)
|
|||||||
return addr + size <= *dev->dma_mask;
|
return addr + size <= *dev->dma_mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline dma_addr_t phys_to_dma(struct device *dev, phys_addr_t paddr)
|
||||||
|
{
|
||||||
|
return paddr;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline phys_addr_t dma_to_phys(struct device *dev, dma_addr_t daddr)
|
||||||
|
{
|
||||||
|
return daddr;
|
||||||
|
}
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
dma_cache_sync(struct device *dev, void *vaddr, size_t size,
|
dma_cache_sync(struct device *dev, void *vaddr, size_t size,
|
||||||
enum dma_data_direction dir)
|
enum dma_data_direction dir)
|
||||||
|
Reference in New Issue
Block a user