00001
00043 #ifndef GENERIC_DMAPOOL_NOMMU_H_INCLUDED
00044 #define GENERIC_DMAPOOL_NOMMU_H_INCLUDED
00045
00046 #include <dma.h>
00047 #include <mempool.h>
00048
00061 struct dma_pool {
00066 struct mem_pool mempool;
00067 };
00068
00069 static inline void dma_pool_init_coherent(struct dma_pool *pool,
00070 phys_addr_t phys_start, size_t size, size_t objsize,
00071 unsigned int align_order)
00072 {
00073 mem_pool_init(&pool->mempool, (void *)(uintptr_t)phys_start, size,
00074 objsize, align_order);
00075 }
00076
00077 static inline dma_addr_t dma_pool_alloc(struct dma_pool *pool)
00078 {
00079 dma_addr_t addr;
00080
00081
00082 addr.ptr = mem_pool_alloc(&pool->mempool);
00083
00084 return addr;
00085 }
00086
00087 static inline void dma_pool_free(struct dma_pool *pool, dma_addr_t addr)
00088 {
00089 mem_pool_free(&pool->mempool, addr.ptr);
00090 }
00091
00093
00094 #endif