Commit | Line | Data |
---|---|---|
5025407b BS |
1 | #ifndef __NVKM_MM_H__ |
2 | #define __NVKM_MM_H__ | |
3 | #include <core/os.h> | |
573a2a37 | 4 | |
5025407b | 5 | struct nvkm_mm_node { |
573a2a37 BS |
6 | struct list_head nl_entry; |
7 | struct list_head fl_entry; | |
8 | struct list_head rl_entry; | |
9 | ||
65270a65 BS |
10 | #define NVKM_MM_HEAP_ANY 0x00 |
11 | u8 heap; | |
79456e1a | 12 | #define NVKM_MM_TYPE_NONE 0x00 |
13dfe128 | 13 | #define NVKM_MM_TYPE_HOLE 0xff |
8b464bfe | 14 | u8 type; |
573a2a37 BS |
15 | u32 offset; |
16 | u32 length; | |
17 | }; | |
18 | ||
5025407b | 19 | struct nvkm_mm { |
573a2a37 BS |
20 | struct list_head nodes; |
21 | struct list_head free; | |
22 | ||
573a2a37 | 23 | u32 block_size; |
a12036ba | 24 | int heap_nodes; |
573a2a37 BS |
25 | }; |
26 | ||
7e0f992b | 27 | static inline bool |
5025407b | 28 | nvkm_mm_initialised(struct nvkm_mm *mm) |
7e0f992b | 29 | { |
d36a99d2 | 30 | return mm->heap_nodes; |
7e0f992b BS |
31 | } |
32 | ||
5025407b BS |
33 | int nvkm_mm_init(struct nvkm_mm *, u32 offset, u32 length, u32 block); |
34 | int nvkm_mm_fini(struct nvkm_mm *); | |
35 | int nvkm_mm_head(struct nvkm_mm *, u8 heap, u8 type, u32 size_max, | |
36 | u32 size_min, u32 align, struct nvkm_mm_node **); | |
37 | int nvkm_mm_tail(struct nvkm_mm *, u8 heap, u8 type, u32 size_max, | |
38 | u32 size_min, u32 align, struct nvkm_mm_node **); | |
39 | void nvkm_mm_free(struct nvkm_mm *, struct nvkm_mm_node **); | |
d36a99d2 | 40 | void nvkm_mm_dump(struct nvkm_mm *, const char *); |
573a2a37 | 41 | #endif |