Commit | Line | Data |
---|---|---|
9274f4a9 BS |
1 | #ifndef __NOUVEAU_MM_H__ |
2 | #define __NOUVEAU_MM_H__ | |
573a2a37 BS |
3 | |
4 | struct nouveau_mm_node { | |
5 | struct list_head nl_entry; | |
6 | struct list_head fl_entry; | |
7 | struct list_head rl_entry; | |
8 | ||
8b464bfe | 9 | u8 type; |
573a2a37 BS |
10 | u32 offset; |
11 | u32 length; | |
12 | }; | |
13 | ||
14 | struct nouveau_mm { | |
15 | struct list_head nodes; | |
16 | struct list_head free; | |
17 | ||
18 | struct mutex mutex; | |
19 | ||
20 | u32 block_size; | |
a12036ba | 21 | int heap_nodes; |
573a2a37 BS |
22 | }; |
23 | ||
7e0f992b BS |
24 | static inline bool |
25 | nouveau_mm_initialised(struct nouveau_mm *mm) | |
26 | { | |
27 | return mm->block_size != 0; | |
28 | } | |
29 | ||
987eec10 BS |
30 | int nouveau_mm_init(struct nouveau_mm *, u32 offset, u32 length, u32 block); |
31 | int nouveau_mm_fini(struct nouveau_mm *); | |
496734bf BS |
32 | int nouveau_mm_head(struct nouveau_mm *, u8 type, u32 size_max, u32 size_min, |
33 | u32 align, struct nouveau_mm_node **); | |
34 | int nouveau_mm_tail(struct nouveau_mm *, u8 type, u32 size_max, u32 size_min, | |
35 | u32 align, struct nouveau_mm_node **); | |
36 | void nouveau_mm_free(struct nouveau_mm *, struct nouveau_mm_node **); | |
573a2a37 | 37 | |
573a2a37 | 38 | #endif |