1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
#ifndef __NOUVEAU_FB_H__
#define __NOUVEAU_FB_H__
struct nouveau_fb {
struct nouveau_subdev base;
bool (*memtype_valid)(struct nouveau_fb *, u32 memtype);
struct {
enum {
NV_MEM_TYPE_UNKNOWN = 0,
NV_MEM_TYPE_STOLEN,
NV_MEM_TYPE_SGRAM,
NV_MEM_TYPE_SDRAM,
NV_MEM_TYPE_DDR1,
NV_MEM_TYPE_DDR2,
NV_MEM_TYPE_DDR3,
NV_MEM_TYPE_GDDR2,
NV_MEM_TYPE_GDDR3,
NV_MEM_TYPE_GDDR4,
NV_MEM_TYPE_GDDR5
} type;
u64 stolen;
u64 size;
int ranks;
struct nouveau_mm mm;
int (*get)(struct nouveau_fb *, u64 size, u32 align,
u32 size_nc, u32 type, struct nouveau_mem **);
void (*put)(struct nouveau_fb *, struct nouveau_mem **);
} ram;
int num_tiles;
void (*init_tile_region)(struct nouveau_fb *, int i, u32 addr,
u32 size, u32 pitch, u32 flags);
void (*set_tile_region)(struct nouveau_fb *, int i);
void (*free_tile_region)(struct nouveau_fb *, int i);
struct drm_mm tag_heap;
};
int nv04_fb_create(struct nouveau_device *, int);
bool nv04_fb_memtype_valid(struct nouveau_fb *, u32 memtype);
int nv10_fb_create(struct nouveau_device *, int);
void nv10_fb_destroy(struct nouveau_device *, int);
int nv10_fb_init(struct nouveau_device *, int);
void nv10_fb_set_tile_region(struct nouveau_fb *, int i);
int nv20_fb_create(struct nouveau_device *, int);
int nv30_fb_create(struct nouveau_device *, int);
void nv30_fb_init_tile_region(struct nouveau_fb *, int i, u32 addr,
u32 size, u32 pitch, u32 flags);
void nv30_fb_free_tile_region(struct nouveau_fb *, int i);
int nv40_fb_create(struct nouveau_device *, int);
int nv50_fb_create(struct nouveau_device *, int);
void nv50_fb_vram_del(struct nouveau_fb *, struct nouveau_mem **);
void nv50_fb_vm_trap(struct nouveau_device *, int display);
int nvc0_fb_create(struct nouveau_device *, int);
#endif
|