This source file includes following definitions.
- nv44_fb_tile_init
- nv44_fb_tile_prog
- nv44_fb_init
- nv44_fb_new
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 #include "priv.h"
27 #include "ram.h"
28
29 static void
30 nv44_fb_tile_init(struct nvkm_fb *fb, int i, u32 addr, u32 size, u32 pitch,
31 u32 flags, struct nvkm_fb_tile *tile)
32 {
33 tile->addr = 0x00000001;
34 tile->addr |= addr;
35 tile->limit = max(1u, addr + size) - 1;
36 tile->pitch = pitch;
37 }
38
39 void
40 nv44_fb_tile_prog(struct nvkm_fb *fb, int i, struct nvkm_fb_tile *tile)
41 {
42 struct nvkm_device *device = fb->subdev.device;
43 nvkm_wr32(device, 0x100604 + (i * 0x10), tile->limit);
44 nvkm_wr32(device, 0x100608 + (i * 0x10), tile->pitch);
45 nvkm_wr32(device, 0x100600 + (i * 0x10), tile->addr);
46 nvkm_rd32(device, 0x100600 + (i * 0x10));
47 }
48
49 void
50 nv44_fb_init(struct nvkm_fb *fb)
51 {
52 struct nvkm_device *device = fb->subdev.device;
53 nvkm_wr32(device, 0x100850, 0x80000000);
54 nvkm_wr32(device, 0x100800, 0x00000001);
55 }
56
57 static const struct nvkm_fb_func
58 nv44_fb = {
59 .init = nv44_fb_init,
60 .tile.regions = 12,
61 .tile.init = nv44_fb_tile_init,
62 .tile.fini = nv20_fb_tile_fini,
63 .tile.prog = nv44_fb_tile_prog,
64 .ram_new = nv44_ram_new,
65 };
66
67 int
68 nv44_fb_new(struct nvkm_device *device, int index, struct nvkm_fb **pfb)
69 {
70 return nvkm_fb_new_(&nv44_fb, device, index, pfb);
71 }