x86, IA64, powerpc: add phys_to_dma() and dma_to_phys()
authorFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Fri, 10 Jul 2009 01:05:01 +0000 (10:05 +0900)
committerFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Tue, 28 Jul 2009 05:19:20 +0000 (14:19 +0900)
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>
arch/ia64/include/asm/dma-mapping.h
arch/powerpc/include/asm/dma-mapping.h
arch/x86/include/asm/dma-mapping.h

index 88d0f860394dc5c5de3a2f965a517e4172feb4e2..f91829de329f19165ee56dc6d2bd1088638b4532 100644 (file)
@@ -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;
 }
 
+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);
 
 static inline void
index 6ff1f8581d7958e1e1911da5ffa4be8e41685184..0c34371ec49c8922b21161efbf275d7c198199e4 100644 (file)
@@ -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;
 }
 
+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_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h)
 #ifdef CONFIG_NOT_COHERENT_CACHE
index adac59c8f69b6405164b493d3da274dd3a3352db..0ee770d23d0e52998810113f662cb517549064c6 100644 (file)
@@ -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;
 }
 
+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
 dma_cache_sync(struct device *dev, void *vaddr, size_t size,
        enum dma_data_direction dir)