#ifndef __LINUX_CMA_H #define __LINUX_CMA_H /* * Contiguous Memory Allocator for DMA mapping framework * Copyright (c) 2010-2011 by Samsung Electronics. * Written by: * Marek Szyprowski * Michal Nazarewicz * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of the * License or (at your optional) any later version of the license. */ #ifdef __KERNEL__ struct cma; struct page; struct device; #ifdef CONFIG_CMA #define MAX_CMA_AREAS (1 + CONFIG_CMA_AREAS) extern struct cma *dma_contiguous_default_area; void dma_contiguous_reserve(phys_addr_t addr_limit); int dma_declare_contiguous(struct device *dev, unsigned long size, phys_addr_t base, phys_addr_t limit); struct page *dma_alloc_from_contiguous(struct device *dev, int count, unsigned int order); bool dma_release_from_contiguous(struct device *dev, struct page *pages, int count); #else #define MAX_CMA_AREAS (0) static inline void dma_contiguous_reserve(phys_addr_t limit) { } static inline int dma_declare_contiguous(struct device *dev, unsigned long size, phys_addr_t base, phys_addr_t limit) { return -ENOSYS; } static inline struct page *dma_alloc_from_contiguous(struct device *dev, int count, unsigned int order) { return NULL; } static inline bool dma_release_from_contiguous(struct device *dev, struct page *pages, int count) { return false; } #endif #endif #endif