static void
nve0_graph_generate_unk40xx(struct nvc0_graph_priv *priv)
{
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ nv_wr32(priv, 0x404004, 0x00000000);
+ nv_wr32(priv, 0x404008, 0x00000000);
+ nv_wr32(priv, 0x40400c, 0x00000000);
+ break;
+ default:
+ break;
+ }
nv_wr32(priv, 0x404010, 0x0);
nv_wr32(priv, 0x404014, 0x0);
nv_wr32(priv, 0x404018, 0x0);
nv_wr32(priv, 0x404020, 0x0);
nv_wr32(priv, 0x404024, 0xe000);
nv_wr32(priv, 0x404028, 0x0);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ nv_wr32(priv, 0x40402c, 0x00000000);
+ nv_wr32(priv, 0x404030, 0x00000000);
+ nv_wr32(priv, 0x404034, 0x00000000);
+ nv_wr32(priv, 0x404038, 0x00000000);
+ nv_wr32(priv, 0x40403c, 0x00000000);
+ nv_wr32(priv, 0x404040, 0x00000000);
+ nv_wr32(priv, 0x404044, 0x00000000);
+ break;
+ default:
+ break;
+ }
nv_wr32(priv, 0x4040a8, 0x0);
nv_wr32(priv, 0x4040ac, 0x0);
nv_wr32(priv, 0x4040b0, 0x0);
nv_wr32(priv, 0x4040e4, 0x0);
nv_wr32(priv, 0x4040e8, 0x1000);
nv_wr32(priv, 0x4040f8, 0x0);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ nv_wr32(priv, 0x404100, 0x00000000);
+ nv_wr32(priv, 0x404104, 0x00000000);
+ nv_wr32(priv, 0x404108, 0x00000000);
+ nv_wr32(priv, 0x40410c, 0x00000000);
+ nv_wr32(priv, 0x404110, 0x00000000);
+ nv_wr32(priv, 0x404114, 0x00000000);
+ nv_wr32(priv, 0x404118, 0x00000000);
+ nv_wr32(priv, 0x40411c, 0x00000000);
+ nv_wr32(priv, 0x404120, 0x00000000);
+ nv_wr32(priv, 0x404124, 0x00000000);
+ break;
+ default:
+ break;
+ }
nv_wr32(priv, 0x404130, 0x0);
nv_wr32(priv, 0x404134, 0x0);
nv_wr32(priv, 0x404138, 0x20000040);
nv_wr32(priv, 0x404154, 0x400);
nv_wr32(priv, 0x404158, 0x200);
nv_wr32(priv, 0x404164, 0x55);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ nv_wr32(priv, 0x40417c, 0x00000000);
+ nv_wr32(priv, 0x404180, 0x00000000);
+ break;
+ default:
+ break;
+ }
nv_wr32(priv, 0x4041a0, 0x0);
nv_wr32(priv, 0x4041a4, 0x0);
nv_wr32(priv, 0x4041a8, 0x0);
nv_wr32(priv, 0x4041ac, 0x0);
- nv_wr32(priv, 0x404200, 0x0);
- nv_wr32(priv, 0x404204, 0x0);
- nv_wr32(priv, 0x404208, 0x0);
- nv_wr32(priv, 0x40420c, 0x0);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ nv_wr32(priv, 0x404200, 0xa197);
+ nv_wr32(priv, 0x404204, 0xa1c0);
+ nv_wr32(priv, 0x404208, 0xa140);
+ nv_wr32(priv, 0x40420c, 0x902d);
+ break;
+ default:
+ nv_wr32(priv, 0x404200, 0x0);
+ nv_wr32(priv, 0x404204, 0x0);
+ nv_wr32(priv, 0x404208, 0x0);
+ nv_wr32(priv, 0x40420c, 0x0);
+ break;
+ }
}
static void
nv_wr32(priv, 0x404428, 0x0);
nv_wr32(priv, 0x40442c, 0x0);
nv_wr32(priv, 0x404430, 0x0);
- nv_wr32(priv, 0x404434, 0x0);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ break;
+ default:
+ nv_wr32(priv, 0x404434, 0x0);
+ break;
+ }
nv_wr32(priv, 0x404438, 0x0);
nv_wr32(priv, 0x404460, 0x0);
nv_wr32(priv, 0x404464, 0x0);
{
nv_wr32(priv, 0x405b00, 0x0);
nv_wr32(priv, 0x405b10, 0x1000);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ nv_wr32(priv, 0x405b20, 0x04000000);
+ break;
+ default:
+ break;
+ }
}
static void
nve0_graph_generate_unk60xx(struct nvc0_graph_priv *priv)
{
- nv_wr32(priv, 0x406020, 0x4103c1);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ nv_wr32(priv, 0x406020, 0x34103c1);
+ break;
+ default:
+ nv_wr32(priv, 0x406020, 0x4103c1);
+ break;
+ }
nv_wr32(priv, 0x406028, 0x1);
nv_wr32(priv, 0x40602c, 0x1);
nv_wr32(priv, 0x406030, 0x1);
{
nv_wr32(priv, 0x4064a8, 0x0);
nv_wr32(priv, 0x4064ac, 0x3fff);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ nv_wr32(priv, 0x4064b0, 0x0);
+ break;
+ default:
+ break;
+ }
nv_wr32(priv, 0x4064b4, 0x0);
nv_wr32(priv, 0x4064b8, 0x0);
- nv_wr32(priv, 0x4064c0, 0x801a00f0);
- nv_wr32(priv, 0x4064c4, 0x192ffff);
- nv_wr32(priv, 0x4064c8, 0x1800600);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ nv_wr32(priv, 0x4064c0, 0x802000f0);
+ nv_wr32(priv, 0x4064c4, 0x192ffff);
+ nv_wr32(priv, 0x4064c8, 0x18007c0);
+ break;
+ default:
+ nv_wr32(priv, 0x4064c0, 0x801a00f0);
+ nv_wr32(priv, 0x4064c4, 0x192ffff);
+ nv_wr32(priv, 0x4064c8, 0x1800600);
+ break;
+ }
nv_wr32(priv, 0x4064cc, 0x0);
nv_wr32(priv, 0x4064d0, 0x0);
nv_wr32(priv, 0x4064d4, 0x0);
static void
nve0_graph_generate_unk70xx(struct nvc0_graph_priv *priv)
{
- nv_wr32(priv, 0x407040, 0x0);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ break;
+ default:
+ nv_wr32(priv, 0x407040, 0x0);
+ break;
+ }
}
static void
static void
nve0_graph_generate_unk88xx(struct nvc0_graph_priv *priv)
{
- nv_wr32(priv, 0x408800, 0x2802a3c);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ nv_wr32(priv, 0x408800, 0x12802a3c);
+ break;
+ default:
+ nv_wr32(priv, 0x408800, 0x2802a3c);
+ break;
+ }
nv_wr32(priv, 0x408804, 0x40);
- nv_wr32(priv, 0x408808, 0x1043e005);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ nv_wr32(priv, 0x408808, 0x1003e005);
+ break;
+ default:
+ nv_wr32(priv, 0x408808, 0x1043e005);
+ break;
+ }
nv_wr32(priv, 0x408840, 0xb);
nv_wr32(priv, 0x408900, 0x3080b801);
nv_wr32(priv, 0x408904, 0x62000001);
nv_wr32(priv, 0x418710, 0x0);
nv_wr32(priv, 0x418800, 0x7006860a);
nv_wr32(priv, 0x418808, 0x0);
- nv_wr32(priv, 0x41880c, 0x0);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ nv_wr32(priv, 0x41880c, 0x30);
+ break;
+ default:
+ nv_wr32(priv, 0x41880c, 0x0);
+ break;
+ }
nv_wr32(priv, 0x418810, 0x0);
nv_wr32(priv, 0x418828, 0x44);
nv_wr32(priv, 0x418830, 0x10000001);
nv_wr32(priv, 0x418c6c, 0x1);
nv_wr32(priv, 0x418c80, 0x20200004);
nv_wr32(priv, 0x418c8c, 0x1);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ nv_wr32(priv, 0x418d24, 0x0);
+ break;
+ default:
+ break;
+ }
nv_wr32(priv, 0x419000, 0x780);
nv_wr32(priv, 0x419004, 0x0);
nv_wr32(priv, 0x419008, 0x0);
nv_wr32(priv, 0x419a10, 0x0);
nv_wr32(priv, 0x419a14, 0x200);
nv_wr32(priv, 0x419a1c, 0xc000);
- nv_wr32(priv, 0x419a20, 0x800);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ nv_wr32(priv, 0x419a20, 0x20800);
+ break;
+ default:
+ nv_wr32(priv, 0x419a20, 0x800);
+ break;
+ }
nv_wr32(priv, 0x419a30, 0x1);
nv_wr32(priv, 0x419ac4, 0x37f440);
- nv_wr32(priv, 0x419c00, 0xa);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ nv_wr32(priv, 0x419c00, 0x1a);
+ break;
+ default:
+ nv_wr32(priv, 0x419c00, 0xa);
+ break;
+ }
nv_wr32(priv, 0x419c04, 0x80000006);
nv_wr32(priv, 0x419c08, 0x2);
nv_wr32(priv, 0x419c20, 0x0);
nv_wr32(priv, 0x419c24, 0x84210);
nv_wr32(priv, 0x419c28, 0x3efbefbe);
nv_wr32(priv, 0x419ce8, 0x0);
- nv_wr32(priv, 0x419cf4, 0x3203);
- nv_wr32(priv, 0x419e04, 0x0);
- nv_wr32(priv, 0x419e08, 0x0);
- nv_wr32(priv, 0x419e0c, 0x0);
- nv_wr32(priv, 0x419e10, 0x402);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ nv_wr32(priv, 0x419cf4, 0x203);
+ nv_wr32(priv, 0x419e04, 0x0);
+ nv_wr32(priv, 0x419e08, 0x1d);
+ nv_wr32(priv, 0x419e0c, 0x0);
+ nv_wr32(priv, 0x419e10, 0x1c02);
+
+ break;
+ default:
+ nv_wr32(priv, 0x419cf4, 0x3203);
+ nv_wr32(priv, 0x419e04, 0x0);
+ nv_wr32(priv, 0x419e08, 0x0);
+ nv_wr32(priv, 0x419e0c, 0x0);
+ nv_wr32(priv, 0x419e10, 0x402);
+ break;
+ }
nv_wr32(priv, 0x419e44, 0x13eff2);
nv_wr32(priv, 0x419e48, 0x0);
nv_wr32(priv, 0x419e4c, 0x7f);
nv_wr32(priv, 0x419e50, 0x0);
nv_wr32(priv, 0x419e54, 0x0);
- nv_wr32(priv, 0x419e58, 0x0);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ nv_wr32(priv, 0x419e58, 0x1);
+ break;
+ default:
+ nv_wr32(priv, 0x419e58, 0x0);
+ break;
+ }
nv_wr32(priv, 0x419e5c, 0x0);
nv_wr32(priv, 0x419e60, 0x0);
nv_wr32(priv, 0x419e64, 0x0);
- nv_wr32(priv, 0x419e68, 0x0);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ nv_wr32(priv, 0x419e68, 0x2);
+ break;
+ default:
+ nv_wr32(priv, 0x419e68, 0x0);
+ break;
+ }
nv_wr32(priv, 0x419e6c, 0x0);
nv_wr32(priv, 0x419e70, 0x0);
nv_wr32(priv, 0x419e74, 0x0);
case 0xe7:
case 0xe6:
nv_wr32(priv, 0x419eac, 0x1f8f);
+ nv_wr32(priv, 0x419eb0, 0xd3f);
+ break;
+ case 0xf0:
+ nv_wr32(priv, 0x419eac, 0x1fcf);
+ nv_wr32(priv, 0x419eb0, 0xdb00da0);
+ nv_wr32(priv, 0x419eb8, 0x0);
break;
default:
nv_wr32(priv, 0x419eac, 0x1fcf);
+ nv_wr32(priv, 0x419eb0, 0xd3f);
break;
}
- nv_wr32(priv, 0x419eb0, 0xd3f);
nv_wr32(priv, 0x419ec8, 0x1304f);
nv_wr32(priv, 0x419f30, 0x0);
nv_wr32(priv, 0x419f34, 0x0);
nv_wr32(priv, 0x419f38, 0x0);
nv_wr32(priv, 0x419f3c, 0x0);
- nv_wr32(priv, 0x419f40, 0x0);
- nv_wr32(priv, 0x419f44, 0x0);
- nv_wr32(priv, 0x419f48, 0x0);
- nv_wr32(priv, 0x419f4c, 0x0);
- nv_wr32(priv, 0x419f58, 0x0);
switch (nv_device(priv)->chipset) {
- case 0xe7:
- case 0xe6:
- nv_wr32(priv, 0x419f70, 0x0);
+ case 0xf0:
+ nv_wr32(priv, 0x419f40, 0x18);
break;
default:
+ nv_wr32(priv, 0x419f40, 0x0);
break;
}
- nv_wr32(priv, 0x419f78, 0xb);
+ nv_wr32(priv, 0x419f44, 0x0);
+ nv_wr32(priv, 0x419f48, 0x0);
+ nv_wr32(priv, 0x419f4c, 0x0);
+ nv_wr32(priv, 0x419f58, 0x0);
switch (nv_device(priv)->chipset) {
case 0xe7:
case 0xe6:
+ nv_wr32(priv, 0x419f70, 0x0);
+ nv_wr32(priv, 0x419f78, 0xb);
nv_wr32(priv, 0x419f7c, 0x27a);
break;
+ case 0xf0:
+ nv_wr32(priv, 0x419f70, 0x7300);
+ nv_wr32(priv, 0x419f78, 0xeb);
+ nv_wr32(priv, 0x419f7c, 0x404);
+ break;
default:
+ nv_wr32(priv, 0x419f78, 0xb);
break;
}
}
nve0_graph_generate_tpcunk(struct nvc0_graph_priv *priv)
{
nv_wr32(priv, 0x41be24, 0x6);
- nv_wr32(priv, 0x41bec0, 0x12180000);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ nv_wr32(priv, 0x41bec0, 0x10000000);
+ break;
+ default:
+ nv_wr32(priv, 0x41bec0, 0x12180000);
+ break;
+ }
nv_wr32(priv, 0x41bec4, 0x37f7f);
- nv_wr32(priv, 0x41bee4, 0x6480430);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ nv_wr32(priv, 0x41bee4, 0x0);
+ break;
+ default:
+ nv_wr32(priv, 0x41bee4, 0x6480430);
+ break;
+ }
nv_wr32(priv, 0x41bf00, 0xa418820);
nv_wr32(priv, 0x41bf04, 0x62080e6);
nv_wr32(priv, 0x41bf08, 0x20398a4);
{
nv_wr32(priv, 0x40415c, 0x00000000);
nv_wr32(priv, 0x404170, 0x00000000);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ nv_wr32(priv, 0x4041b4, 0x00000000);
+ break;
+ default:
+ break;
+ }
}
static void
{
nv_wr32(priv, 0x405844, 0x00ffffff);
nv_wr32(priv, 0x405850, 0x00000000);
- nv_wr32(priv, 0x405900, 0x0000ff34);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ nv_wr32(priv, 0x405900, 0x0000ff00);
+ break;
+ default:
+ nv_wr32(priv, 0x405900, 0x0000ff34);
+ break;
+ }
nv_wr32(priv, 0x405908, 0x00000000);
nv_wr32(priv, 0x405928, 0x00000000);
nv_wr32(priv, 0x40592c, 0x00000000);
nve0_graph_init_unk70xx(struct nvc0_graph_priv *priv)
{
nv_wr32(priv, 0x407010, 0x00000000);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ nv_wr32(priv, 0x407040, 0x80440424);
+ nv_wr32(priv, 0x407048, 0x0000000a);
+ break;
+ default:
+ break;
+ }
}
static void
nve0_graph_init_unk5bxx(struct nvc0_graph_priv *priv)
{
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ nv_wr32(priv, 0x505b44, 0x00000000);
+ break;
+ default:
+ break;
+ }
nv_wr32(priv, 0x405b50, 0x00000000);
}
nv_wr32(priv, 0x418d00, 0x00000000);
nv_wr32(priv, 0x418d28, 0x00000000);
nv_wr32(priv, 0x418d2c, 0x00000000);
- nv_wr32(priv, 0x418f00, 0x00000000);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ nv_wr32(priv, 0x418f00, 0x00000400);
+ break;
+ default:
+ nv_wr32(priv, 0x418f00, 0x00000000);
+ break;
+ }
nv_wr32(priv, 0x418f08, 0x00000000);
nv_wr32(priv, 0x418f20, 0x00000000);
nv_wr32(priv, 0x418f24, 0x00000000);
- nv_wr32(priv, 0x418e00, 0x00000060);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ nv_wr32(priv, 0x418e00, 0x00000000);
+ break;
+ default:
+ nv_wr32(priv, 0x418e00, 0x00000060);
+ break;
+ }
nv_wr32(priv, 0x418e08, 0x00000000);
nv_wr32(priv, 0x418e1c, 0x00000000);
nv_wr32(priv, 0x418e20, 0x00000000);
nv_wr32(priv, 0x419ab0, 0x00000000);
nv_wr32(priv, 0x419ac8, 0x00000000);
nv_wr32(priv, 0x419ab8, 0x000000e7);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ nv_wr32(priv, 0x419aec, 0x00000000);
+ break;
+ default:
+ break;
+ }
nv_wr32(priv, 0x419abc, 0x00000000);
nv_wr32(priv, 0x419ac0, 0x00000000);
nv_wr32(priv, 0x419ab4, 0x00000000);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ nv_wr32(priv, 0x419aa8, 0x00000000);
+ nv_wr32(priv, 0x419aac, 0x00000000);
+ break;
+ default:
+ break;
+ }
nv_wr32(priv, 0x41980c, 0x00000010);
nv_wr32(priv, 0x419844, 0x00000000);
nv_wr32(priv, 0x419850, 0x00000004);
nv_wr32(priv, 0x419cb4, 0x00000000);
nv_wr32(priv, 0x419cb8, 0x00b08bea);
nv_wr32(priv, 0x419c84, 0x00010384);
- nv_wr32(priv, 0x419cbc, 0x28137646);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ nv_wr32(priv, 0x419cbc, 0x281b3646);
+ break;
+ default:
+ nv_wr32(priv, 0x419cbc, 0x28137646);
+ break;
+ }
nv_wr32(priv, 0x419cc0, 0x00000000);
nv_wr32(priv, 0x419cc4, 0x00000000);
- nv_wr32(priv, 0x419c80, 0x00020232);
- nv_wr32(priv, 0x419c0c, 0x00000000);
- nv_wr32(priv, 0x419e00, 0x00000000);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ nv_wr32(priv, 0x419c80, 0x00020230);
+ nv_wr32(priv, 0x419ccc, 0x00000000);
+ nv_wr32(priv, 0x419cd0, 0x00000000);
+ nv_wr32(priv, 0x419c0c, 0x00000000);
+ nv_wr32(priv, 0x419e00, 0x00000080);
+ break;
+ default:
+ nv_wr32(priv, 0x419c80, 0x00020232);
+ nv_wr32(priv, 0x419c0c, 0x00000000);
+ nv_wr32(priv, 0x419e00, 0x00000000);
+ break;
+ }
nv_wr32(priv, 0x419ea0, 0x00000000);
nv_wr32(priv, 0x419ee4, 0x00000000);
nv_wr32(priv, 0x419ea4, 0x00000100);
nv_wr32(priv, 0x419ea8, 0x00000000);
nv_wr32(priv, 0x419eb4, 0x00000000);
- nv_wr32(priv, 0x419eb8, 0x00000000);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ break;
+ default:
+ nv_wr32(priv, 0x419eb8, 0x00000000);
+ break;
+ }
nv_wr32(priv, 0x419ebc, 0x00000000);
nv_wr32(priv, 0x419ec0, 0x00000000);
nv_wr32(priv, 0x419edc, 0x00000000);
nv_wr32(priv, 0x419f00, 0x00000000);
- nv_wr32(priv, 0x419f74, 0x00000555);
+ switch (nv_device(priv)->chipset) {
+ case 0xf0:
+ nv_wr32(priv, 0x419ed0, 0x00003234);
+ nv_wr32(priv, 0x419f74, 0x00015555);
+ nv_wr32(priv, 0x419f80, 0x00000000);
+ nv_wr32(priv, 0x419f84, 0x00000000);
+ nv_wr32(priv, 0x419f88, 0x00000000);
+ nv_wr32(priv, 0x419f8c, 0x00000000);
+ break;
+ default:
+ nv_wr32(priv, 0x419f74, 0x00000555);
+ break;
+ }
}
static void
switch (nv_device(priv)->chipset) {
case 0xe7:
case 0xe6:
+ case 0xf0:
nv_wr32(priv, 0x407020, 0x40000000);
break;
default:
switch (nv_device(priv)->chipset) {
case 0xe7:
case 0xe6:
+ case 0xf0:
nve0_graph_init_unk40xx(priv);
nve0_graph_init_unk44xx(priv);
nve0_graph_init_unk78xx(priv);