Message ID | 1314971599-14428-7-git-send-email-m.szyprowski@samsung.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, Sep 02, 2011 at 03:53:18PM +0200, Marek Szyprowski wrote: > struct dma_map_ops { > - void* (*alloc_coherent)(struct device *dev, size_t size, > - dma_addr_t *dma_handle, gfp_t gfp); > - void (*free_coherent)(struct device *dev, size_t size, > - void *vaddr, dma_addr_t dma_handle); > + void* (*alloc)(struct device *dev, size_t size, > + dma_addr_t *dma_handle, gfp_t gfp, > + struct dma_attrs *attrs); > + void (*free)(struct device *dev, size_t size, > + void *vaddr, dma_addr_t dma_handle, > + struct dma_attrs *attrs); > + int (*mmap)(struct device *, struct vm_area_struct *, > + void *, dma_addr_t, size_t, struct dma_attrs *attrs); > + > dma_addr_t (*map_page)(struct device *dev, struct page *page, > unsigned long offset, size_t size, > enum dma_data_direction dir, > -- > 1.7.1.569.g6f426 This needs conversion of all drivers implementing dma_map_ops or you will break a lot of architectures. A better approach is to keep *_coherent and implement alloc/free/mmap side-by-side until all drivers are converted. Also I miss some documentation about the new call-backs. Joerg
diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h index 347fdc3..36dfe06 100644 --- a/include/linux/dma-mapping.h +++ b/include/linux/dma-mapping.h @@ -8,10 +8,15 @@ #include <linux/scatterlist.h> struct dma_map_ops { - void* (*alloc_coherent)(struct device *dev, size_t size, - dma_addr_t *dma_handle, gfp_t gfp); - void (*free_coherent)(struct device *dev, size_t size, - void *vaddr, dma_addr_t dma_handle); + void* (*alloc)(struct device *dev, size_t size, + dma_addr_t *dma_handle, gfp_t gfp, + struct dma_attrs *attrs); + void (*free)(struct device *dev, size_t size, + void *vaddr, dma_addr_t dma_handle, + struct dma_attrs *attrs); + int (*mmap)(struct device *, struct vm_area_struct *, + void *, dma_addr_t, size_t, struct dma_attrs *attrs); + dma_addr_t (*map_page)(struct device *dev, struct page *page, unsigned long offset, size_t size, enum dma_data_direction dir,