lkml.org 
[lkml]   [2008]   [Jan]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 38/52] [microblaze] dma support
    Date
    From: Michal Simek <monstr@monstr.eu>


    Signed-off-by: Michal Simek <monstr@monstr.eu>
    ---
    include/asm-microblaze/dma-mapping.h | 124 ++++++++++++++++++++++++++++++++++
    include/asm-microblaze/dma.h | 21 ++++++
    include/asm-microblaze/scatterlist.h | 21 ++++++
    3 files changed, 166 insertions(+), 0 deletions(-)
    create mode 100644 include/asm-microblaze/dma-mapping.h
    create mode 100644 include/asm-microblaze/dma.h
    create mode 100644 include/asm-microblaze/scatterlist.h

    diff --git a/include/asm-microblaze/dma-mapping.h b/include/asm-microblaze/dma-mapping.h
    new file mode 100644
    index 0000000..defe1c4
    --- /dev/null
    +++ b/include/asm-microblaze/dma-mapping.h
    @@ -0,0 +1,124 @@
    +/*
    + * include/asm-microblaze/dma-mapping.h
    + *
    + * This file is subject to the terms and conditions of the GNU General Public
    + * License. See the file "COPYING" in the main directory of this archive
    + * for more details.
    + *
    + * Copyright (C) 2006 Atmark Techno, Inc.
    + */
    +
    +#ifndef _ASM_DMA_MAPPING_H
    +#define _ASM_DMA_MAPPING_H
    +
    +#include <asm/io.h>
    +#include <asm/bug.h>
    +
    +struct scatterlist;
    +
    +#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)
    +
    +void *consistent_alloc(gfp_t gfp, size_t size, dma_addr_t *dma_handle);
    +void consistent_free(void *vaddr);
    +void consistent_sync(void *vaddr, size_t size, int direction);
    +void consistent_sync_page(struct page *page, unsigned long offset,
    + size_t size, int direction);
    +
    +/* FIXME */
    +static inline int
    +dma_supported(struct device *dev, u64 mask)
    +{
    + return 0;
    +}
    +
    +static inline dma_addr_t
    +dma_map_page(struct device *dev, struct page *page,
    + unsigned long offset, size_t size,
    + enum dma_data_direction direction)
    +{
    + BUG();
    + return 0;
    +}
    +
    +static inline void
    +dma_unmap_page(struct device *dev, dma_addr_t dma_address, size_t size,
    + enum dma_data_direction direction)
    +{
    + BUG();
    +}
    +
    +static inline int
    +dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
    + enum dma_data_direction direction)
    +{
    + BUG();
    + return 0;
    +}
    +
    +static inline void
    +dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nhwentries,
    + enum dma_data_direction direction)
    +{
    + BUG();
    +}
    +
    +static inline void
    +dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle, size_t size,
    + enum dma_data_direction direction)
    +{
    + BUG();
    +}
    +
    +static inline void
    +dma_sync_single_for_device(struct device *dev, dma_addr_t dma_handle,
    + size_t size, enum dma_data_direction direction)
    +{
    + BUG();
    +}
    +
    +static inline void
    +dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, int nelems,
    + enum dma_data_direction direction)
    +{
    + BUG();
    +}
    +
    +static inline void
    +dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg, int nelems,
    + enum dma_data_direction direction)
    +{
    + BUG();
    +}
    +
    +static inline int
    +dma_mapping_error(dma_addr_t dma_addr)
    +{
    + return 0;
    +}
    +
    +static inline void *dma_alloc_coherent(struct device *dev, size_t size,
    + dma_addr_t *dma_handle, int flag)
    +{
    + return consistent_alloc(flag, size, dma_handle);
    +}
    +
    +static inline void dma_free_coherent(struct device *dev, size_t size,
    + void *vaddr, dma_addr_t dma_handle)
    +{
    + BUG();
    +}
    +
    +static inline dma_addr_t
    +dma_map_single(struct device *dev, void *ptr, size_t size,
    + enum dma_data_direction direction)
    +{
    + BUG_ON(direction == DMA_NONE);
    +
    + return virt_to_bus(ptr);
    +}
    +
    +#define dma_unmap_single(dev, addr, size, dir) do { } while (0)
    +
    +
    +#endif /* _ASM_DMA_MAPPING_H */
    diff --git a/include/asm-microblaze/dma.h b/include/asm-microblaze/dma.h
    new file mode 100644
    index 0000000..a0c5c41
    --- /dev/null
    +++ b/include/asm-microblaze/dma.h
    @@ -0,0 +1,21 @@
    +/*
    + * include/asm-microblaze/dma.h
    + *
    + * This file is subject to the terms and conditions of the GNU General Public
    + * License. See the file "COPYING" in the main directory of this archive
    + * for more details.
    + *
    + * Copyright (C) 2006 Atmark Techno, Inc.
    + */
    +
    +#ifndef _ASM_DMA_H
    +#define _ASM_DMA_H
    +
    +/* we don't have dma address limit. define it as zero to be
    + * unlimited. */
    +#define MAX_DMA_ADDRESS (0)
    +
    +#define ISA_DMA_THRESHOLD (0)
    +
    +
    +#endif /* _ASM_DMA_H */
    diff --git a/include/asm-microblaze/scatterlist.h b/include/asm-microblaze/scatterlist.h
    new file mode 100644
    index 0000000..389bdc8
    --- /dev/null
    +++ b/include/asm-microblaze/scatterlist.h
    @@ -0,0 +1,21 @@
    +/*
    + * include/asm-microblaze/scatterlist.h
    + *
    + * This file is subject to the terms and conditions of the GNU General Public
    + * License. See the file "COPYING" in the main directory of this archive
    + * for more details.
    + *
    + * Copyright (C) 2006 Atmark Techno, Inc.
    + */
    +
    +#ifndef _ASM_SCATTERLIST_H
    +#define _ASM_SCATTERLIST_H
    +
    +struct scatterlist {
    + unsigned long page_link;
    + unsigned int offset;
    + dma_addr_t dma_address;
    + unsigned int length;
    +};
    +
    +#endif /* _ASM_SCATTERLIST_H */
    --
    1.5.4.rc4.14.g6fc74


    \
     
     \ /
      Last update: 2008-01-26 17:05    [W:0.028 / U:184.252 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site