[PATCH 6/7] common: dma-mapping: change alloc/free_coherent method to more generic alloc/free_attrs
Joerg Roedel
joro at 8bytes.org
Mon Sep 5 06:43:52 EDT 2011
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
More information about the linux-arm-kernel
mailing list