|
@@ -76,6 +76,16 @@ nv50_bar_bar1_init(struct nvkm_bar *base)
|
|
|
nvkm_wr32(device, 0x001708, 0x80000000 | bar->bar1->node->offset >> 4);
|
|
|
}
|
|
|
|
|
|
+void
|
|
|
+nv50_bar_bar2_init(struct nvkm_bar *base)
|
|
|
+{
|
|
|
+ struct nvkm_device *device = base->subdev.device;
|
|
|
+ struct nv50_bar *bar = nv50_bar(base);
|
|
|
+ nvkm_wr32(device, 0x001704, 0x00000000 | bar->mem->addr >> 12);
|
|
|
+ nvkm_wr32(device, 0x001704, 0x40000000 | bar->mem->addr >> 12);
|
|
|
+ nvkm_wr32(device, 0x00170c, 0x80000000 | bar->bar2->node->offset >> 4);
|
|
|
+}
|
|
|
+
|
|
|
void
|
|
|
nv50_bar_init(struct nvkm_bar *base)
|
|
|
{
|
|
@@ -83,9 +93,6 @@ nv50_bar_init(struct nvkm_bar *base)
|
|
|
struct nvkm_device *device = bar->base.subdev.device;
|
|
|
int i;
|
|
|
|
|
|
- nvkm_wr32(device, 0x001704, 0x00000000 | bar->mem->addr >> 12);
|
|
|
- nvkm_wr32(device, 0x001704, 0x40000000 | bar->mem->addr >> 12);
|
|
|
- nvkm_wr32(device, 0x00170c, 0x80000000 | bar->bar2->node->offset >> 4);
|
|
|
for (i = 0; i < 8; i++)
|
|
|
nvkm_wr32(device, 0x001900 + (i * 4), 0x00000000);
|
|
|
}
|
|
@@ -216,6 +223,8 @@ nv50_bar_func = {
|
|
|
.bar1.init = nv50_bar_bar1_init,
|
|
|
.bar1.fini = nv50_bar_bar1_fini,
|
|
|
.bar1.wait = nv50_bar_bar1_wait,
|
|
|
+ .bar2.init = nv50_bar_bar2_init,
|
|
|
+ .bar2.wait = nv50_bar_bar1_wait,
|
|
|
.kmap = nv50_bar_kmap,
|
|
|
.umap = nv50_bar_umap,
|
|
|
.flush = nv50_bar_flush,
|