|
@@ -188,6 +188,21 @@ gk104_gr_init_rop_active_fbps(struct gf100_gr *gr)
|
|
nvkm_mask(device, 0x408958, 0x0000000f, fbp_count); /* crop */
|
|
nvkm_mask(device, 0x408958, 0x0000000f, fbp_count); /* crop */
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void
|
|
|
|
+gk104_gr_init_ppc_exceptions(struct gf100_gr *gr)
|
|
|
|
+{
|
|
|
|
+ struct nvkm_device *device = gr->base.engine.subdev.device;
|
|
|
|
+ int gpc, ppc;
|
|
|
|
+
|
|
|
|
+ for (gpc = 0; gpc < gr->gpc_nr; gpc++) {
|
|
|
|
+ for (ppc = 0; ppc < gr->ppc_nr[gpc]; ppc++) {
|
|
|
|
+ if (!(gr->ppc_mask[gpc] & (1 << ppc)))
|
|
|
|
+ continue;
|
|
|
|
+ nvkm_wr32(device, PPC_UNIT(gpc, ppc, 0x038), 0xc0000000);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
int
|
|
int
|
|
gk104_gr_init(struct gf100_gr *gr)
|
|
gk104_gr_init(struct gf100_gr *gr)
|
|
{
|
|
{
|
|
@@ -260,8 +275,9 @@ gk104_gr_init(struct gf100_gr *gr)
|
|
nvkm_mask(device, 0x419cc0, 0x00000008, 0x00000008);
|
|
nvkm_mask(device, 0x419cc0, 0x00000008, 0x00000008);
|
|
nvkm_mask(device, 0x419eb4, 0x00001000, 0x00001000);
|
|
nvkm_mask(device, 0x419eb4, 0x00001000, 0x00001000);
|
|
|
|
|
|
|
|
+ gr->func->init_ppc_exceptions(gr);
|
|
|
|
+
|
|
for (gpc = 0; gpc < gr->gpc_nr; gpc++) {
|
|
for (gpc = 0; gpc < gr->gpc_nr; gpc++) {
|
|
- nvkm_wr32(device, GPC_UNIT(gpc, 0x3038), 0xc0000000);
|
|
|
|
nvkm_wr32(device, GPC_UNIT(gpc, 0x0420), 0xc0000000);
|
|
nvkm_wr32(device, GPC_UNIT(gpc, 0x0420), 0xc0000000);
|
|
nvkm_wr32(device, GPC_UNIT(gpc, 0x0900), 0xc0000000);
|
|
nvkm_wr32(device, GPC_UNIT(gpc, 0x0900), 0xc0000000);
|
|
nvkm_wr32(device, GPC_UNIT(gpc, 0x1028), 0xc0000000);
|
|
nvkm_wr32(device, GPC_UNIT(gpc, 0x1028), 0xc0000000);
|
|
@@ -324,6 +340,7 @@ static const struct gf100_gr_func
|
|
gk104_gr = {
|
|
gk104_gr = {
|
|
.init = gk104_gr_init,
|
|
.init = gk104_gr_init,
|
|
.init_rop_active_fbps = gk104_gr_init_rop_active_fbps,
|
|
.init_rop_active_fbps = gk104_gr_init_rop_active_fbps,
|
|
|
|
+ .init_ppc_exceptions = gk104_gr_init_ppc_exceptions,
|
|
.mmio = gk104_gr_pack_mmio,
|
|
.mmio = gk104_gr_pack_mmio,
|
|
.fecs.ucode = &gk104_gr_fecs_ucode,
|
|
.fecs.ucode = &gk104_gr_fecs_ucode,
|
|
.gpccs.ucode = &gk104_gr_gpccs_ucode,
|
|
.gpccs.ucode = &gk104_gr_gpccs_ucode,
|