nv_mthd(priv, 0x9097, 0x1450, 0x00300008);
nv_mthd(priv, 0x9097, 0x1454, 0x04000080);
nv_mthd(priv, 0x9097, 0x0214, 0x00000000);
-
- switch (nv_device(priv)->chipset) {
- case 0xc0:
- case 0xc3:
- case 0xc4:
- case 0xc1:
- case 0xc8:
- case 0xd9:
- case 0xd7:
- break;
- default:
- /* in trace, right after 0x90c0, not here */
- nv_mthd(priv, 0x9097, 0x3410, 0x80002006);
- break;
- }
}
static void
case 0xc4:
case 0xc1:
case 0xc8:
+ case 0xce:
+ case 0xcf:
+ break;
default:
+ BUG_ON(1);
break;
}
nv_wr32(priv, 0x404044, 0x00000000);
nv_wr32(priv, 0x4040c0, 0x00000000);
nv_wr32(priv, 0x4040c4, 0x00000000);
nv_wr32(priv, 0x4040c8, 0xf0000087);
- switch (nv_device(priv)->chipset) {
- case 0xc0:
- case 0xc3:
- case 0xc4:
- case 0xc1:
- case 0xc8:
- case 0xd9:
- case 0xd7:
- nv_wr32(priv, 0x4040d0, 0x00000000);
- break;
- default:
- break;
- }
+ nv_wr32(priv, 0x4040d0, 0x00000000);
nv_wr32(priv, 0x4040d4, 0x00000000);
nv_wr32(priv, 0x4040d8, 0x00000000);
nv_wr32(priv, 0x4040dc, 0x00000000);
case 0xc4:
case 0xc1:
case 0xc8:
- default:
+ case 0xce:
+ case 0xcf:
nv_wr32(priv, 0x404174, 0x00000000);
break;
+ default:
+ BUG_ON(1);
+ break;
}
nv_wr32(priv, 0x404178, 0x00000000);
nv_wr32(priv, 0x40417c, 0x00000000);
case 0xc3:
case 0xc4:
case 0xc8:
- default:
+ case 0xce:
+ case 0xcf:
nv_wr32(priv, 0x405800, 0x078000bf);
nv_wr32(priv, 0x405830, 0x02180000);
nv_wr32(priv, 0x405834, 0x00000000);
break;
+ default:
+ BUG_ON(1);
+ break;
}
nv_wr32(priv, 0x405838, 0x00000000);
nv_wr32(priv, 0x405854, 0x00000000);
case 0xd9:
case 0xd7:
nv_wr32(priv, 0x4064bc, 0x00000000);
- break;
- case 0xc0:
- case 0xc3:
- case 0xc4:
- case 0xc1:
- case 0xc8:
- default:
- break;
- }
- switch (nv_device(priv)->chipset) {
- case 0xc1:
- case 0xd9:
- case 0xd7:
nv_wr32(priv, 0x4064c0, 0x80140078);
nv_wr32(priv, 0x4064c4, 0x0086ffff);
break;
case 0xc0:
case 0xc3:
case 0xc4:
+ case 0xc1:
case 0xc8:
+ case 0xce:
+ case 0xcf:
+ break;
default:
+ BUG_ON(1);
break;
}
}
case 0xc3:
case 0xc4:
case 0xc8:
+ case 0xce:
+ case 0xcf:
nv_wr32(priv, 0x408808, 0x0003e00d);
nv_wr32(priv, 0x408900, 0x3080b801);
nv_wr32(priv, 0x408904, 0x02000001);
nv_wr32(priv, 0x408908, 0x00c8102f);
break;
default:
- nv_wr32(priv, 0x408808, 0x0003e00d);
- nv_wr32(priv, 0x408900, 0x3080b801);
- nv_wr32(priv, 0x408904, 0x02000001);
- nv_wr32(priv, 0x408908, 0x00c80929);
- nv_wr32(priv, 0x40890c, 0x00000000);
+ BUG_ON(1);
break;
}
nv_wr32(priv, 0x408980, 0x0000011d);
case 0xc4:
case 0xc1:
case 0xc8:
- default:
+ case 0xce:
+ case 0xcf:
nv_wr32(priv, 0x418408, 0x00000000);
break;
+ default:
+ BUG_ON(1);
+ break;
}
nv_wr32(priv, 0x41840c, 0x00001008);
nv_wr32(priv, 0x418410, 0x0fff0fff);
case 0xc4:
case 0xc1:
case 0xc8:
- default:
+ case 0xce:
+ case 0xcf:
nv_wr32(priv, 0x418414, 0x00200fff);
break;
+ default:
+ BUG_ON(1);
+ break;
}
nv_wr32(priv, 0x418450, 0x00000000);
nv_wr32(priv, 0x418454, 0x00000000);
case 0xc4:
case 0xc1:
case 0xc8:
- default:
+ case 0xce:
+ case 0xcf:
nv_wr32(priv, 0x41870c, 0x07c80000);
break;
+ default:
+ BUG_ON(1);
+ break;
}
nv_wr32(priv, 0x418710, 0x00000000);
switch (nv_device(priv)->chipset) {
case 0xc4:
case 0xc1:
case 0xc8:
- default:
+ case 0xce:
+ case 0xcf:
nv_wr32(priv, 0x418800, 0x0006860a);
break;
+ default:
+ BUG_ON(1);
+ break;
}
nv_wr32(priv, 0x418808, 0x00000000);
nv_wr32(priv, 0x41880c, 0x00000000);
case 0xc3:
case 0xc4:
case 0xc8:
- default:
+ case 0xce:
+ case 0xcf:
nv_wr32(priv, 0x418830, 0x00000001);
break;
+ default:
+ BUG_ON(1);
+ break;
}
nv_wr32(priv, 0x4188d8, 0x00000008);
nv_wr32(priv, 0x4188e0, 0x01000000);
case 0xc3:
case 0xc4:
case 0xc8:
- default:
+ case 0xce:
+ case 0xcf:
nv_wr32(priv, 0x4188fc, 0x00100000);
break;
+ default:
+ BUG_ON(1);
+ break;
}
nv_wr32(priv, 0x41891c, 0x00ff00ff);
nv_wr32(priv, 0x418924, 0x00000000);
case 0xc4:
case 0xc1:
case 0xc8:
- default:
+ case 0xce:
+ case 0xcf:
nv_wr32(priv, 0x418b00, 0x00000000);
break;
+ default:
+ BUG_ON(1);
+ break;
}
nv_wr32(priv, 0x418b08, 0x0a418820);
nv_wr32(priv, 0x418b0c, 0x062080e6);
case 0xc3:
case 0xc4:
case 0xc8:
+ case 0xce:
+ case 0xcf:
+ break;
default:
+ BUG_ON(1);
break;
}
nv_wr32(priv, 0x418c80, 0x20200004);
case 0xc3:
case 0xc4:
case 0xc8:
- default:
+ case 0xce:
+ case 0xcf:
nv_wr32(priv, 0x419864, 0x0000012a);
break;
+ default:
+ BUG_ON(1);
+ break;
}
nv_wr32(priv, 0x419888, 0x00000000);
nv_wr32(priv, 0x419a00, 0x000001f0);
case 0xc4:
case 0xc1:
case 0xc8:
- default:
+ case 0xce:
+ case 0xcf:
+ case 0xd9:
+ case 0xd7:
nv_wr32(priv, 0x419a1c, 0x00000000);
nv_wr32(priv, 0x419a20, 0x00000800);
break;
+ default:
+ BUG_ON(1);
+ break;
}
switch (nv_device(priv)->chipset) {
case 0xc0:
case 0xc3:
case 0xc4:
case 0xc1:
- default:
+ case 0xce:
+ case 0xcf:
nv_wr32(priv, 0x00419ac4, 0x0007f440);
break;
+ default:
+ BUG_ON(1);
+ break;
}
nv_wr32(priv, 0x419b00, 0x0a418820);
nv_wr32(priv, 0x419b04, 0x062080e6);
case 0xc3:
case 0xc4:
case 0xc8:
- default:
+ case 0xce:
+ case 0xcf:
nv_wr32(priv, 0x419be0, 0x00000001);
break;
+ default:
+ BUG_ON(1);
+ break;
}
nv_wr32(priv, 0x419be4, 0x00000000);
switch (nv_device(priv)->chipset) {
case 0xc4:
case 0xc1:
case 0xc8:
- default:
+ case 0xce:
+ case 0xcf:
nv_wr32(priv, 0x419c00, 0x00000002);
break;
+ default:
+ BUG_ON(1);
+ break;
}
nv_wr32(priv, 0x419c04, 0x00000006);
nv_wr32(priv, 0x419c08, 0x00000002);
break;
case 0xc0:
case 0xc8:
- default:
nv_wr32(priv, 0x419cb0, 0x00060048);
break;
+ default:
+ BUG_ON(1);
+ break;
}
nv_wr32(priv, 0x419ce8, 0x00000000);
nv_wr32(priv, 0x419cf4, 0x00000183);
case 0xc3:
case 0xc4:
case 0xc8:
- default:
+ case 0xce:
+ case 0xcf:
nv_wr32(priv, 0x419d20, 0x02180000);
break;
+ default:
+ BUG_ON(1);
+ break;
}
nv_wr32(priv, 0x419d24, 0x00001fff);
switch (nv_device(priv)->chipset) {
case 0xc3:
case 0xc4:
case 0xc8:
+ case 0xce:
+ case 0xcf:
+ break;
default:
+ BUG_ON(1);
break;
}
nv_wr32(priv, 0x419e04, 0x00000000);
case 0xc3:
case 0xc4:
case 0xc1:
- default:
+ case 0xce:
+ case 0xcf:
nv_wr32(priv, 0x419ee0, 0x00011110);
break;
+ default:
+ BUG_ON(1);
+ break;
}
switch (nv_device(priv)->chipset) {
case 0xc0:
case 0xc3:
case 0xc4:
case 0xc1:
+ case 0xce:
+ case 0xcf:
case 0xd9:
case 0xd7:
nv_wr32(priv, 0x419f30, 0x00000000);
nv_wr32(priv, 0x419f54, 0x00000000);
nv_wr32(priv, 0x419f58, 0x00000000);
break;
+ break;
default:
- nv_wr32(priv, 0x419f50, 0x00000000);
- nv_wr32(priv, 0x419f54, 0x00000000);
- nv_wr32(priv, 0x419f58, 0x00000000);
+ BUG_ON(1);
break;
}
}
}
}
break;
- default:
+ break;
+ case 0xc0:
+ case 0xc3:
+ case 0xc4:
+ case 0xc8:
+ case 0xce:
+ case 0xcf:
tmp = 0x02180000;
mmio_list(0x405830, tmp, 0, 0);
for (gpc = 0; gpc < priv->gpc_nr; gpc++) {
}
}
break;
+ default:
+ BUG_ON(1);
+ break;
}
for (tpc = 0, id = 0; tpc < 4; tpc++) {
case 0xc4:
case 0xc1:
case 0xc8:
+ case 0xce:
+ case 0xcf:
+ break;
default:
+ BUG_ON(1);
break;
}
nv_icmd(priv, 0x00000218, 0x0000c080);
case 0xc4:
case 0xc1:
case 0xc8:
+ case 0xce:
+ case 0xcf:
break;
default:
+ BUG_ON(1);
break;
}
nv_icmd(priv, 0x000000ad, 0x0000013e);
case 0xc0:
case 0xc3:
case 0xc4:
+ case 0xce:
+ case 0xcf:
+ break;
default:
+ BUG_ON(1);
break;
}
nv_icmd(priv, 0x00000586, 0x00000040);
case 0xc3:
case 0xc4:
case 0xc1:
+ case 0xce:
+ case 0xcf:
+ break;
default:
+ BUG_ON(1);
break;
}
nv_icmd(priv, 0x00000683, 0x00000006);
case 0xc4:
case 0xc1:
case 0xc8:
+ case 0xce:
+ case 0xcf:
nv_mthd(priv, 0x902d, 0x3410, 0x00000000);
break;
case 0xd9:
nv_mthd(priv, 0x902d, 0x3410, 0x80002006);
break;
default:
+ BUG_ON(1);
break;
}
// chipset descriptions
chipsets:
.b8 0xc0 0 0 0
-.b16 #nnvc0_gpc_mmio_head
-.b16 #nnvc0_gpc_mmio_tail
-.b16 #nnvc0_tpc_mmio_head
-.b16 #nnvc0_tpc_mmio_tail
+.b16 #nvc0_gpc_mmio_head
+.b16 #nvc0_gpc_mmio_tail
+.b16 #nvc0_tpc_mmio_head
+.b16 #nvc0_tpc_mmio_tail
.b8 0xc1 0 0 0
-.b16 #nnvc0_gpc_mmio_head
-.b16 #nnvc1_gpc_mmio_tail
-.b16 #nnvc3_tpc_mmio_head
-.b16 #nnvc1_tpc_mmio_tail
+.b16 #nvc0_gpc_mmio_head
+.b16 #nvc1_gpc_mmio_tail
+.b16 #nvc0_tpc_mmio_head
+.b16 #nvc1_tpc_mmio_tail
.b8 0xc3 0 0 0
-.b16 #nnvc0_gpc_mmio_head
-.b16 #nnvc0_gpc_mmio_tail
-.b16 #nnvc3_tpc_mmio_head
-.b16 #nnvc3_tpc_mmio_tail
+.b16 #nvc0_gpc_mmio_head
+.b16 #nvc0_gpc_mmio_tail
+.b16 #nvc0_tpc_mmio_head
+.b16 #nvc3_tpc_mmio_tail
.b8 0xc4 0 0 0
-.b16 #nnvc0_gpc_mmio_head
-.b16 #nnvc0_gpc_mmio_tail
-.b16 #nnvc3_tpc_mmio_head
-.b16 #nnvc3_tpc_mmio_tail
+.b16 #nvc0_gpc_mmio_head
+.b16 #nvc0_gpc_mmio_tail
+.b16 #nvc0_tpc_mmio_head
+.b16 #nvc3_tpc_mmio_tail
.b8 0xc8 0 0 0
-.b16 #nnvc0_gpc_mmio_head
-.b16 #nnvc0_gpc_mmio_tail
-.b16 #nnvc0_tpc_mmio_head
-.b16 #nnvc0_tpc_mmio_tail
+.b16 #nvc0_gpc_mmio_head
+.b16 #nvc0_gpc_mmio_tail
+.b16 #nvc0_tpc_mmio_head
+.b16 #nvc0_tpc_mmio_tail
.b8 0xce 0 0 0
.b16 #nvc0_gpc_mmio_head
.b16 #nvc0_gpc_mmio_tail
.b16 #nvc0_gpc_mmio_head
.b16 #nvc0_gpc_mmio_tail
.b16 #nvc0_tpc_mmio_head
-.b16 #nvcf_tpc_mmio_tail
+.b16 #nvc3_tpc_mmio_tail
.b8 0xd9 0 0 0
.b16 #nvd9_gpc_mmio_head
-.b16 #nvd9_gpc_mmio_tail
-.b16 #nvd9_tpc_mmio_head
+.b16 #nvc1_gpc_mmio_tail
+.b16 #nvc0_tpc_mmio_head
.b16 #nvd9_tpc_mmio_tail
.b8 0xd7 0 0 0
.b16 #nvd9_gpc_mmio_head
-.b16 #nvd9_gpc_mmio_tail
-.b16 #nvd9_tpc_mmio_head
+.b16 #nvc1_gpc_mmio_tail
+.b16 #nvc0_tpc_mmio_head
.b16 #nvd9_tpc_mmio_tail
.b8 0 0 0 0
// GPC mmio lists
nvc0_gpc_mmio_head:
+mmctx_data(0x000408, 1)
+nvd9_gpc_mmio_head:
mmctx_data(0x000380, 1)
-mmctx_data(0x000400, 6)
+mmctx_data(0x000400, 2);
+mmctx_data(0x00040c, 3);
mmctx_data(0x000450, 9)
mmctx_data(0x000600, 1)
mmctx_data(0x000684, 1)
mmctx_data(0x001000, 3)
mmctx_data(0x001014, 1)
nvc0_gpc_mmio_tail:
-
-nnvc0_gpc_mmio_head:
-mmctx_data(0x000380, 1)
-mmctx_data(0x000400, 6)
-mmctx_data(0x000450, 9)
-mmctx_data(0x000600, 1)
-mmctx_data(0x000684, 1)
-mmctx_data(0x000700, 5)
-mmctx_data(0x000800, 1)
-mmctx_data(0x000808, 3)
-mmctx_data(0x000828, 1)
-mmctx_data(0x000830, 1)
-mmctx_data(0x0008d8, 1)
-mmctx_data(0x0008e0, 1)
-mmctx_data(0x0008e8, 6)
-mmctx_data(0x00091c, 1)
-mmctx_data(0x000924, 3)
-mmctx_data(0x000b00, 1)
-mmctx_data(0x000b08, 6)
-mmctx_data(0x000bb8, 1)
-mmctx_data(0x000c08, 1)
-mmctx_data(0x000c10, 8)
-mmctx_data(0x000c80, 1)
-mmctx_data(0x000c8c, 1)
-mmctx_data(0x001000, 3)
-mmctx_data(0x001014, 1)
-nnvc0_gpc_mmio_tail:
mmctx_data(0x000c6c, 1);
-nnvc1_gpc_mmio_tail:
-
-nvd9_gpc_mmio_head:
-mmctx_data(0x000380, 1)
-mmctx_data(0x000400, 2)
-mmctx_data(0x00040c, 3)
-mmctx_data(0x000450, 9)
-mmctx_data(0x000600, 1)
-mmctx_data(0x000684, 1)
-mmctx_data(0x000700, 5)
-mmctx_data(0x000800, 1)
-mmctx_data(0x000808, 3)
-mmctx_data(0x000828, 1)
-mmctx_data(0x000830, 1)
-mmctx_data(0x0008d8, 1)
-mmctx_data(0x0008e0, 1)
-mmctx_data(0x0008e8, 6)
-mmctx_data(0x00091c, 1)
-mmctx_data(0x000924, 3)
-mmctx_data(0x000b00, 1)
-mmctx_data(0x000b08, 6)
-mmctx_data(0x000bb8, 1)
-mmctx_data(0x000c08, 1)
-mmctx_data(0x000c10, 8)
-mmctx_data(0x000c6c, 1)
-mmctx_data(0x000c80, 1)
-mmctx_data(0x000c8c, 1)
-mmctx_data(0x001000, 3)
-mmctx_data(0x001014, 1)
-nvd9_gpc_mmio_tail:
+nvc1_gpc_mmio_tail:
// TPC mmio lists
nvc0_tpc_mmio_head:
mmctx_data(0x000064, 1)
mmctx_data(0x000088, 1)
mmctx_data(0x000200, 6)
-mmctx_data(0x00021c, 2)
mmctx_data(0x000300, 6)
mmctx_data(0x0003d0, 1)
mmctx_data(0x0003e0, 2)
mmctx_data(0x000698, 1)
mmctx_data(0x000750, 2)
nvc0_tpc_mmio_tail:
-mmctx_data(0x000758, 1)
-mmctx_data(0x0002c4, 1)
-mmctx_data(0x0006e0, 1)
-nvcf_tpc_mmio_tail:
-mmctx_data(0x0004bc, 1)
-nvc3_tpc_mmio_tail:
-
-nnvc0_tpc_mmio_head:
-mmctx_data(0x000018, 1)
-mmctx_data(0x00003c, 1)
-mmctx_data(0x000048, 1)
-mmctx_data(0x000064, 1)
-mmctx_data(0x000088, 1)
-mmctx_data(0x000200, 6)
-mmctx_data(0x000300, 6)
-mmctx_data(0x0003d0, 1)
-mmctx_data(0x0003e0, 2)
-mmctx_data(0x000400, 3)
-mmctx_data(0x000420, 1)
-mmctx_data(0x0004b0, 1)
-mmctx_data(0x0004e8, 1)
-mmctx_data(0x0004f4, 1)
-mmctx_data(0x000520, 2)
-mmctx_data(0x000604, 4)
-mmctx_data(0x000644, 20)
-mmctx_data(0x000698, 1)
-mmctx_data(0x000750, 2)
-nnvc0_tpc_mmio_tail:
-
-nnvc3_tpc_mmio_head:
-mmctx_data(0x000018, 1)
-mmctx_data(0x00003c, 1)
-mmctx_data(0x000048, 1)
-mmctx_data(0x000064, 1)
-mmctx_data(0x000088, 1)
-mmctx_data(0x000200, 6)
mmctx_data(0x00021c, 2)
mmctx_data(0x0002c4, 1)
-mmctx_data(0x000300, 6)
-mmctx_data(0x0003d0, 1)
-mmctx_data(0x0003e0, 2)
-mmctx_data(0x000400, 3)
-mmctx_data(0x000420, 1)
-mmctx_data(0x0004b0, 1)
-mmctx_data(0x0004e8, 1)
-mmctx_data(0x0004f4, 1)
-mmctx_data(0x000520, 2)
-mmctx_data(0x000604, 4)
-mmctx_data(0x000644, 20)
-mmctx_data(0x000698, 1)
-mmctx_data(0x0006e0, 1)
-mmctx_data(0x000730, 11)
-nnvc3_tpc_mmio_tail:
-mmctx_data(0x000544, 1)
-nnvc1_tpc_mmio_tail:
-
-nvd9_tpc_mmio_head:
-mmctx_data(0x000018, 1)
-mmctx_data(0x00003c, 1)
-mmctx_data(0x000048, 1)
-mmctx_data(0x000064, 1)
-mmctx_data(0x000088, 1)
-mmctx_data(0x000200, 6)
-mmctx_data(0x00021c, 2)
-mmctx_data(0x0002c4, 1)
-mmctx_data(0x000300, 6)
-mmctx_data(0x0003d0, 1)
-mmctx_data(0x0003e0, 2)
-mmctx_data(0x000400, 3)
-mmctx_data(0x000420, 3)
-mmctx_data(0x0004b0, 1)
-mmctx_data(0x0004e8, 1)
-mmctx_data(0x0004f4, 1)
-mmctx_data(0x000520, 2)
+mmctx_data(0x000730, 8)
+mmctx_data(0x000758, 1)
+nvc3_tpc_mmio_tail:
mmctx_data(0x000544, 1)
-mmctx_data(0x000604, 4)
-mmctx_data(0x000644, 20)
-mmctx_data(0x000698, 1)
-mmctx_data(0x0006e0, 1)
-mmctx_data(0x000730, 11)
+nvc1_tpc_mmio_tail:
+mmctx_data(0x000424, 2);
+mmctx_data(0x0006e0, 1);
nvd9_tpc_mmio_tail:
.section #nvc0_grgpc_code