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