Lines Matching refs:gr

1012 	struct nvkm_device *device = info->gr->base.engine.subdev.device;  in gf100_grctx_mmio_item()
1033 gf100_grctx_generate_r419cb8(struct gf100_gr *gr) in gf100_grctx_generate_r419cb8() argument
1035 struct nvkm_device *device = gr->base.engine.subdev.device; in gf100_grctx_generate_r419cb8()
1042 const struct gf100_grctx_func *grctx = info->gr->func->grctx; in gf100_grctx_generate_bundle()
1054 const struct gf100_grctx_func *grctx = info->gr->func->grctx; in gf100_grctx_generate_pagepool()
1066 struct gf100_gr *gr = info->gr; in gf100_grctx_generate_attrib() local
1067 const struct gf100_grctx_func *grctx = gr->func->grctx; in gf100_grctx_generate_attrib()
1071 const int b = mmio_vram(info, size * gr->tpc_total, (1 << s), false); in gf100_grctx_generate_attrib()
1079 for (gpc = 0; gpc < gr->gpc_nr; gpc++) { in gf100_grctx_generate_attrib()
1080 for (tpc = 0; tpc < gr->tpc_nr[gpc]; tpc++) { in gf100_grctx_generate_attrib()
1090 gf100_grctx_generate_unkn(struct gf100_gr *gr) in gf100_grctx_generate_unkn() argument
1095 gf100_grctx_generate_r4060a8(struct gf100_gr *gr) in gf100_grctx_generate_r4060a8() argument
1097 struct nvkm_device *device = gr->base.engine.subdev.device; in gf100_grctx_generate_r4060a8()
1105 if (sm < gr->sm_nr) in gf100_grctx_generate_r4060a8()
1106 data |= gr->sm[sm++].gpc << (j * 8); in gf100_grctx_generate_r4060a8()
1115 gf100_grctx_generate_rop_mapping(struct gf100_gr *gr) in gf100_grctx_generate_rop_mapping() argument
1117 struct nvkm_device *device = gr->base.engine.subdev.device; in gf100_grctx_generate_rop_mapping()
1124 data[i / 6] |= (gr->tile[i] & 0x07) << ((i % 6) * 5); in gf100_grctx_generate_rop_mapping()
1128 ntpcv = gr->tpc_total; in gf100_grctx_generate_rop_mapping()
1141 nvkm_wr32(device, 0x418bb8, (gr->tpc_total << 8) | in gf100_grctx_generate_rop_mapping()
1142 gr->screen_tile_row_offset); in gf100_grctx_generate_rop_mapping()
1147 nvkm_wr32(device, 0x419bd0, (gr->tpc_total << 8) | in gf100_grctx_generate_rop_mapping()
1148 gr->screen_tile_row_offset | data2[0]); in gf100_grctx_generate_rop_mapping()
1154 nvkm_wr32(device, 0x4078bc, (gr->tpc_total << 8) | in gf100_grctx_generate_rop_mapping()
1155 gr->screen_tile_row_offset); in gf100_grctx_generate_rop_mapping()
1161 gf100_grctx_generate_max_ways_evict(struct gf100_gr *gr) in gf100_grctx_generate_max_ways_evict() argument
1163 struct nvkm_device *device = gr->base.engine.subdev.device; in gf100_grctx_generate_max_ways_evict()
1271 gf100_grctx_generate_alpha_beta_tables(struct gf100_gr *gr) in gf100_grctx_generate_alpha_beta_tables() argument
1273 struct nvkm_subdev *subdev = &gr->base.engine.subdev; in gf100_grctx_generate_alpha_beta_tables()
1278 u32 atarget = gf100_grctx_alpha_beta_map[gr->tpc_total][i]; in gf100_grctx_generate_alpha_beta_tables()
1283 atarget = max_t(u32, gr->tpc_total * i / 32, 1); in gf100_grctx_generate_alpha_beta_tables()
1287 for (gpc = 0; atarget && gpc < gr->gpc_nr; gpc++) { in gf100_grctx_generate_alpha_beta_tables()
1288 if (abits[gpc] < gr->tpc_nr[gpc]) { in gf100_grctx_generate_alpha_beta_tables()
1295 for (gpc = 0; gpc < gr->gpc_nr; gpc++) { in gf100_grctx_generate_alpha_beta_tables()
1296 u32 bbits = gr->tpc_nr[gpc] - abits[gpc]; in gf100_grctx_generate_alpha_beta_tables()
1307 gf100_grctx_generate_tpc_nr(struct gf100_gr *gr, int gpc) in gf100_grctx_generate_tpc_nr() argument
1309 struct nvkm_device *device = gr->base.engine.subdev.device; in gf100_grctx_generate_tpc_nr()
1310 nvkm_wr32(device, GPC_UNIT(gpc, 0x0c08), gr->tpc_nr[gpc]); in gf100_grctx_generate_tpc_nr()
1311 nvkm_wr32(device, GPC_UNIT(gpc, 0x0c8c), gr->tpc_nr[gpc]); in gf100_grctx_generate_tpc_nr()
1315 gf100_grctx_generate_sm_id(struct gf100_gr *gr, int gpc, int tpc, int sm) in gf100_grctx_generate_sm_id() argument
1317 struct nvkm_device *device = gr->base.engine.subdev.device; in gf100_grctx_generate_sm_id()
1325 gf100_grctx_generate_floorsweep(struct gf100_gr *gr) in gf100_grctx_generate_floorsweep() argument
1327 struct nvkm_device *device = gr->base.engine.subdev.device; in gf100_grctx_generate_floorsweep()
1328 const struct gf100_grctx_func *func = gr->func->grctx; in gf100_grctx_generate_floorsweep()
1332 for (sm = 0; sm < gr->sm_nr; sm++) { in gf100_grctx_generate_floorsweep()
1333 func->sm_id(gr, gr->sm[sm].gpc, gr->sm[sm].tpc, sm); in gf100_grctx_generate_floorsweep()
1335 func->tpc_nr(gr, gr->sm[sm].gpc); in gf100_grctx_generate_floorsweep()
1339 for (data = 0, j = 0; j < 8 && gpc < gr->gpc_nr; j++, gpc++) in gf100_grctx_generate_floorsweep()
1340 data |= gr->tpc_nr[gpc] << (j * 4); in gf100_grctx_generate_floorsweep()
1346 func->r4060a8(gr); in gf100_grctx_generate_floorsweep()
1348 func->rop_mapping(gr); in gf100_grctx_generate_floorsweep()
1351 func->alpha_beta_tables(gr); in gf100_grctx_generate_floorsweep()
1353 func->max_ways_evict(gr); in gf100_grctx_generate_floorsweep()
1355 func->dist_skip_table(gr); in gf100_grctx_generate_floorsweep()
1357 func->r406500(gr); in gf100_grctx_generate_floorsweep()
1359 func->gpc_tpc_nr(gr); in gf100_grctx_generate_floorsweep()
1361 func->r419f78(gr); in gf100_grctx_generate_floorsweep()
1363 func->tpc_mask(gr); in gf100_grctx_generate_floorsweep()
1365 func->smid_config(gr); in gf100_grctx_generate_floorsweep()
1369 gf100_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info) in gf100_grctx_generate_main() argument
1371 struct nvkm_device *device = gr->base.engine.subdev.device; in gf100_grctx_generate_main()
1372 const struct gf100_grctx_func *grctx = gr->func->grctx; in gf100_grctx_generate_main()
1377 if (!gr->fuc_sw_ctx) { in gf100_grctx_generate_main()
1378 gf100_gr_mmio(gr, grctx->hub); in gf100_grctx_generate_main()
1379 gf100_gr_mmio(gr, grctx->gpc_0); in gf100_grctx_generate_main()
1380 gf100_gr_mmio(gr, grctx->zcull); in gf100_grctx_generate_main()
1381 gf100_gr_mmio(gr, grctx->gpc_1); in gf100_grctx_generate_main()
1382 gf100_gr_mmio(gr, grctx->tpc); in gf100_grctx_generate_main()
1383 gf100_gr_mmio(gr, grctx->ppc); in gf100_grctx_generate_main()
1385 gf100_gr_mmio(gr, gr->fuc_sw_ctx); in gf100_grctx_generate_main()
1388 gf100_gr_wait_idle(gr); in gf100_grctx_generate_main()
1397 grctx->unkn(gr); in gf100_grctx_generate_main()
1399 gf100_grctx_generate_floorsweep(gr); in gf100_grctx_generate_main()
1401 gf100_gr_wait_idle(gr); in gf100_grctx_generate_main()
1403 if (grctx->r400088) grctx->r400088(gr, false); in gf100_grctx_generate_main()
1404 if (gr->fuc_bundle) in gf100_grctx_generate_main()
1405 gf100_gr_icmd(gr, gr->fuc_bundle); in gf100_grctx_generate_main()
1407 gf100_gr_icmd(gr, grctx->icmd); in gf100_grctx_generate_main()
1409 gf100_gr_icmd(gr, grctx->sw_veid_bundle_init); in gf100_grctx_generate_main()
1410 if (grctx->r400088) grctx->r400088(gr, true); in gf100_grctx_generate_main()
1414 if (gr->fuc_method) in gf100_grctx_generate_main()
1415 gf100_gr_mthd(gr, gr->fuc_method); in gf100_grctx_generate_main()
1417 gf100_gr_mthd(gr, grctx->mthd); in gf100_grctx_generate_main()
1421 grctx->r419cb8(gr); in gf100_grctx_generate_main()
1423 grctx->r418800(gr); in gf100_grctx_generate_main()
1425 grctx->r419eb0(gr); in gf100_grctx_generate_main()
1427 grctx->r419e00(gr); in gf100_grctx_generate_main()
1429 grctx->r418e94(gr); in gf100_grctx_generate_main()
1431 grctx->r419a3c(gr); in gf100_grctx_generate_main()
1433 grctx->r408840(gr); in gf100_grctx_generate_main()
1439 gf100_grctx_generate(struct gf100_gr *gr) in gf100_grctx_generate() argument
1441 const struct gf100_grctx_func *grctx = gr->func->grctx; in gf100_grctx_generate()
1442 struct nvkm_subdev *subdev = &gr->base.engine.subdev; in gf100_grctx_generate()
1460 grctx->unkn88c(gr, true); in gf100_grctx_generate()
1470 grctx->unkn88c(gr, false); in gf100_grctx_generate()
1497 CB_RESERVED + gr->size, 0, true, &data); in gf100_grctx_generate()
1517 info.gr = gr; in gf100_grctx_generate()
1518 info.data = gr->mmio_data; in gf100_grctx_generate()
1519 info.mmio = gr->mmio_list; in gf100_grctx_generate()
1525 if (gr->firmware) { in gf100_grctx_generate()
1550 grctx->main(gr, &info); in gf100_grctx_generate()
1565 gr->data = kmalloc(gr->size, GFP_KERNEL); in gf100_grctx_generate()
1566 if (gr->data) { in gf100_grctx_generate()
1568 for (i = 0; i < gr->size; i += 4) in gf100_grctx_generate()
1569 gr->data[i / 4] = nvkm_ro32(data, CB_RESERVED + i); in gf100_grctx_generate()