common: dma-mapping: introduce generic alloc() and free() methods
authorMarek Szyprowski <m.szyprowski@samsung.com>
Wed, 28 Mar 2012 14:36:27 +0000 (16:36 +0200)
committerMarek Szyprowski <m.szyprowski@samsung.com>
Wed, 28 Mar 2012 14:36:27 +0000 (16:36 +0200)
Introduce new generic alloc and free methods with attributes argument.

Existing alloc_coherent and free_coherent can be implemented on top of the
new calls with NULL attributes argument. Later also dma_alloc_non_coherent
can be implemented using DMA_ATTR_NONCOHERENT attribute as well as
dma_alloc_writecombine with separate DMA_ATTR_WRITECOMBINE attribute.

This way the drivers will get more generic, platform independent way of
allocating dma buffers with specific parameters.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
Reviewed-by: David Gibson <david@gibson.dropbear.ud.au>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
include/linux/dma-mapping.h

index e13117cbd2f7daefa62d067124cbd815b860aea9..8cc7f95289ac03770b61ed0ac8f042d8d95f8e9a 100644 (file)
@@ -13,6 +13,12 @@ struct dma_map_ops {
                                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);
        dma_addr_t (*map_page)(struct device *dev, struct page *page,
                               unsigned long offset, size_t size,
                               enum dma_data_direction dir,