1 // SPDX-License-Identifier: MIT
2 #include "ram.h"
3
4 #include <subdev/bios.h>
5
6 static const struct nvkm_ram_func
7 gp102_ram = {
8 };
9
10 int
gp102_ram_new(struct nvkm_fb * fb,struct nvkm_ram ** pram)11 gp102_ram_new(struct nvkm_fb *fb, struct nvkm_ram **pram)
12 {
13 enum nvkm_ram_type type = nvkm_fb_bios_memtype(fb->subdev.device->bios);
14 const u32 rsvd_head = ( 256 * 1024); /* vga memory */
15 const u32 rsvd_tail = (1024 * 1024); /* vbios etc */
16 u64 size = fb->func->vidmem.size(fb);
17 int ret;
18
19 ret = nvkm_ram_new_(&gp102_ram, fb, type, size, pram);
20 if (ret)
21 return ret;
22
23 nvkm_mm_fini(&(*pram)->vram);
24
25 return nvkm_mm_init(&(*pram)->vram, NVKM_RAM_MM_NORMAL,
26 rsvd_head >> NVKM_RAM_MM_SHIFT,
27 (size - rsvd_head - rsvd_tail) >> NVKM_RAM_MM_SHIFT,
28 1);
29
30 }
31