|
@@ -71,6 +71,22 @@ gf100_fb_oneinit(struct nvkm_fb *fb)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void
|
|
|
|
+gf100_fb_init_page(struct nvkm_fb *fb)
|
|
|
|
+{
|
|
|
|
+ struct nvkm_device *device = fb->subdev.device;
|
|
|
|
+ switch (fb->page) {
|
|
|
|
+ case 16:
|
|
|
|
+ nvkm_mask(device, 0x100c80, 0x00000001, 0x00000001);
|
|
|
|
+ break;
|
|
|
|
+ case 17:
|
|
|
|
+ default:
|
|
|
|
+ nvkm_mask(device, 0x100c80, 0x00000001, 0x00000000);
|
|
|
|
+ fb->page = 17;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
void
|
|
void
|
|
gf100_fb_init(struct nvkm_fb *base)
|
|
gf100_fb_init(struct nvkm_fb *base)
|
|
{
|
|
{
|
|
@@ -79,8 +95,6 @@ gf100_fb_init(struct nvkm_fb *base)
|
|
|
|
|
|
if (fb->r100c10_page)
|
|
if (fb->r100c10_page)
|
|
nvkm_wr32(device, 0x100c10, fb->r100c10 >> 8);
|
|
nvkm_wr32(device, 0x100c10, fb->r100c10 >> 8);
|
|
-
|
|
|
|
- nvkm_mask(device, 0x100c80, 0x00000001, 0x00000000); /* 128KiB lpg */
|
|
|
|
}
|
|
}
|
|
|
|
|
|
void *
|
|
void *
|
|
@@ -125,6 +139,7 @@ gf100_fb = {
|
|
.dtor = gf100_fb_dtor,
|
|
.dtor = gf100_fb_dtor,
|
|
.oneinit = gf100_fb_oneinit,
|
|
.oneinit = gf100_fb_oneinit,
|
|
.init = gf100_fb_init,
|
|
.init = gf100_fb_init,
|
|
|
|
+ .init_page = gf100_fb_init_page,
|
|
.intr = gf100_fb_intr,
|
|
.intr = gf100_fb_intr,
|
|
.ram_new = gf100_ram_new,
|
|
.ram_new = gf100_ram_new,
|
|
.memtype_valid = gf100_fb_memtype_valid,
|
|
.memtype_valid = gf100_fb_memtype_valid,
|