drm/nouveau/core: prepare for new-style objects
[deliverable/linux.git] / drivers / gpu / drm / nouveau / include / nvkm / core / mm.h
CommitLineData
5025407b
BS
1#ifndef __NVKM_MM_H__
2#define __NVKM_MM_H__
3#include <core/os.h>
573a2a37 4
5025407b 5struct 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 19struct 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 27static inline bool
5025407b 28nvkm_mm_initialised(struct nvkm_mm *mm)
7e0f992b 29{
d36a99d2 30 return mm->heap_nodes;
7e0f992b
BS
31}
32
5025407b
BS
33int nvkm_mm_init(struct nvkm_mm *, u32 offset, u32 length, u32 block);
34int nvkm_mm_fini(struct nvkm_mm *);
35int nvkm_mm_head(struct nvkm_mm *, u8 heap, u8 type, u32 size_max,
36 u32 size_min, u32 align, struct nvkm_mm_node **);
37int nvkm_mm_tail(struct nvkm_mm *, u8 heap, u8 type, u32 size_max,
38 u32 size_min, u32 align, struct nvkm_mm_node **);
39void nvkm_mm_free(struct nvkm_mm *, struct nvkm_mm_node **);
d36a99d2 40void nvkm_mm_dump(struct nvkm_mm *, const char *);
573a2a37 41#endif
This page took 0.301429 seconds and 5 git commands to generate.