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

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

drm/nvc0-/gr: factor out yet more unknown magic into versioned functions



NVC1/NVD9 are the only chipsets that should have anything different
happen on them after this.  We previously weren't doing these
register modifications, and NVIDIA do.

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 0bfd6f73
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -900,6 +900,11 @@ nvc0_grctx_generate_mods(struct nvc0_graph_priv *priv, struct nvc0_grctx *info)
	}
}

void
nvc0_grctx_generate_unkn(struct nvc0_graph_priv *priv)
{
}

void
nvc0_grctx_generate_tpcid(struct nvc0_graph_priv *priv)
{
@@ -1060,6 +1065,7 @@ nvc0_grctx_generate_main(struct nvc0_graph_priv *priv, struct nvc0_grctx *info)
	nv_wr32(priv, 0x404154, 0x00000000);

	oclass->mods(priv, info);
	oclass->unkn(priv);

	nvc0_grctx_generate_tpcid(priv);
	nvc0_grctx_generate_r406028(priv);
@@ -1235,6 +1241,7 @@ nvc0_grctx_oclass = &(struct nvc0_grctx_oclass) {
	},
	.main = nvc0_grctx_generate_main,
	.mods = nvc0_grctx_generate_mods,
	.unkn = nvc0_grctx_generate_unkn,
	.hub  = nvc0_grctx_init_hub,
	.gpc  = nvc0_grctx_init_gpc,
	.icmd = nvc0_grctx_init_icmd,
+12 −0
Original line number Diff line number Diff line
@@ -756,6 +756,17 @@ nvc1_grctx_generate_mods(struct nvc0_graph_priv *priv, struct nvc0_grctx *info)
	}
}

void
nvc1_grctx_generate_unkn(struct nvc0_graph_priv *priv)
{
	nv_mask(priv, 0x418c6c, 0x00000001, 0x00000001);
	nv_mask(priv, 0x41980c, 0x00000010, 0x00000010);
	nv_mask(priv, 0x419814, 0x00000004, 0x00000004);
	nv_mask(priv, 0x4064c0, 0x80000000, 0x80000000);
	nv_mask(priv, 0x405800, 0x08000000, 0x08000000);
	nv_mask(priv, 0x419c00, 0x00000008, 0x00000008);
}

static struct nvc0_graph_init *
nvc1_grctx_init_hub[] = {
	nvc0_grctx_init_base,
@@ -804,6 +815,7 @@ nvc1_grctx_oclass = &(struct nvc0_grctx_oclass) {
	},
	.main = nvc0_grctx_generate_main,
	.mods = nvc1_grctx_generate_mods,
	.unkn = nvc1_grctx_generate_unkn,
	.hub  = nvc1_grctx_init_hub,
	.gpc  = nvc1_grctx_init_gpc,
	.icmd = nvc1_grctx_init_icmd,
+1 −0
Original line number Diff line number Diff line
@@ -91,6 +91,7 @@ nvc3_grctx_oclass = &(struct nvc0_grctx_oclass) {
	},
	.main = nvc0_grctx_generate_main,
	.mods = nvc0_grctx_generate_mods,
	.unkn = nvc0_grctx_generate_unkn,
	.hub  = nvc0_grctx_init_hub,
	.gpc  = nvc3_grctx_init_gpc,
	.icmd = nvc0_grctx_init_icmd,
+1 −0
Original line number Diff line number Diff line
@@ -362,6 +362,7 @@ nvc8_grctx_oclass = &(struct nvc0_grctx_oclass) {
	},
	.main = nvc0_grctx_generate_main,
	.mods = nvc0_grctx_generate_mods,
	.unkn = nvc0_grctx_generate_unkn,
	.hub  = nvc0_grctx_init_hub,
	.gpc  = nvc8_grctx_init_gpc,
	.icmd = nvc8_grctx_init_icmd,
+2 −7
Original line number Diff line number Diff line
@@ -227,13 +227,7 @@ nvd7_grctx_generate_main(struct nvc0_graph_priv *priv, struct nvc0_grctx *info)
	nv_wr32(priv, 0x404154, 0x00000000);

	oclass->mods(priv, info);

	nv_wr32(priv, 0x418c6c, 0x1);
	nv_wr32(priv, 0x41980c, 0x10);
	nv_wr32(priv, 0x41be08, 0x4);
	nv_wr32(priv, 0x4064c0, 0x801a0078);
	nv_wr32(priv, 0x405800, 0xf8000bf);
	nv_wr32(priv, 0x419c00, 0xa);
	oclass->unkn(priv);

	nvc0_grctx_generate_tpcid(priv);
	nvc0_grctx_generate_r406028(priv);
@@ -296,6 +290,7 @@ nvd7_grctx_oclass = &(struct nvc0_grctx_oclass) {
	},
	.main = nvd7_grctx_generate_main,
	.mods = nvd7_grctx_generate_mods,
	.unkn = nve4_grctx_generate_unkn,
	.hub  = nvd7_grctx_init_hub,
	.gpc  = nvd7_grctx_init_gpc,
	.icmd = nvd9_grctx_init_icmd,
Loading