Commit 37c3afd0 authored by Ben Skeggs's avatar Ben Skeggs

drm/nvd9/gr: update initial register/context values

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 1dd44acf
......@@ -208,7 +208,7 @@ mmctx_data(0x000604, 4)
mmctx_data(0x000644, 20)
mmctx_data(0x000698, 1)
mmctx_data(0x0006e0, 1)
mmctx_data(0x000750, 3)
mmctx_data(0x000730, 11)
nvd9_tpc_mmio_tail:
.section #nvc0_grgpc_code
......
......@@ -170,7 +170,7 @@ uint32_t nvc0_grgpc_data[] = {
0x4c000644,
0x00000698,
0x000006e0,
0x08000750,
0x28000730,
};
uint32_t nvc0_grgpc_code[] = {
......
......@@ -149,7 +149,7 @@ mmctx_data(0x4078bc, 1)
mmctx_data(0x408000, 7)
mmctx_data(0x408064, 1)
mmctx_data(0x408800, 3)
mmctx_data(0x408900, 4)
mmctx_data(0x408900, 3)
mmctx_data(0x408980, 1)
nvd9_hub_mmio_tail:
......
......@@ -129,7 +129,7 @@ uint32_t nvc0_grhub_data[] = {
0x18408000,
0x00408064,
0x08408800,
0x0c408900,
0x08408900,
0x00408980,
/* 0x01e4: nvd9_hub_mmio_tail */
0x00000000,
......
......@@ -716,6 +716,180 @@ nvc0_graph_init_regs(struct nvc0_graph_priv *priv)
nv_wr32(priv, 0x400124, 0x00000002);
}
static void
nvc0_graph_init_unk40xx(struct nvc0_graph_priv *priv)
{
nv_wr32(priv, 0x40415c, 0x00000000);
nv_wr32(priv, 0x404170, 0x00000000);
}
static void
nvc0_graph_init_unk44xx(struct nvc0_graph_priv *priv)
{
nv_wr32(priv, 0x404488, 0x00000000);
nv_wr32(priv, 0x40448c, 0x00000000);
}
static void
nvc0_graph_init_unk78xx(struct nvc0_graph_priv *priv)
{
nv_wr32(priv, 0x407808, 0x00000000);
}
static void
nvc0_graph_init_unk60xx(struct nvc0_graph_priv *priv)
{
nv_wr32(priv, 0x406024, 0x00000000);
}
static void
nvc0_graph_init_unk64xx(struct nvc0_graph_priv *priv)
{
nv_wr32(priv, 0x4064f0, 0x00000000);
nv_wr32(priv, 0x4064f4, 0x00000000);
nv_wr32(priv, 0x4064f8, 0x00000000);
}
static void
nvc0_graph_init_unk58xx(struct nvc0_graph_priv *priv)
{
nv_wr32(priv, 0x405844, 0x00ffffff);
nv_wr32(priv, 0x405850, 0x00000000);
nv_wr32(priv, 0x405900, 0x00002834);
nv_wr32(priv, 0x405908, 0x00000000);
nv_wr32(priv, 0x405928, 0x00000000);
nv_wr32(priv, 0x40592c, 0x00000000);
}
static void
nvc0_graph_init_unk80xx(struct nvc0_graph_priv *priv)
{
nv_wr32(priv, 0x40803c, 0x00000000);
}
static void
nvc0_graph_init_gpc(struct nvc0_graph_priv *priv)
{
nv_wr32(priv, 0x418408, 0x00000000);
nv_wr32(priv, 0x4184a0, 0x00000000);
nv_wr32(priv, 0x4184a4, 0x00000000);
nv_wr32(priv, 0x4184a8, 0x00000000);
nv_wr32(priv, 0x418604, 0x00000000);
nv_wr32(priv, 0x418680, 0x00000000);
nv_wr32(priv, 0x418714, 0x00000000);
nv_wr32(priv, 0x418384, 0x00000000);
nv_wr32(priv, 0x418814, 0x00000000);
nv_wr32(priv, 0x418818, 0x00000000);
nv_wr32(priv, 0x41881c, 0x00000000);
nv_wr32(priv, 0x418b04, 0x00000000);
nv_wr32(priv, 0x4188c8, 0x00000000);
nv_wr32(priv, 0x4188cc, 0x00000000);
nv_wr32(priv, 0x4188d0, 0x00010000);
nv_wr32(priv, 0x4188d4, 0x00000001);
nv_wr32(priv, 0x418910, 0x00010001);
nv_wr32(priv, 0x418914, 0x00000301);
nv_wr32(priv, 0x418918, 0x00800000);
nv_wr32(priv, 0x418980, 0x77777770);
nv_wr32(priv, 0x418984, 0x77777777);
nv_wr32(priv, 0x418988, 0x77777777);
nv_wr32(priv, 0x41898c, 0x77777777);
nv_wr32(priv, 0x418c04, 0x00000000);
nv_wr32(priv, 0x418c64, 0x00000000);
nv_wr32(priv, 0x418c68, 0x00000000);
nv_wr32(priv, 0x418c88, 0x00000000);
nv_wr32(priv, 0x418cb4, 0x00000000);
nv_wr32(priv, 0x418cb8, 0x00000000);
nv_wr32(priv, 0x418d00, 0x00000000);
nv_wr32(priv, 0x418d28, 0x00000000);
nv_wr32(priv, 0x418d2c, 0x00000000);
nv_wr32(priv, 0x418f00, 0x00000000);
nv_wr32(priv, 0x418f08, 0x00000000);
nv_wr32(priv, 0x418f20, 0x00000000);
nv_wr32(priv, 0x418f24, 0x00000000);
nv_wr32(priv, 0x418e00, 0x00000003);
nv_wr32(priv, 0x418e08, 0x00000000);
nv_wr32(priv, 0x418e1c, 0x00000000);
nv_wr32(priv, 0x418e20, 0x00000000);
nv_wr32(priv, 0x41900c, 0x00000000);
nv_wr32(priv, 0x419018, 0x00000000);
}
static void
nvc0_graph_init_tpc(struct nvc0_graph_priv *priv)
{
nv_wr32(priv, 0x419d08, 0x00000000);
nv_wr32(priv, 0x419d0c, 0x00000000);
nv_wr32(priv, 0x419d10, 0x00000014);
nv_wr32(priv, 0x419ab0, 0x00000000);
nv_wr32(priv, 0x419ac8, 0x00000000);
nv_wr32(priv, 0x419ab8, 0x000000e7);
nv_wr32(priv, 0x419abc, 0x00000000);
nv_wr32(priv, 0x419ac0, 0x00000000);
nv_wr32(priv, 0x419ab4, 0x00000000);
nv_wr32(priv, 0x41980c, 0x00000010);
nv_wr32(priv, 0x419810, 0x00000000);
nv_wr32(priv, 0x419814, 0x00000004);
nv_wr32(priv, 0x419844, 0x00000000);
nv_wr32(priv, 0x41984c, 0x0000a918);
nv_wr32(priv, 0x419850, 0x00000000);
nv_wr32(priv, 0x419854, 0x00000000);
nv_wr32(priv, 0x419858, 0x00000000);
nv_wr32(priv, 0x41985c, 0x00000000);
nv_wr32(priv, 0x419880, 0x00000002);
nv_wr32(priv, 0x419c98, 0x00000000);
nv_wr32(priv, 0x419ca8, 0x80000000);
nv_wr32(priv, 0x419cb4, 0x00000000);
nv_wr32(priv, 0x419cb8, 0x00008bf4);
nv_wr32(priv, 0x419cbc, 0x28137606);
nv_wr32(priv, 0x419cc0, 0x00000000);
nv_wr32(priv, 0x419cc4, 0x00000000);
nv_wr32(priv, 0x419bd4, 0x00800000);
nv_wr32(priv, 0x419bdc, 0x00000000);
nv_wr32(priv, 0x419bf8, 0x00000000);
nv_wr32(priv, 0x419bfc, 0x00000000);
nv_wr32(priv, 0x419d2c, 0x00000000);
nv_wr32(priv, 0x419d48, 0x00000000);
nv_wr32(priv, 0x419d4c, 0x00000000);
nv_wr32(priv, 0x419c0c, 0x00000000);
nv_wr32(priv, 0x419e00, 0x00000000);
nv_wr32(priv, 0x419ea0, 0x00000000);
nv_wr32(priv, 0x419ea4, 0x00000100);
nv_wr32(priv, 0x419ea8, 0x02001100);
nv_wr32(priv, 0x419eac, 0x11100702);
nv_wr32(priv, 0x419eb0, 0x00000003);
nv_wr32(priv, 0x419eb4, 0x00000000);
nv_wr32(priv, 0x419eb8, 0x00000000);
nv_wr32(priv, 0x419ebc, 0x00000000);
nv_wr32(priv, 0x419ec0, 0x00000000);
nv_wr32(priv, 0x419ec8, 0x0e063818);
nv_wr32(priv, 0x419ecc, 0x0e060e06);
nv_wr32(priv, 0x419ed0, 0x00003818);
nv_wr32(priv, 0x419ed4, 0x011104f1);
nv_wr32(priv, 0x419edc, 0x00000000);
nv_wr32(priv, 0x419f00, 0x00000000);
nv_wr32(priv, 0x419f2c, 0x00000000);
}
static void
nvc0_graph_init_unk88xx(struct nvc0_graph_priv *priv)
{
nv_wr32(priv, 0x40880c, 0x00000000);
nv_wr32(priv, 0x408910, 0x00000000);
nv_wr32(priv, 0x408914, 0x00000000);
nv_wr32(priv, 0x408918, 0x00000000);
nv_wr32(priv, 0x40891c, 0x00000000);
nv_wr32(priv, 0x408920, 0x00000000);
nv_wr32(priv, 0x408924, 0x00000000);
nv_wr32(priv, 0x408928, 0x00000000);
nv_wr32(priv, 0x40892c, 0x00000000);
nv_wr32(priv, 0x408930, 0x00000000);
nv_wr32(priv, 0x408950, 0x00000000);
nv_wr32(priv, 0x408954, 0x0000ffff);
nv_wr32(priv, 0x408984, 0x00000000);
nv_wr32(priv, 0x408988, 0x08040201);
nv_wr32(priv, 0x40898c, 0x80402010);
}
static void
nvc0_graph_init_gpc_0(struct nvc0_graph_priv *priv)
{
......@@ -957,7 +1131,25 @@ nvc0_graph_init(struct nouveau_object *object)
nvc0_graph_init_obj418880(priv);
nvc0_graph_init_regs(priv);
/*nvc0_graph_init_unitplemented_magics(priv);*/
switch (nv_device(priv)->chipset) {
case 0xd9:
case 0xd7:
nvc0_graph_init_unk40xx(priv);
nvc0_graph_init_unk44xx(priv);
nvc0_graph_init_unk78xx(priv);
nvc0_graph_init_unk60xx(priv);
nvc0_graph_init_unk64xx(priv);
nvc0_graph_init_unk58xx(priv);
nvc0_graph_init_unk80xx(priv);
nvc0_graph_init_gpc(priv);
nvc0_graph_init_tpc(priv);
nvc0_graph_init_unk88xx(priv);
break;
default:
break;
}
nvc0_graph_init_gpc_0(priv);
/*nvc0_graph_init_unitplemented_c242(priv);*/
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment