lkml.org 
[lkml]   [2009]   [Jul]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 12/15] x86, IA64, powerpc: add phys_to_dma() and dma_to_phys()
    Date
    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>
    ---
    arch/ia64/include/asm/dma-mapping.h | 10 ++++++++++
    arch/powerpc/include/asm/dma-mapping.h | 10 ++++++++++
    arch/x86/include/asm/dma-mapping.h | 10 ++++++++++
    3 files changed, 30 insertions(+), 0 deletions(-)

    diff --git a/arch/ia64/include/asm/dma-mapping.h b/arch/ia64/include/asm/dma-mapping.h
    index 88d0f86..f91829d 100644
    --- a/arch/ia64/include/asm/dma-mapping.h
    +++ b/arch/ia64/include/asm/dma-mapping.h
    @@ -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
    diff --git a/arch/powerpc/include/asm/dma-mapping.h b/arch/powerpc/include/asm/dma-mapping.h
    index 6ff1f85..0c34371 100644
    --- a/arch/powerpc/include/asm/dma-mapping.h
    +++ b/arch/powerpc/include/asm/dma-mapping.h
    @@ -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
    diff --git a/arch/x86/include/asm/dma-mapping.h b/arch/x86/include/asm/dma-mapping.h
    index adac59c..0ee770d 100644
    --- a/arch/x86/include/asm/dma-mapping.h
    +++ b/arch/x86/include/asm/dma-mapping.h
    @@ -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)
    --
    1.6.0.6


    \
     
     \ /
      Last update: 2009-07-10 03:15    [W:0.027 / U:0.996 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site