Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
a254129e JK |
2 | #ifndef __CMA_H__ |
3 | #define __CMA_H__ | |
4 | ||
d5e6eff2 TR |
5 | #include <linux/init.h> |
6 | #include <linux/types.h> | |
7 | ||
a254129e JK |
8 | /* |
9 | * There is always at least global CMA area and a few optional | |
10 | * areas configured in kernel .config. | |
11 | */ | |
12 | #ifdef CONFIG_CMA_AREAS | |
13 | #define MAX_CMA_AREAS (1 + CONFIG_CMA_AREAS) | |
14 | ||
15 | #else | |
16 | #define MAX_CMA_AREAS (0) | |
17 | ||
18 | #endif | |
19 | ||
20 | struct cma; | |
21 | ||
e48322ab | 22 | extern unsigned long totalcma_pages; |
ac173824 SL |
23 | extern phys_addr_t cma_get_base(const struct cma *cma); |
24 | extern unsigned long cma_get_size(const struct cma *cma); | |
f318dd08 | 25 | extern const char *cma_get_name(const struct cma *cma); |
a254129e | 26 | |
dda02fd6 WY |
27 | extern int __init cma_declare_contiguous(phys_addr_t base, |
28 | phys_addr_t size, phys_addr_t limit, | |
a254129e | 29 | phys_addr_t alignment, unsigned int order_per_bit, |
f318dd08 | 30 | bool fixed, const char *name, struct cma **res_cma); |
ac173824 SL |
31 | extern int cma_init_reserved_mem(phys_addr_t base, phys_addr_t size, |
32 | unsigned int order_per_bit, | |
f318dd08 | 33 | const char *name, |
de9e14ee | 34 | struct cma **res_cma); |
e2f466e3 LS |
35 | extern struct page *cma_alloc(struct cma *cma, size_t count, unsigned int align, |
36 | gfp_t gfp_mask); | |
ac173824 | 37 | extern bool cma_release(struct cma *cma, const struct page *pages, unsigned int count); |
e4231bcd LA |
38 | |
39 | extern int cma_for_each_area(int (*it)(struct cma *cma, void *data), void *data); | |
a254129e | 40 | #endif |