Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b81146b0 authored by Ben Skeggs's avatar Ben Skeggs
Browse files

drm/gf100-/gr: fetch tpcs-per-ppc info on startup



Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent f331a15f
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -113,4 +113,5 @@ gk110b_graph_oclass = &(struct nvc0_graph_oclass) {
	.mmio = gk110b_graph_pack_mmio,
	.fecs.ucode = &nvf0_graph_fecs_ucode,
	.gpccs.ucode = &nvf0_graph_gpccs_ucode,
	.ppc_nr = 2,
}.base;
+1 −0
Original line number Diff line number Diff line
@@ -44,4 +44,5 @@ gk20a_graph_oclass = &(struct nvc0_graph_oclass) {
	.cclass = &gk20a_grctx_oclass,
	.sclass = gk20a_graph_sclass,
	.mmio = nve4_graph_pack_mmio,
	.ppc_nr = 1,
}.base;
+1 −0
Original line number Diff line number Diff line
@@ -465,4 +465,5 @@ gm107_graph_oclass = &(struct nvc0_graph_oclass) {
	.mmio = gm107_graph_pack_mmio,
	.fecs.ucode = 0 ? &gm107_graph_fecs_ucode : NULL,
	.gpccs.ucode = &gm107_graph_gpccs_ucode,
	.ppc_nr = 2,
}.base;
+1 −0
Original line number Diff line number Diff line
@@ -220,4 +220,5 @@ nv108_graph_oclass = &(struct nvc0_graph_oclass) {
	.mmio = nv108_graph_pack_mmio,
	.fecs.ucode = &nv108_graph_fecs_ucode,
	.gpccs.ucode = &nv108_graph_gpccs_ucode,
	.ppc_nr = 1,
}.base;
+6 −1
Original line number Diff line number Diff line
@@ -1503,7 +1503,7 @@ nvc0_graph_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
	struct nouveau_device *device = nv_device(parent);
	struct nvc0_graph_priv *priv;
	bool use_ext_fw, enable;
	int ret, i;
	int ret, i, j;

	use_ext_fw = nouveau_boolopt(device->cfgopt, "NvGrUseFW",
				     oclass->fecs.ucode == NULL);
@@ -1549,6 +1549,11 @@ nvc0_graph_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
	for (i = 0; i < priv->gpc_nr; i++) {
		priv->tpc_nr[i]  = nv_rd32(priv, GPC_UNIT(i, 0x2608));
		priv->tpc_total += priv->tpc_nr[i];
		priv->ppc_nr[i]  = oclass->ppc_nr;
		for (j = 0; j < priv->ppc_nr[i]; j++) {
			u8 mask = nv_rd32(priv, GPC_UNIT(i, 0x0c30 + (j * 4)));
			priv->ppc_tpc_nr[i][j] = hweight8(mask);
		}
	}

	/*XXX: these need figuring out... though it might not even matter */
Loading