this will be later used for dynamic reclocking on gt215 and newer Signed-off-by: Karol Herbst <nouv...@karolherbst.de> --- drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h | 401 +++++++++------ drm/nouveau/nvkm/subdev/pmu/fuc/gf119.fuc4.h | 735 +++++++++++++++------------ drm/nouveau/nvkm/subdev/pmu/fuc/gk104.fuc4.h | 735 +++++++++++++++------------ drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h | 713 ++++++++++++++------------ drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h | 730 +++++++++++++++----------- drm/nouveau/nvkm/subdev/pmu/fuc/os.h | 4 + drm/nouveau/nvkm/subdev/pmu/fuc/perf.fuc | 137 +++++ 7 files changed, 2012 insertions(+), 1443 deletions(-)
diff --git a/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h b/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h index 7702944..0ad7782 100644 --- a/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h +++ b/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h @@ -68,7 +68,7 @@ uint32_t gf100_pmu_data[] = { 0x00000000, 0x00000000, 0x46524550, - 0x00000757, + 0x00000863, 0x00000755, 0x00000000, 0x00000000, @@ -90,8 +90,8 @@ uint32_t gf100_pmu_data[] = { 0x00000000, 0x00000000, 0x5f433249, - 0x00000b87, - 0x00000a2a, + 0x00000d3f, + 0x00000be2, 0x00000000, 0x00000000, 0x00000000, @@ -112,8 +112,8 @@ uint32_t gf100_pmu_data[] = { 0x00000000, 0x00000000, 0x54534554, - 0x00000bb0, - 0x00000b89, + 0x00000d68, + 0x00000d41, 0x00000000, 0x00000000, 0x00000000, @@ -134,8 +134,8 @@ uint32_t gf100_pmu_data[] = { 0x00000000, 0x00000000, 0x454c4449, - 0x00000bbc, - 0x00000bba, + 0x00000d74, + 0x00000d72, 0x00000000, 0x00000000, 0x00000000, @@ -834,7 +834,15 @@ uint32_t gf100_pmu_data[] = { 0x00000000, 0x00000000, /* 0x0ccc: memx_train_tail */ -/* 0x0ccc: i2c_scl_map */ +/* 0x0ccc: perf_attr_start */ +/* 0x0ccc: perf_polling_period_us */ + 0x000186a0, +/* 0x0cd0: perf_eng_gr */ +/* 0x0cd1: perf_eng_vdec */ +/* 0x0cd2: perf_eng_mc */ +/* 0x0cd3: perf_eng_pcie */ + 0x00000000, +/* 0x0cd4: i2c_scl_map */ 0x00001000, 0x00004000, 0x00010000, @@ -845,7 +853,7 @@ uint32_t gf100_pmu_data[] = { 0x01000000, 0x04000000, 0x10000000, -/* 0x0cf4: i2c_sda_map */ +/* 0x0cfc: i2c_sda_map */ 0x00002000, 0x00008000, 0x00020000, @@ -856,7 +864,7 @@ uint32_t gf100_pmu_data[] = { 0x02000000, 0x08000000, 0x20000000, -/* 0x0d1c: i2c_ctrl */ +/* 0x0d24: i2c_ctrl */ 0x0000e138, 0x0000e150, 0x0000e168, @@ -912,8 +920,6 @@ uint32_t gf100_pmu_data[] = { 0x00000000, 0x00000000, 0x00000000, - 0x00000000, - 0x00000000, }; uint32_t gf100_pmu_code[] = { @@ -1451,139 +1457,252 @@ uint32_t gf100_pmu_code[] = { /* 0x0753: memx_init */ 0xf800f8d8, /* 0x0755: perf_recv */ -/* 0x0757: perf_init */ - 0xf800f800, -/* 0x0759: i2c_drive_scl */ + 0x48a7f100, + 0x53a3f14f, + 0x06eab854, + 0xb0411bf4, + 0x1bf401d6, + 0xbdb4bd50, + 0xd307f1c4, + 0x000c180c, + 0xc4b604bd, + 0xd207f108, + 0x000c180c, + 0xc4b604bd, + 0xd107f108, + 0x000c180c, + 0xc4b604bd, + 0xd007f108, + 0x000c180c, + 0x21f504bd, + 0x0ef40337, +/* 0x07a1: perf_recv_not_host */ + 0xb821f518, + 0xcc07f107, + 0x000e980c, + 0x21f504bd, + 0x21f5022b, +/* 0x07b6: perf_recv_exit */ + 0x00f80257, +/* 0x07b8: perf_counter_readout */ + 0x0508e7f1, + 0xcf06e4b6, + 0xeecc00ee, + 0x18d7f1ff, + 0x06d4b605, + 0xff00ddcf, + 0x07f1dcde, + 0x0d000cd0, + 0xf104bd00, + 0xb60528d7, + 0xddcf06d4, + 0xdcdeff00, + 0x0cd107f1, + 0xbd000d00, + 0x38d7f104, + 0x06d4b605, + 0xff00ddcf, + 0x07f1dcde, + 0x0d000cd2, + 0xf104bd00, + 0xb60548d7, + 0xddcf06d4, + 0xdcdeff00, + 0x0cd307f1, + 0xbd000d00, + 0x00e7f104, + 0x00e3f100, + 0x0807f180, + 0x0604b605, + 0xbd000ed0, + 0x1807f104, + 0x0604b605, + 0xbd000ed0, + 0x2807f104, + 0x0604b605, + 0xbd000ed0, + 0x3807f104, + 0x0604b605, + 0xbd000ed0, + 0x4807f104, + 0x0604b605, + 0xbd000ed0, +/* 0x0863: perf_init */ + 0xf100f804, + 0xf00003e7, + 0x07f100e3, + 0x04b6050c, + 0x000ed006, + 0xe7f104bd, + 0xe3f00002, + 0x1c07f100, + 0x0604b605, + 0xbd000ed0, + 0x2c07f104, + 0x0604b605, + 0xbd000ed0, + 0x3c07f104, + 0x0604b605, + 0xbd000ed0, + 0x4c07f104, + 0x0604b605, + 0xbd000ed0, + 0x0fe7f104, + 0x18e3f000, + 0x051407f1, + 0xd00604b6, + 0x04bd000e, + 0x0070e7f1, + 0xf100e3f0, + 0xb6052407, + 0x0ed00604, + 0xf104bd00, + 0xf00080e7, + 0x07f100e3, + 0x04b60534, + 0x000ed006, + 0xe7f104bd, + 0xe3f10000, + 0x07f12000, + 0x04b60544, + 0x000ed006, + 0x21f504bd, + 0x07f107b8, + 0x0e980ccc, + 0xf504bd00, + 0xf5022b21, + 0xf8025721, +/* 0x0911: i2c_drive_scl */ 0x0036b000, 0xf1110bf4, 0xb607e007, 0x01d00604, 0xf804bd00, -/* 0x076d: i2c_drive_scl_lo */ +/* 0x0925: i2c_drive_scl_lo */ 0xe407f100, 0x0604b607, 0xbd0001d0, -/* 0x077b: i2c_drive_sda */ +/* 0x0933: i2c_drive_sda */ 0xb000f804, 0x0bf40036, 0xe007f111, 0x0604b607, 0xbd0002d0, -/* 0x078f: i2c_drive_sda_lo */ +/* 0x0947: i2c_drive_sda_lo */ 0xf100f804, 0xb607e407, 0x02d00604, 0xf804bd00, -/* 0x079d: i2c_sense_scl */ +/* 0x0955: i2c_sense_scl */ 0x0132f400, 0x07c437f1, 0xcf0634b6, 0x31fd0033, 0x060bf404, -/* 0x07b3: i2c_sense_scl_done */ +/* 0x096b: i2c_sense_scl_done */ 0xf80131f4, -/* 0x07b5: i2c_sense_sda */ +/* 0x096d: i2c_sense_sda */ 0x0132f400, 0x07c437f1, 0xcf0634b6, 0x32fd0033, 0x060bf404, -/* 0x07cb: i2c_sense_sda_done */ +/* 0x0983: i2c_sense_sda_done */ 0xf80131f4, -/* 0x07cd: i2c_raise_scl */ +/* 0x0985: i2c_raise_scl */ 0xf140f900, 0xf0089847, 0x21f50137, -/* 0x07da: i2c_raise_scl_wait */ - 0xe7f10759, +/* 0x0992: i2c_raise_scl_wait */ + 0xe7f10911, 0x21f403e8, - 0x9d21f57f, - 0x0901f407, + 0x5521f57f, + 0x0901f409, 0xf40142b6, -/* 0x07ee: i2c_raise_scl_done */ +/* 0x09a6: i2c_raise_scl_done */ 0x40fcef1b, -/* 0x07f2: i2c_start */ +/* 0x09aa: i2c_start */ 0x21f500f8, - 0x11f4079d, - 0xb521f50d, - 0x0611f407, -/* 0x0803: i2c_start_rep */ + 0x11f40955, + 0x6d21f50d, + 0x0611f409, +/* 0x09bb: i2c_start_rep */ 0xf0300ef4, 0x21f50037, - 0x37f00759, - 0x7b21f501, - 0x0076bb07, + 0x37f00911, + 0x3321f501, + 0x0076bb09, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b607cd, + 0x64b60985, 0x1f11f404, -/* 0x0830: i2c_start_send */ +/* 0x09e8: i2c_start_send */ 0xf50037f0, - 0xf1077b21, + 0xf1093321, 0xf41388e7, 0x37f07f21, - 0x5921f500, - 0x88e7f107, + 0x1121f500, + 0x88e7f109, 0x7f21f413, -/* 0x084c: i2c_start_out */ -/* 0x084e: i2c_stop */ +/* 0x0a04: i2c_start_out */ +/* 0x0a06: i2c_stop */ 0x37f000f8, - 0x5921f500, - 0x0037f007, - 0x077b21f5, + 0x1121f500, + 0x0037f009, + 0x093321f5, 0x03e8e7f1, 0xf07f21f4, 0x21f50137, - 0xe7f10759, + 0xe7f10911, 0x21f41388, 0x0137f07f, - 0x077b21f5, + 0x093321f5, 0x1388e7f1, 0xf87f21f4, -/* 0x0881: i2c_bitw */ - 0x7b21f500, - 0xe8e7f107, +/* 0x0a39: i2c_bitw */ + 0x3321f500, + 0xe8e7f109, 0x7f21f403, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0xcd21f550, - 0x0464b607, + 0x8521f550, + 0x0464b609, 0xf11811f4, 0xf41388e7, 0x37f07f21, - 0x5921f500, - 0x88e7f107, + 0x1121f500, + 0x88e7f109, 0x7f21f413, -/* 0x08c0: i2c_bitw_out */ -/* 0x08c2: i2c_bitr */ +/* 0x0a78: i2c_bitw_out */ +/* 0x0a7a: i2c_bitr */ 0x37f000f8, - 0x7b21f501, - 0xe8e7f107, + 0x3321f501, + 0xe8e7f109, 0x7f21f403, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0xcd21f550, - 0x0464b607, + 0x8521f550, + 0x0464b609, 0xf51b11f4, - 0xf007b521, + 0xf0096d21, 0x21f50037, - 0xe7f10759, + 0xe7f10911, 0x21f41388, 0x013cf07f, -/* 0x0907: i2c_bitr_done */ +/* 0x0abf: i2c_bitr_done */ 0xf80131f4, -/* 0x0909: i2c_get_byte */ +/* 0x0ac1: i2c_get_byte */ 0x0057f000, -/* 0x090f: i2c_get_byte_next */ +/* 0x0ac7: i2c_get_byte_next */ 0xb60847f0, 0x76bb0154, 0x0465b600, @@ -1591,7 +1710,7 @@ uint32_t gf100_pmu_code[] = { 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb608c221, + 0xb60a7a21, 0x11f40464, 0x0553fd2b, 0xf40142b6, @@ -1602,11 +1721,11 @@ uint32_t gf100_pmu_code[] = { 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b60881, -/* 0x0959: i2c_get_byte_done */ -/* 0x095b: i2c_put_byte */ + 0x64b60a39, +/* 0x0b11: i2c_get_byte_done */ +/* 0x0b13: i2c_put_byte */ 0xf000f804, -/* 0x095e: i2c_put_byte_next */ +/* 0x0b16: i2c_put_byte_next */ 0x42b60847, 0x3854ff01, 0xb60076bb, @@ -1614,8 +1733,8 @@ uint32_t gf100_pmu_code[] = { 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x8121f550, - 0x0464b608, + 0x3921f550, + 0x0464b60a, 0xb03411f4, 0x1bf40046, 0x0076bbd8, @@ -1624,20 +1743,20 @@ uint32_t gf100_pmu_code[] = { 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b608c2, + 0x64b60a7a, 0x0f11f404, 0xb00076bb, 0x1bf40136, 0x0132f406, -/* 0x09b4: i2c_put_byte_done */ -/* 0x09b6: i2c_addr */ +/* 0x0b6c: i2c_put_byte_done */ +/* 0x0b6e: i2c_addr */ 0x76bb00f8, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb607f221, + 0xb609aa21, 0x11f40464, 0x2ec3e729, 0x0134b601, @@ -1647,31 +1766,31 @@ uint32_t gf100_pmu_code[] = { 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x095b21f5, -/* 0x09fb: i2c_addr_done */ + 0x0b1321f5, +/* 0x0bb3: i2c_addr_done */ 0xf80464b6, -/* 0x09fd: i2c_acquire_addr */ +/* 0x0bb5: i2c_acquire_addr */ 0xf8cec700, 0xb702e4b6, - 0x980d1ce0, + 0x980d24e0, 0x00f800ee, -/* 0x0a0c: i2c_acquire */ - 0x09fd21f5, +/* 0x0bc4: i2c_acquire */ + 0x0bb521f5, 0xf00421f4, 0x21f403d9, -/* 0x0a1b: i2c_release */ +/* 0x0bd3: i2c_release */ 0xf500f83f, - 0xf409fd21, + 0xf40bb521, 0xdaf00421, 0x3f21f403, -/* 0x0a2a: i2c_recv */ +/* 0x0be2: i2c_recv */ 0x32f400f8, 0xf8c1c701, 0xb00214b6, 0x1ff52816, 0x13a0013a, - 0x32980cf4, - 0xcc13a000, + 0x32980cfc, + 0xd413a000, 0x0031980c, 0xf90231f4, 0xf9e0f9d0, @@ -1683,8 +1802,8 @@ uint32_t gf100_pmu_code[] = { 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x0c21f550, - 0x0464b60a, + 0xc421f550, + 0x0464b60b, 0xd6b0d0fc, 0xb31bf500, 0x0057f000, @@ -1693,8 +1812,8 @@ uint32_t gf100_pmu_code[] = { 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0xb621f550, - 0x0464b609, + 0x6e21f550, + 0x0464b60b, 0x00d011f5, 0xbbe0c5c7, 0x65b60076, @@ -1702,7 +1821,7 @@ uint32_t gf100_pmu_code[] = { 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x095b21f5, + 0x0b1321f5, 0xf50464b6, 0xf000ad11, 0x76bb0157, @@ -1711,7 +1830,7 @@ uint32_t gf100_pmu_code[] = { 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb609b621, + 0xb60b6e21, 0x11f50464, 0x76bb008a, 0x0465b600, @@ -1719,7 +1838,7 @@ uint32_t gf100_pmu_code[] = { 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb6090921, + 0xb60ac121, 0x11f40464, 0xe05bcb6a, 0xb60076bb, @@ -1727,38 +1846,38 @@ uint32_t gf100_pmu_code[] = { 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x4e21f550, - 0x0464b608, + 0x0621f550, + 0x0464b60a, 0xbd025bb9, 0x430ef474, -/* 0x0b30: i2c_recv_not_rd08 */ +/* 0x0ce8: i2c_recv_not_rd08 */ 0xf401d6b0, 0x57f03d1b, - 0xb621f500, - 0x3311f409, + 0x6e21f500, + 0x3311f40b, 0xf5e0c5c7, - 0xf4095b21, + 0xf40b1321, 0x57f02911, - 0xb621f500, - 0x1f11f409, + 0x6e21f500, + 0x1f11f40b, 0xf5e0b5c7, - 0xf4095b21, + 0xf40b1321, 0x21f51511, - 0x74bd084e, + 0x74bd0a06, 0xf408c5c7, 0x32f4091b, 0x030ef402, -/* 0x0b70: i2c_recv_not_wr08 */ -/* 0x0b70: i2c_recv_done */ +/* 0x0d28: i2c_recv_not_wr08 */ +/* 0x0d28: i2c_recv_done */ 0xf5f8cec7, - 0xfc0a1b21, + 0xfc0bd321, 0xf4d0fce0, 0x7cb90a12, 0x3721f502, -/* 0x0b85: i2c_recv_exit */ -/* 0x0b87: i2c_init */ +/* 0x0d3d: i2c_recv_exit */ +/* 0x0d3f: i2c_init */ 0xf800f803, -/* 0x0b89: test_recv */ +/* 0x0d41: test_recv */ 0xd817f100, 0x0614b605, 0xb60011cf, @@ -1769,12 +1888,12 @@ uint32_t gf100_pmu_code[] = { 0xe3f1d900, 0x21f5134f, 0x00f80257, -/* 0x0bb0: test_init */ +/* 0x0d68: test_init */ 0x0800e7f1, 0x025721f5, -/* 0x0bba: idle_recv */ +/* 0x0d72: idle_recv */ 0x00f800f8, -/* 0x0bbc: idle */ +/* 0x0d74: idle */ 0xf10031f4, 0xb605d417, 0x11cf0614, @@ -1782,16 +1901,16 @@ uint32_t gf100_pmu_code[] = { 0x05d407f1, 0xd00604b6, 0x04bd0001, -/* 0x0bd8: idle_loop */ +/* 0x0d90: idle_loop */ 0xf45817f0, -/* 0x0bde: idle_proc */ -/* 0x0bde: idle_proc_exec */ +/* 0x0d96: idle_proc */ +/* 0x0d96: idle_proc_exec */ 0x10f90232, 0xf5021eb9, 0xfc034021, 0x0911f410, 0xf40231f4, -/* 0x0bf2: idle_proc_next */ +/* 0x0daa: idle_proc_next */ 0x10b6ef0e, 0x061fb858, 0xf4e61bf4, @@ -1814,50 +1933,4 @@ uint32_t gf100_pmu_code[] = { 0x00000000, 0x00000000, 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, }; diff --git a/drm/nouveau/nvkm/subdev/pmu/fuc/gf119.fuc4.h b/drm/nouveau/nvkm/subdev/pmu/fuc/gf119.fuc4.h index 7bf6b39..6ddcd80 100644 --- a/drm/nouveau/nvkm/subdev/pmu/fuc/gf119.fuc4.h +++ b/drm/nouveau/nvkm/subdev/pmu/fuc/gf119.fuc4.h @@ -68,7 +68,7 @@ uint32_t gf119_pmu_data[] = { 0x00000000, 0x00000000, 0x46524550, - 0x00000684, + 0x00000772, 0x00000682, 0x00000000, 0x00000000, @@ -90,8 +90,8 @@ uint32_t gf119_pmu_data[] = { 0x00000000, 0x00000000, 0x5f433249, - 0x00000a9f, - 0x00000942, + 0x00000c1e, + 0x00000ac1, 0x00000000, 0x00000000, 0x00000000, @@ -112,8 +112,8 @@ uint32_t gf119_pmu_data[] = { 0x00000000, 0x00000000, 0x54534554, - 0x00000ac2, - 0x00000aa1, + 0x00000c41, + 0x00000c20, 0x00000000, 0x00000000, 0x00000000, @@ -134,8 +134,8 @@ uint32_t gf119_pmu_data[] = { 0x00000000, 0x00000000, 0x454c4449, - 0x00000ace, - 0x00000acc, + 0x00000c4d, + 0x00000c4b, 0x00000000, 0x00000000, 0x00000000, @@ -834,7 +834,15 @@ uint32_t gf119_pmu_data[] = { 0x00000000, 0x00000000, /* 0x0ccc: memx_train_tail */ -/* 0x0ccc: i2c_scl_map */ +/* 0x0ccc: perf_attr_start */ +/* 0x0ccc: perf_polling_period_us */ + 0x000186a0, +/* 0x0cd0: perf_eng_gr */ +/* 0x0cd1: perf_eng_vdec */ +/* 0x0cd2: perf_eng_mc */ +/* 0x0cd3: perf_eng_pcie */ + 0x00000000, +/* 0x0cd4: i2c_scl_map */ 0x00000400, 0x00000800, 0x00001000, @@ -845,7 +853,7 @@ uint32_t gf119_pmu_data[] = { 0x00020000, 0x00040000, 0x00080000, -/* 0x0cf4: i2c_sda_map */ +/* 0x0cfc: i2c_sda_map */ 0x00100000, 0x00200000, 0x00400000, @@ -911,8 +919,6 @@ uint32_t gf119_pmu_data[] = { 0x00000000, 0x00000000, 0x00000000, - 0x00000000, - 0x00000000, }; uint32_t gf119_pmu_code[] = { @@ -1392,376 +1398,443 @@ uint32_t gf119_pmu_code[] = { 0x00f8d80b, /* 0x0680: memx_init */ /* 0x0682: perf_recv */ - 0x00f800f8, -/* 0x0684: perf_init */ -/* 0x0686: i2c_drive_scl */ - 0x36b000f8, - 0x0e0bf400, - 0x07e007f1, - 0xbd0001d0, -/* 0x0697: i2c_drive_scl_lo */ - 0xf100f804, - 0xd007e407, + 0xa7f100f8, + 0xa3f14f48, + 0xeab85453, + 0x411bf406, + 0xf401d6b0, + 0xb4bd501b, + 0x07f1c4bd, + 0x0c180cd3, + 0xb604bd00, + 0x07f108c4, + 0x0c180cd2, + 0xb604bd00, + 0x07f108c4, + 0x0c180cd1, + 0xb604bd00, + 0x07f108c4, + 0x0c180cd0, + 0xf504bd00, + 0xf402e621, +/* 0x06ce: perf_recv_not_host */ + 0x21f5180e, + 0x07f106e5, + 0x0e980ccc, + 0xf504bd00, + 0xf501ec21, +/* 0x06e3: perf_recv_exit */ + 0xf8021821, +/* 0x06e5: perf_counter_readout */ + 0x08e7f100, + 0x00eecf05, + 0xf1ffeecc, + 0xcf0518d7, + 0xdeff00dd, + 0xd007f1dc, + 0x000d000c, + 0xd7f104bd, + 0xddcf0528, + 0xdcdeff00, + 0x0cd107f1, + 0xbd000d00, + 0x38d7f104, + 0x00ddcf05, + 0xf1dcdeff, + 0x000cd207, + 0x04bd000d, + 0x0548d7f1, + 0xff00ddcf, + 0x07f1dcde, + 0x0d000cd3, + 0xf104bd00, + 0xf10000e7, + 0xf18000e3, + 0xd0050807, + 0x04bd000e, + 0x051807f1, + 0xbd000ed0, + 0x2807f104, + 0x000ed005, + 0x07f104bd, + 0x0ed00538, + 0xf104bd00, + 0xd0054807, + 0x04bd000e, +/* 0x0772: perf_init */ + 0xe7f100f8, + 0xe3f00003, + 0x0c07f100, + 0x000ed005, + 0xe7f104bd, + 0xe3f00002, + 0x1c07f100, + 0x000ed005, + 0x07f104bd, + 0x0ed0052c, + 0xf104bd00, + 0xd0053c07, + 0x04bd000e, + 0x054c07f1, + 0xbd000ed0, + 0x0fe7f104, + 0x18e3f000, + 0x051407f1, + 0xbd000ed0, + 0x70e7f104, + 0x00e3f000, + 0x052407f1, + 0xbd000ed0, + 0x80e7f104, + 0x00e3f000, + 0x053407f1, + 0xbd000ed0, + 0x00e7f104, + 0x00e3f100, + 0x4407f120, + 0x000ed005, + 0x21f504bd, + 0x07f106e5, + 0x0e980ccc, + 0xf504bd00, + 0xf501ec21, + 0xf8021821, +/* 0x0805: i2c_drive_scl */ + 0x0036b000, + 0xf10e0bf4, + 0xd007e007, 0x04bd0001, -/* 0x06a2: i2c_drive_sda */ - 0x36b000f8, - 0x0e0bf400, - 0x07e007f1, - 0xbd0002d0, -/* 0x06b3: i2c_drive_sda_lo */ - 0xf100f804, - 0xd007e407, +/* 0x0816: i2c_drive_scl_lo */ + 0x07f100f8, + 0x01d007e4, + 0xf804bd00, +/* 0x0821: i2c_drive_sda */ + 0x0036b000, + 0xf10e0bf4, + 0xd007e007, 0x04bd0002, -/* 0x06be: i2c_sense_scl */ +/* 0x0832: i2c_drive_sda_lo */ + 0x07f100f8, + 0x02d007e4, + 0xf804bd00, +/* 0x083d: i2c_sense_scl */ + 0x0132f400, + 0x07c437f1, + 0xfd0033cf, + 0x0bf40431, + 0x0131f406, +/* 0x0850: i2c_sense_scl_done */ +/* 0x0852: i2c_sense_sda */ 0x32f400f8, 0xc437f101, 0x0033cf07, - 0xf40431fd, + 0xf40432fd, 0x31f4060b, -/* 0x06d1: i2c_sense_scl_done */ -/* 0x06d3: i2c_sense_sda */ - 0xf400f801, - 0x37f10132, - 0x33cf07c4, - 0x0432fd00, - 0xf4060bf4, -/* 0x06e6: i2c_sense_sda_done */ - 0x00f80131, -/* 0x06e8: i2c_raise_scl */ - 0x47f140f9, - 0x37f00898, - 0x8621f501, -/* 0x06f5: i2c_raise_scl_wait */ - 0xe8e7f106, - 0x6721f403, - 0x06be21f5, - 0xb60901f4, - 0x1bf40142, -/* 0x0709: i2c_raise_scl_done */ - 0xf840fcef, -/* 0x070d: i2c_start */ - 0xbe21f500, - 0x0d11f406, - 0x06d321f5, - 0xf40611f4, -/* 0x071e: i2c_start_rep */ - 0x37f0300e, - 0x8621f500, - 0x0137f006, - 0x06a221f5, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0xe821f550, - 0x0464b606, -/* 0x074b: i2c_start_send */ - 0xf01f11f4, - 0x21f50037, - 0xe7f106a2, - 0x21f41388, - 0x0037f067, - 0x068621f5, - 0x1388e7f1, -/* 0x0767: i2c_start_out */ - 0xf86721f4, -/* 0x0769: i2c_stop */ - 0x0037f000, - 0x068621f5, - 0xf50037f0, - 0xf106a221, - 0xf403e8e7, - 0x37f06721, - 0x8621f501, - 0x88e7f106, - 0x6721f413, - 0xf50137f0, - 0xf106a221, - 0xf41388e7, - 0x00f86721, -/* 0x079c: i2c_bitw */ - 0x06a221f5, +/* 0x0865: i2c_sense_sda_done */ +/* 0x0867: i2c_raise_scl */ + 0xf900f801, + 0x9847f140, + 0x0137f008, + 0x080521f5, +/* 0x0874: i2c_raise_scl_wait */ 0x03e8e7f1, - 0xbb6721f4, + 0xf56721f4, + 0xf4083d21, + 0x42b60901, + 0xef1bf401, +/* 0x0888: i2c_raise_scl_done */ + 0x00f840fc, +/* 0x088c: i2c_start */ + 0x083d21f5, + 0xf50d11f4, + 0xf4085221, + 0x0ef40611, +/* 0x089d: i2c_start_rep */ + 0x0037f030, + 0x080521f5, + 0xf50137f0, + 0xbb082121, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x06e821f5, + 0x086721f5, 0xf40464b6, - 0xe7f11811, - 0x21f41388, - 0x0037f067, - 0x068621f5, +/* 0x08ca: i2c_start_send */ + 0x37f01f11, + 0x2121f500, + 0x88e7f108, + 0x6721f413, + 0xf50037f0, + 0xf1080521, + 0xf41388e7, +/* 0x08e6: i2c_start_out */ + 0x00f86721, +/* 0x08e8: i2c_stop */ + 0xf50037f0, + 0xf0080521, + 0x21f50037, + 0xe7f10821, + 0x21f403e8, + 0x0137f067, + 0x080521f5, 0x1388e7f1, -/* 0x07db: i2c_bitw_out */ - 0xf86721f4, -/* 0x07dd: i2c_bitr */ - 0x0137f000, - 0x06a221f5, - 0x03e8e7f1, - 0xbb6721f4, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x06e821f5, - 0xf40464b6, - 0x21f51b11, - 0x37f006d3, - 0x8621f500, - 0x88e7f106, + 0xf06721f4, + 0x21f50137, + 0xe7f10821, + 0x21f41388, +/* 0x091b: i2c_bitw */ + 0xf500f867, + 0xf1082121, + 0xf403e8e7, + 0x76bb6721, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb6086721, + 0x11f40464, + 0x88e7f118, 0x6721f413, - 0xf4013cf0, -/* 0x0822: i2c_bitr_done */ - 0x00f80131, -/* 0x0824: i2c_get_byte */ - 0xf00057f0, -/* 0x082a: i2c_get_byte_next */ - 0x54b60847, - 0x0076bb01, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b607dd, - 0x2b11f404, - 0xb60553fd, - 0x1bf40142, - 0x0137f0d8, + 0xf50037f0, + 0xf1080521, + 0xf41388e7, +/* 0x095a: i2c_bitw_out */ + 0x00f86721, +/* 0x095c: i2c_bitr */ + 0xf50137f0, + 0xf1082121, + 0xf403e8e7, + 0x76bb6721, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb6086721, + 0x11f40464, + 0x5221f51b, + 0x0037f008, + 0x080521f5, + 0x1388e7f1, + 0xf06721f4, + 0x31f4013c, +/* 0x09a1: i2c_bitr_done */ +/* 0x09a3: i2c_get_byte */ + 0xf000f801, + 0x47f00057, +/* 0x09a9: i2c_get_byte_next */ + 0x0154b608, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x9c21f550, - 0x0464b607, -/* 0x0874: i2c_get_byte_done */ -/* 0x0876: i2c_put_byte */ - 0x47f000f8, -/* 0x0879: i2c_put_byte_next */ - 0x0142b608, - 0xbb3854ff, + 0x5c21f550, + 0x0464b609, + 0xfd2b11f4, + 0x42b60553, + 0xd81bf401, + 0xbb0137f0, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x091b21f5, +/* 0x09f3: i2c_get_byte_done */ + 0xf80464b6, +/* 0x09f5: i2c_put_byte */ + 0x0847f000, +/* 0x09f8: i2c_put_byte_next */ + 0xff0142b6, + 0x76bb3854, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb6091b21, + 0x11f40464, + 0x0046b034, + 0xbbd81bf4, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x079c21f5, + 0x095c21f5, 0xf40464b6, - 0x46b03411, - 0xd81bf400, + 0x76bb0f11, + 0x0136b000, + 0xf4061bf4, +/* 0x0a4e: i2c_put_byte_done */ + 0x00f80132, +/* 0x0a50: i2c_addr */ 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0xdd21f550, - 0x0464b607, - 0xbb0f11f4, - 0x36b00076, - 0x061bf401, -/* 0x08cf: i2c_put_byte_done */ - 0xf80132f4, -/* 0x08d1: i2c_addr */ - 0x0076bb00, + 0x8c21f550, + 0x0464b608, + 0xe72911f4, + 0xb6012ec3, + 0x53fd0134, + 0x0076bb05, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b6070d, - 0x2911f404, - 0x012ec3e7, - 0xfd0134b6, - 0x76bb0553, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0xf550fc04, - 0xb6087621, -/* 0x0916: i2c_addr_done */ - 0x00f80464, -/* 0x0918: i2c_acquire_addr */ - 0xb6f8cec7, - 0xe0b705e4, - 0x00f8d014, -/* 0x0924: i2c_acquire */ - 0x091821f5, - 0xf00421f4, - 0x21f403d9, -/* 0x0933: i2c_release */ - 0xf500f833, - 0xf4091821, - 0xdaf00421, + 0x64b609f5, +/* 0x0a95: i2c_addr_done */ +/* 0x0a97: i2c_acquire_addr */ + 0xc700f804, + 0xe4b6f8ce, + 0x14e0b705, +/* 0x0aa3: i2c_acquire */ + 0xf500f8d0, + 0xf40a9721, + 0xd9f00421, 0x3321f403, -/* 0x0942: i2c_recv */ - 0x32f400f8, - 0xf8c1c701, - 0xb00214b6, - 0x1ff52816, - 0x13a0013a, - 0x32980cf4, - 0xcc13a000, - 0x0031980c, - 0xf90231f4, - 0xf9e0f9d0, - 0x0067f1d0, - 0x0063f100, - 0x01679210, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0x2421f550, - 0x0464b609, - 0xd6b0d0fc, - 0xb31bf500, - 0x0057f000, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0xd121f550, - 0x0464b608, - 0x00d011f5, - 0xbbe0c5c7, +/* 0x0ab2: i2c_release */ + 0x21f500f8, + 0x21f40a97, + 0x03daf004, + 0xf83321f4, +/* 0x0ac1: i2c_recv */ + 0x0132f400, + 0xb6f8c1c7, + 0x16b00214, + 0x3a1ff528, + 0xfc13a001, + 0x0032980c, + 0x0cd413a0, + 0xf4003198, + 0xd0f90231, + 0xd0f9e0f9, + 0x000067f1, + 0x100063f1, + 0xbb016792, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x0aa321f5, + 0xfc0464b6, + 0x00d6b0d0, + 0x00b31bf5, + 0xbb0057f0, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x087621f5, + 0x0a5021f5, 0xf50464b6, - 0xf000ad11, - 0x76bb0157, + 0xc700d011, + 0x76bbe0c5, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb608d121, + 0xb609f521, 0x11f50464, - 0x76bb008a, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0xf550fc04, - 0xb6082421, - 0x11f40464, - 0xe05bcb6a, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0x6921f550, - 0x0464b607, - 0xbd025bb9, - 0x430ef474, -/* 0x0a48: i2c_recv_not_rd08 */ - 0xf401d6b0, - 0x57f03d1b, - 0xd121f500, - 0x3311f408, - 0xf5e0c5c7, - 0xf4087621, - 0x57f02911, - 0xd121f500, - 0x1f11f408, - 0xf5e0b5c7, - 0xf4087621, - 0x21f51511, - 0x74bd0769, - 0xf408c5c7, - 0x32f4091b, - 0x030ef402, -/* 0x0a88: i2c_recv_not_wr08 */ -/* 0x0a88: i2c_recv_done */ - 0xf5f8cec7, - 0xfc093321, - 0xf4d0fce0, - 0x7cb90a12, - 0xe621f502, -/* 0x0a9d: i2c_recv_exit */ -/* 0x0a9f: i2c_init */ + 0x57f000ad, + 0x0076bb01, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b60a50, + 0x8a11f504, + 0x0076bb00, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b609a3, + 0x6a11f404, + 0xbbe05bcb, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x08e821f5, + 0xb90464b6, + 0x74bd025b, +/* 0x0bc7: i2c_recv_not_rd08 */ + 0xb0430ef4, + 0x1bf401d6, + 0x0057f03d, + 0x0a5021f5, + 0xc73311f4, + 0x21f5e0c5, + 0x11f409f5, + 0x0057f029, + 0x0a5021f5, + 0xc71f11f4, + 0x21f5e0b5, + 0x11f409f5, + 0xe821f515, + 0xc774bd08, + 0x1bf408c5, + 0x0232f409, +/* 0x0c07: i2c_recv_not_wr08 */ +/* 0x0c07: i2c_recv_done */ + 0xc7030ef4, + 0x21f5f8ce, + 0xe0fc0ab2, + 0x12f4d0fc, + 0x027cb90a, + 0x02e621f5, +/* 0x0c1c: i2c_recv_exit */ +/* 0x0c1e: i2c_init */ + 0x00f800f8, +/* 0x0c20: test_recv */ + 0x05d817f1, + 0xb60011cf, + 0x07f10110, + 0x01d005d8, + 0xf104bd00, + 0xf1d900e7, + 0xf5134fe3, + 0xf8021821, +/* 0x0c41: test_init */ + 0x00e7f100, + 0x1821f508, +/* 0x0c4b: idle_recv */ 0xf800f802, -/* 0x0aa1: test_recv */ - 0xd817f100, - 0x0011cf05, - 0xf10110b6, - 0xd005d807, - 0x04bd0001, - 0xd900e7f1, - 0x134fe3f1, - 0x021821f5, -/* 0x0ac2: test_init */ - 0xe7f100f8, - 0x21f50800, - 0x00f80218, -/* 0x0acc: idle_recv */ -/* 0x0ace: idle */ - 0x31f400f8, - 0xd417f100, - 0x0011cf05, - 0xf10110b6, - 0xd005d407, - 0x04bd0001, -/* 0x0ae4: idle_loop */ - 0xf45817f0, -/* 0x0aea: idle_proc */ -/* 0x0aea: idle_proc_exec */ - 0x10f90232, - 0xf5021eb9, - 0xfc02ef21, - 0x0911f410, - 0xf40231f4, -/* 0x0afe: idle_proc_next */ - 0x10b6ef0e, - 0x061fb858, - 0xf4e61bf4, - 0x28f4dd02, - 0xc10ef400, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, +/* 0x0c4d: idle */ + 0x0031f400, + 0x05d417f1, + 0xb60011cf, + 0x07f10110, + 0x01d005d4, +/* 0x0c63: idle_loop */ + 0xf004bd00, + 0x32f45817, +/* 0x0c69: idle_proc */ +/* 0x0c69: idle_proc_exec */ + 0xb910f902, + 0x21f5021e, + 0x10fc02ef, + 0xf40911f4, + 0x0ef40231, +/* 0x0c7d: idle_proc_next */ + 0x5810b6ef, + 0xf4061fb8, + 0x02f4e61b, + 0x0028f4dd, + 0x00c10ef4, 0x00000000, 0x00000000, 0x00000000, diff --git a/drm/nouveau/nvkm/subdev/pmu/fuc/gk104.fuc4.h b/drm/nouveau/nvkm/subdev/pmu/fuc/gk104.fuc4.h index 61893b1..825b187 100644 --- a/drm/nouveau/nvkm/subdev/pmu/fuc/gk104.fuc4.h +++ b/drm/nouveau/nvkm/subdev/pmu/fuc/gk104.fuc4.h @@ -68,7 +68,7 @@ uint32_t gk104_pmu_data[] = { 0x00000000, 0x00000000, 0x46524550, - 0x00000684, + 0x00000772, 0x00000682, 0x00000000, 0x00000000, @@ -90,8 +90,8 @@ uint32_t gk104_pmu_data[] = { 0x00000000, 0x00000000, 0x5f433249, - 0x00000a9f, - 0x00000942, + 0x00000c1e, + 0x00000ac1, 0x00000000, 0x00000000, 0x00000000, @@ -112,8 +112,8 @@ uint32_t gk104_pmu_data[] = { 0x00000000, 0x00000000, 0x54534554, - 0x00000ac2, - 0x00000aa1, + 0x00000c41, + 0x00000c20, 0x00000000, 0x00000000, 0x00000000, @@ -134,8 +134,8 @@ uint32_t gk104_pmu_data[] = { 0x00000000, 0x00000000, 0x454c4449, - 0x00000ace, - 0x00000acc, + 0x00000c4d, + 0x00000c4b, 0x00000000, 0x00000000, 0x00000000, @@ -834,7 +834,15 @@ uint32_t gk104_pmu_data[] = { 0x00000000, 0x00000000, /* 0x0ccc: memx_train_tail */ -/* 0x0ccc: i2c_scl_map */ +/* 0x0ccc: perf_attr_start */ +/* 0x0ccc: perf_polling_period_us */ + 0x000186a0, +/* 0x0cd0: perf_eng_gr */ +/* 0x0cd1: perf_eng_vdec */ +/* 0x0cd2: perf_eng_mc */ +/* 0x0cd3: perf_eng_pcie */ + 0x00000000, +/* 0x0cd4: i2c_scl_map */ 0x00000400, 0x00000800, 0x00001000, @@ -845,7 +853,7 @@ uint32_t gk104_pmu_data[] = { 0x00020000, 0x00040000, 0x00080000, -/* 0x0cf4: i2c_sda_map */ +/* 0x0cfc: i2c_sda_map */ 0x00100000, 0x00200000, 0x00400000, @@ -911,8 +919,6 @@ uint32_t gk104_pmu_data[] = { 0x00000000, 0x00000000, 0x00000000, - 0x00000000, - 0x00000000, }; uint32_t gk104_pmu_code[] = { @@ -1392,376 +1398,443 @@ uint32_t gk104_pmu_code[] = { 0x00f8d80b, /* 0x0680: memx_init */ /* 0x0682: perf_recv */ - 0x00f800f8, -/* 0x0684: perf_init */ -/* 0x0686: i2c_drive_scl */ - 0x36b000f8, - 0x0e0bf400, - 0x07e007f1, - 0xbd0001d0, -/* 0x0697: i2c_drive_scl_lo */ - 0xf100f804, - 0xd007e407, + 0xa7f100f8, + 0xa3f14f48, + 0xeab85453, + 0x411bf406, + 0xf401d6b0, + 0xb4bd501b, + 0x07f1c4bd, + 0x0c180cd3, + 0xb604bd00, + 0x07f108c4, + 0x0c180cd2, + 0xb604bd00, + 0x07f108c4, + 0x0c180cd1, + 0xb604bd00, + 0x07f108c4, + 0x0c180cd0, + 0xf504bd00, + 0xf402e621, +/* 0x06ce: perf_recv_not_host */ + 0x21f5180e, + 0x07f106e5, + 0x0e980ccc, + 0xf504bd00, + 0xf501ec21, +/* 0x06e3: perf_recv_exit */ + 0xf8021821, +/* 0x06e5: perf_counter_readout */ + 0x08e7f100, + 0x00eecf05, + 0xf1ffeecc, + 0xcf0518d7, + 0xdeff00dd, + 0xd007f1dc, + 0x000d000c, + 0xd7f104bd, + 0xddcf0528, + 0xdcdeff00, + 0x0cd107f1, + 0xbd000d00, + 0x38d7f104, + 0x00ddcf05, + 0xf1dcdeff, + 0x000cd207, + 0x04bd000d, + 0x0548d7f1, + 0xff00ddcf, + 0x07f1dcde, + 0x0d000cd3, + 0xf104bd00, + 0xf10000e7, + 0xf18000e3, + 0xd0050807, + 0x04bd000e, + 0x051807f1, + 0xbd000ed0, + 0x2807f104, + 0x000ed005, + 0x07f104bd, + 0x0ed00538, + 0xf104bd00, + 0xd0054807, + 0x04bd000e, +/* 0x0772: perf_init */ + 0xe7f100f8, + 0xe3f00003, + 0x0c07f100, + 0x000ed005, + 0xe7f104bd, + 0xe3f00002, + 0x1c07f100, + 0x000ed005, + 0x07f104bd, + 0x0ed0052c, + 0xf104bd00, + 0xd0053c07, + 0x04bd000e, + 0x054c07f1, + 0xbd000ed0, + 0x0fe7f104, + 0x38e3f000, + 0x051407f1, + 0xbd000ed0, + 0x70e7f104, + 0x02e3f000, + 0x052407f1, + 0xbd000ed0, + 0x80e7f104, + 0x00e3f000, + 0x053407f1, + 0xbd000ed0, + 0x00e7f104, + 0x00e3f100, + 0x4407f120, + 0x000ed005, + 0x21f504bd, + 0x07f106e5, + 0x0e980ccc, + 0xf504bd00, + 0xf501ec21, + 0xf8021821, +/* 0x0805: i2c_drive_scl */ + 0x0036b000, + 0xf10e0bf4, + 0xd007e007, 0x04bd0001, -/* 0x06a2: i2c_drive_sda */ - 0x36b000f8, - 0x0e0bf400, - 0x07e007f1, - 0xbd0002d0, -/* 0x06b3: i2c_drive_sda_lo */ - 0xf100f804, - 0xd007e407, +/* 0x0816: i2c_drive_scl_lo */ + 0x07f100f8, + 0x01d007e4, + 0xf804bd00, +/* 0x0821: i2c_drive_sda */ + 0x0036b000, + 0xf10e0bf4, + 0xd007e007, 0x04bd0002, -/* 0x06be: i2c_sense_scl */ +/* 0x0832: i2c_drive_sda_lo */ + 0x07f100f8, + 0x02d007e4, + 0xf804bd00, +/* 0x083d: i2c_sense_scl */ + 0x0132f400, + 0x07c437f1, + 0xfd0033cf, + 0x0bf40431, + 0x0131f406, +/* 0x0850: i2c_sense_scl_done */ +/* 0x0852: i2c_sense_sda */ 0x32f400f8, 0xc437f101, 0x0033cf07, - 0xf40431fd, + 0xf40432fd, 0x31f4060b, -/* 0x06d1: i2c_sense_scl_done */ -/* 0x06d3: i2c_sense_sda */ - 0xf400f801, - 0x37f10132, - 0x33cf07c4, - 0x0432fd00, - 0xf4060bf4, -/* 0x06e6: i2c_sense_sda_done */ - 0x00f80131, -/* 0x06e8: i2c_raise_scl */ - 0x47f140f9, - 0x37f00898, - 0x8621f501, -/* 0x06f5: i2c_raise_scl_wait */ - 0xe8e7f106, - 0x6721f403, - 0x06be21f5, - 0xb60901f4, - 0x1bf40142, -/* 0x0709: i2c_raise_scl_done */ - 0xf840fcef, -/* 0x070d: i2c_start */ - 0xbe21f500, - 0x0d11f406, - 0x06d321f5, - 0xf40611f4, -/* 0x071e: i2c_start_rep */ - 0x37f0300e, - 0x8621f500, - 0x0137f006, - 0x06a221f5, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0xe821f550, - 0x0464b606, -/* 0x074b: i2c_start_send */ - 0xf01f11f4, - 0x21f50037, - 0xe7f106a2, - 0x21f41388, - 0x0037f067, - 0x068621f5, - 0x1388e7f1, -/* 0x0767: i2c_start_out */ - 0xf86721f4, -/* 0x0769: i2c_stop */ - 0x0037f000, - 0x068621f5, - 0xf50037f0, - 0xf106a221, - 0xf403e8e7, - 0x37f06721, - 0x8621f501, - 0x88e7f106, - 0x6721f413, - 0xf50137f0, - 0xf106a221, - 0xf41388e7, - 0x00f86721, -/* 0x079c: i2c_bitw */ - 0x06a221f5, +/* 0x0865: i2c_sense_sda_done */ +/* 0x0867: i2c_raise_scl */ + 0xf900f801, + 0x9847f140, + 0x0137f008, + 0x080521f5, +/* 0x0874: i2c_raise_scl_wait */ 0x03e8e7f1, - 0xbb6721f4, + 0xf56721f4, + 0xf4083d21, + 0x42b60901, + 0xef1bf401, +/* 0x0888: i2c_raise_scl_done */ + 0x00f840fc, +/* 0x088c: i2c_start */ + 0x083d21f5, + 0xf50d11f4, + 0xf4085221, + 0x0ef40611, +/* 0x089d: i2c_start_rep */ + 0x0037f030, + 0x080521f5, + 0xf50137f0, + 0xbb082121, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x06e821f5, + 0x086721f5, 0xf40464b6, - 0xe7f11811, - 0x21f41388, - 0x0037f067, - 0x068621f5, +/* 0x08ca: i2c_start_send */ + 0x37f01f11, + 0x2121f500, + 0x88e7f108, + 0x6721f413, + 0xf50037f0, + 0xf1080521, + 0xf41388e7, +/* 0x08e6: i2c_start_out */ + 0x00f86721, +/* 0x08e8: i2c_stop */ + 0xf50037f0, + 0xf0080521, + 0x21f50037, + 0xe7f10821, + 0x21f403e8, + 0x0137f067, + 0x080521f5, 0x1388e7f1, -/* 0x07db: i2c_bitw_out */ - 0xf86721f4, -/* 0x07dd: i2c_bitr */ - 0x0137f000, - 0x06a221f5, - 0x03e8e7f1, - 0xbb6721f4, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x06e821f5, - 0xf40464b6, - 0x21f51b11, - 0x37f006d3, - 0x8621f500, - 0x88e7f106, + 0xf06721f4, + 0x21f50137, + 0xe7f10821, + 0x21f41388, +/* 0x091b: i2c_bitw */ + 0xf500f867, + 0xf1082121, + 0xf403e8e7, + 0x76bb6721, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb6086721, + 0x11f40464, + 0x88e7f118, 0x6721f413, - 0xf4013cf0, -/* 0x0822: i2c_bitr_done */ - 0x00f80131, -/* 0x0824: i2c_get_byte */ - 0xf00057f0, -/* 0x082a: i2c_get_byte_next */ - 0x54b60847, - 0x0076bb01, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b607dd, - 0x2b11f404, - 0xb60553fd, - 0x1bf40142, - 0x0137f0d8, + 0xf50037f0, + 0xf1080521, + 0xf41388e7, +/* 0x095a: i2c_bitw_out */ + 0x00f86721, +/* 0x095c: i2c_bitr */ + 0xf50137f0, + 0xf1082121, + 0xf403e8e7, + 0x76bb6721, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb6086721, + 0x11f40464, + 0x5221f51b, + 0x0037f008, + 0x080521f5, + 0x1388e7f1, + 0xf06721f4, + 0x31f4013c, +/* 0x09a1: i2c_bitr_done */ +/* 0x09a3: i2c_get_byte */ + 0xf000f801, + 0x47f00057, +/* 0x09a9: i2c_get_byte_next */ + 0x0154b608, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x9c21f550, - 0x0464b607, -/* 0x0874: i2c_get_byte_done */ -/* 0x0876: i2c_put_byte */ - 0x47f000f8, -/* 0x0879: i2c_put_byte_next */ - 0x0142b608, - 0xbb3854ff, + 0x5c21f550, + 0x0464b609, + 0xfd2b11f4, + 0x42b60553, + 0xd81bf401, + 0xbb0137f0, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x091b21f5, +/* 0x09f3: i2c_get_byte_done */ + 0xf80464b6, +/* 0x09f5: i2c_put_byte */ + 0x0847f000, +/* 0x09f8: i2c_put_byte_next */ + 0xff0142b6, + 0x76bb3854, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb6091b21, + 0x11f40464, + 0x0046b034, + 0xbbd81bf4, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x079c21f5, + 0x095c21f5, 0xf40464b6, - 0x46b03411, - 0xd81bf400, + 0x76bb0f11, + 0x0136b000, + 0xf4061bf4, +/* 0x0a4e: i2c_put_byte_done */ + 0x00f80132, +/* 0x0a50: i2c_addr */ 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0xdd21f550, - 0x0464b607, - 0xbb0f11f4, - 0x36b00076, - 0x061bf401, -/* 0x08cf: i2c_put_byte_done */ - 0xf80132f4, -/* 0x08d1: i2c_addr */ - 0x0076bb00, + 0x8c21f550, + 0x0464b608, + 0xe72911f4, + 0xb6012ec3, + 0x53fd0134, + 0x0076bb05, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b6070d, - 0x2911f404, - 0x012ec3e7, - 0xfd0134b6, - 0x76bb0553, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0xf550fc04, - 0xb6087621, -/* 0x0916: i2c_addr_done */ - 0x00f80464, -/* 0x0918: i2c_acquire_addr */ - 0xb6f8cec7, - 0xe0b705e4, - 0x00f8d014, -/* 0x0924: i2c_acquire */ - 0x091821f5, - 0xf00421f4, - 0x21f403d9, -/* 0x0933: i2c_release */ - 0xf500f833, - 0xf4091821, - 0xdaf00421, + 0x64b609f5, +/* 0x0a95: i2c_addr_done */ +/* 0x0a97: i2c_acquire_addr */ + 0xc700f804, + 0xe4b6f8ce, + 0x14e0b705, +/* 0x0aa3: i2c_acquire */ + 0xf500f8d0, + 0xf40a9721, + 0xd9f00421, 0x3321f403, -/* 0x0942: i2c_recv */ - 0x32f400f8, - 0xf8c1c701, - 0xb00214b6, - 0x1ff52816, - 0x13a0013a, - 0x32980cf4, - 0xcc13a000, - 0x0031980c, - 0xf90231f4, - 0xf9e0f9d0, - 0x0067f1d0, - 0x0063f100, - 0x01679210, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0x2421f550, - 0x0464b609, - 0xd6b0d0fc, - 0xb31bf500, - 0x0057f000, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0xd121f550, - 0x0464b608, - 0x00d011f5, - 0xbbe0c5c7, +/* 0x0ab2: i2c_release */ + 0x21f500f8, + 0x21f40a97, + 0x03daf004, + 0xf83321f4, +/* 0x0ac1: i2c_recv */ + 0x0132f400, + 0xb6f8c1c7, + 0x16b00214, + 0x3a1ff528, + 0xfc13a001, + 0x0032980c, + 0x0cd413a0, + 0xf4003198, + 0xd0f90231, + 0xd0f9e0f9, + 0x000067f1, + 0x100063f1, + 0xbb016792, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x0aa321f5, + 0xfc0464b6, + 0x00d6b0d0, + 0x00b31bf5, + 0xbb0057f0, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x087621f5, + 0x0a5021f5, 0xf50464b6, - 0xf000ad11, - 0x76bb0157, + 0xc700d011, + 0x76bbe0c5, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb608d121, + 0xb609f521, 0x11f50464, - 0x76bb008a, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0xf550fc04, - 0xb6082421, - 0x11f40464, - 0xe05bcb6a, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0x6921f550, - 0x0464b607, - 0xbd025bb9, - 0x430ef474, -/* 0x0a48: i2c_recv_not_rd08 */ - 0xf401d6b0, - 0x57f03d1b, - 0xd121f500, - 0x3311f408, - 0xf5e0c5c7, - 0xf4087621, - 0x57f02911, - 0xd121f500, - 0x1f11f408, - 0xf5e0b5c7, - 0xf4087621, - 0x21f51511, - 0x74bd0769, - 0xf408c5c7, - 0x32f4091b, - 0x030ef402, -/* 0x0a88: i2c_recv_not_wr08 */ -/* 0x0a88: i2c_recv_done */ - 0xf5f8cec7, - 0xfc093321, - 0xf4d0fce0, - 0x7cb90a12, - 0xe621f502, -/* 0x0a9d: i2c_recv_exit */ -/* 0x0a9f: i2c_init */ + 0x57f000ad, + 0x0076bb01, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b60a50, + 0x8a11f504, + 0x0076bb00, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b609a3, + 0x6a11f404, + 0xbbe05bcb, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x08e821f5, + 0xb90464b6, + 0x74bd025b, +/* 0x0bc7: i2c_recv_not_rd08 */ + 0xb0430ef4, + 0x1bf401d6, + 0x0057f03d, + 0x0a5021f5, + 0xc73311f4, + 0x21f5e0c5, + 0x11f409f5, + 0x0057f029, + 0x0a5021f5, + 0xc71f11f4, + 0x21f5e0b5, + 0x11f409f5, + 0xe821f515, + 0xc774bd08, + 0x1bf408c5, + 0x0232f409, +/* 0x0c07: i2c_recv_not_wr08 */ +/* 0x0c07: i2c_recv_done */ + 0xc7030ef4, + 0x21f5f8ce, + 0xe0fc0ab2, + 0x12f4d0fc, + 0x027cb90a, + 0x02e621f5, +/* 0x0c1c: i2c_recv_exit */ +/* 0x0c1e: i2c_init */ + 0x00f800f8, +/* 0x0c20: test_recv */ + 0x05d817f1, + 0xb60011cf, + 0x07f10110, + 0x01d005d8, + 0xf104bd00, + 0xf1d900e7, + 0xf5134fe3, + 0xf8021821, +/* 0x0c41: test_init */ + 0x00e7f100, + 0x1821f508, +/* 0x0c4b: idle_recv */ 0xf800f802, -/* 0x0aa1: test_recv */ - 0xd817f100, - 0x0011cf05, - 0xf10110b6, - 0xd005d807, - 0x04bd0001, - 0xd900e7f1, - 0x134fe3f1, - 0x021821f5, -/* 0x0ac2: test_init */ - 0xe7f100f8, - 0x21f50800, - 0x00f80218, -/* 0x0acc: idle_recv */ -/* 0x0ace: idle */ - 0x31f400f8, - 0xd417f100, - 0x0011cf05, - 0xf10110b6, - 0xd005d407, - 0x04bd0001, -/* 0x0ae4: idle_loop */ - 0xf45817f0, -/* 0x0aea: idle_proc */ -/* 0x0aea: idle_proc_exec */ - 0x10f90232, - 0xf5021eb9, - 0xfc02ef21, - 0x0911f410, - 0xf40231f4, -/* 0x0afe: idle_proc_next */ - 0x10b6ef0e, - 0x061fb858, - 0xf4e61bf4, - 0x28f4dd02, - 0xc10ef400, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, +/* 0x0c4d: idle */ + 0x0031f400, + 0x05d417f1, + 0xb60011cf, + 0x07f10110, + 0x01d005d4, +/* 0x0c63: idle_loop */ + 0xf004bd00, + 0x32f45817, +/* 0x0c69: idle_proc */ +/* 0x0c69: idle_proc_exec */ + 0xb910f902, + 0x21f5021e, + 0x10fc02ef, + 0xf40911f4, + 0x0ef40231, +/* 0x0c7d: idle_proc_next */ + 0x5810b6ef, + 0xf4061fb8, + 0x02f4e61b, + 0x0028f4dd, + 0x00c10ef4, 0x00000000, 0x00000000, 0x00000000, diff --git a/drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h b/drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h index 8a2b628..2bd55ae 100644 --- a/drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h +++ b/drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h @@ -68,7 +68,7 @@ uint32_t gk208_pmu_data[] = { 0x00000000, 0x00000000, 0x46524550, - 0x00000625, + 0x00000704, 0x00000623, 0x00000000, 0x00000000, @@ -90,8 +90,8 @@ uint32_t gk208_pmu_data[] = { 0x00000000, 0x00000000, 0x5f433249, - 0x00000a29, - 0x000008d0, + 0x00000b90, + 0x00000a37, 0x00000000, 0x00000000, 0x00000000, @@ -112,8 +112,8 @@ uint32_t gk208_pmu_data[] = { 0x00000000, 0x00000000, 0x54534554, - 0x00000a4a, - 0x00000a2b, + 0x00000bb1, + 0x00000b92, 0x00000000, 0x00000000, 0x00000000, @@ -134,8 +134,8 @@ uint32_t gk208_pmu_data[] = { 0x00000000, 0x00000000, 0x454c4449, - 0x00000a55, - 0x00000a53, + 0x00000bbc, + 0x00000bba, 0x00000000, 0x00000000, 0x00000000, @@ -834,7 +834,15 @@ uint32_t gk208_pmu_data[] = { 0x00000000, 0x00000000, /* 0x0ccc: memx_train_tail */ -/* 0x0ccc: i2c_scl_map */ +/* 0x0ccc: perf_attr_start */ +/* 0x0ccc: perf_polling_period_us */ + 0x000186a0, +/* 0x0cd0: perf_eng_gr */ +/* 0x0cd1: perf_eng_vdec */ +/* 0x0cd2: perf_eng_mc */ +/* 0x0cd3: perf_eng_pcie */ + 0x00000000, +/* 0x0cd4: i2c_scl_map */ 0x00000400, 0x00000800, 0x00001000, @@ -845,7 +853,7 @@ uint32_t gk208_pmu_data[] = { 0x00020000, 0x00040000, 0x00080000, -/* 0x0cf4: i2c_sda_map */ +/* 0x0cfc: i2c_sda_map */ 0x00100000, 0x00200000, 0x00400000, @@ -911,8 +919,6 @@ uint32_t gk208_pmu_data[] = { 0x00000000, 0x00000000, 0x00000000, - 0x00000000, - 0x00000000, }; uint32_t gk208_pmu_code[] = { @@ -1368,362 +1374,429 @@ uint32_t gk208_pmu_code[] = { 0xf8dc0bf4, /* 0x0621: memx_init */ /* 0x0623: perf_recv */ - 0xf800f800, -/* 0x0625: perf_init */ -/* 0x0627: i2c_drive_scl */ - 0xb000f800, - 0x0bf40036, - 0x07e0400d, - 0xbd0001f6, -/* 0x0637: i2c_drive_scl_lo */ - 0x4000f804, - 0x01f607e4, - 0xf804bd00, -/* 0x0641: i2c_drive_sda */ - 0x0036b000, - 0x400d0bf4, - 0x02f607e0, - 0xf804bd00, -/* 0x0651: i2c_drive_sda_lo */ - 0x07e44000, - 0xbd0002f6, -/* 0x065b: i2c_sense_scl */ - 0xf400f804, - 0xc4430132, - 0x0033cf07, - 0xf40431fd, - 0x31f4060b, -/* 0x066d: i2c_sense_scl_done */ -/* 0x066f: i2c_sense_sda */ - 0xf400f801, - 0xc4430132, - 0x0033cf07, - 0xf40432fd, - 0x31f4060b, -/* 0x0681: i2c_sense_sda_done */ -/* 0x0683: i2c_raise_scl */ - 0xf900f801, - 0x08984440, - 0x277e0103, -/* 0x068e: i2c_raise_scl_wait */ - 0xe84e0006, - 0x005d7e03, - 0x065b7e00, - 0x0901f400, - 0xf40142b6, -/* 0x06a2: i2c_raise_scl_done */ - 0x40fcef1b, -/* 0x06a6: i2c_start */ - 0x5b7e00f8, - 0x11f40006, - 0x066f7e0d, - 0x0611f400, -/* 0x06b7: i2c_start_rep */ - 0x032e0ef4, - 0x06277e00, + 0xf100f800, + 0xf14f48a7, + 0xa65453a3, + 0x411bf4ea, + 0xf401d6b0, + 0xb4bd501b, + 0x07f1c4bd, + 0x0c180cd3, + 0xb604bd00, + 0x07f108c4, + 0x0c180cd2, + 0xb604bd00, + 0x07f108c4, + 0x0c180cd1, + 0xb604bd00, + 0x07f108c4, + 0x0c180cd0, + 0x7e04bd00, + 0xf40002b6, +/* 0x066e: perf_recv_not_host */ + 0x857e180e, + 0x07f10006, + 0x0e980ccc, + 0xf504bd00, + 0x7e01ca21, +/* 0x0683: perf_recv_exit */ + 0xf80001f5, +/* 0x0685: perf_counter_readout */ + 0x05084e00, + 0xcc00eecf, + 0x184dffee, + 0x00ddcf05, + 0xf1dcdeff, + 0x200cd007, + 0x4d04bd0d, + 0xddcf0528, + 0xdcdeff00, + 0x0cd107f1, + 0x04bd0d20, + 0xcf05384d, + 0xdeff00dd, + 0xd207f1dc, + 0xbd0d200c, + 0x05484d04, + 0xff00ddcf, + 0x07f1dcde, + 0x0d200cd3, + 0xe7f104bd, + 0xe3f10000, + 0x08408000, + 0x000ef605, + 0x184004bd, + 0x000ef605, + 0x284004bd, + 0x000ef605, + 0x384004bd, + 0x000ef605, + 0x484004bd, + 0x000ef605, + 0x00f804bd, +/* 0x0704: perf_init */ + 0x0003e7f1, + 0x4000e3f0, + 0x0ef6050c, + 0xf104bd00, + 0xf00002e7, + 0x1c4000e3, + 0x000ef605, + 0x2c4004bd, + 0x000ef605, + 0x3c4004bd, + 0x000ef605, + 0x4c4004bd, + 0x000ef605, + 0xe7f104bd, + 0xe3f0000f, + 0x05144038, + 0xbd000ef6, + 0x70e7f104, + 0x02e3f000, + 0xf6052440, + 0x04bd000e, + 0x0080e7f1, + 0x4000e3f0, + 0x0ef60534, + 0xf104bd00, + 0xf10000e7, + 0x402000e3, + 0x0ef60544, + 0x7e04bd00, + 0xf1000685, + 0x980ccc07, + 0x04bd000e, + 0x01ca21f5, + 0x0001f57e, +/* 0x078e: i2c_drive_scl */ + 0x36b000f8, + 0x0d0bf400, + 0xf607e040, + 0x04bd0001, +/* 0x079e: i2c_drive_scl_lo */ + 0xe44000f8, + 0x0001f607, + 0x00f804bd, +/* 0x07a8: i2c_drive_sda */ + 0xf40036b0, + 0xe0400d0b, + 0x0002f607, + 0x00f804bd, +/* 0x07b8: i2c_drive_sda_lo */ + 0xf607e440, + 0x04bd0002, +/* 0x07c2: i2c_sense_scl */ + 0x32f400f8, + 0x07c44301, + 0xfd0033cf, + 0x0bf40431, + 0x0131f406, +/* 0x07d4: i2c_sense_scl_done */ +/* 0x07d6: i2c_sense_sda */ + 0x32f400f8, + 0x07c44301, + 0xfd0033cf, + 0x0bf40432, + 0x0131f406, +/* 0x07e8: i2c_sense_sda_done */ +/* 0x07ea: i2c_raise_scl */ + 0x40f900f8, + 0x03089844, + 0x078e7e01, +/* 0x07f5: i2c_raise_scl_wait */ + 0x03e84e00, + 0x00005d7e, + 0x0007c27e, + 0xb60901f4, + 0x1bf40142, +/* 0x0809: i2c_raise_scl_done */ + 0xf840fcef, +/* 0x080d: i2c_start */ + 0x07c27e00, + 0x0d11f400, + 0x0007d67e, + 0xf40611f4, +/* 0x081e: i2c_start_rep */ + 0x00032e0e, + 0x00078e7e, + 0xa87e0103, + 0x76bb0007, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0x7e50fc04, + 0xb60007ea, + 0x11f40464, +/* 0x0849: i2c_start_send */ + 0x7e00031d, + 0x4e0007a8, + 0x5d7e1388, + 0x00030000, + 0x00078e7e, + 0x7e13884e, +/* 0x0863: i2c_start_out */ + 0xf800005d, +/* 0x0865: i2c_stop */ + 0x7e000300, + 0x0300078e, + 0x07a87e00, + 0x03e84e00, + 0x00005d7e, + 0x8e7e0103, + 0x884e0007, + 0x005d7e13, 0x7e010300, - 0xbb000641, + 0x4e0007a8, + 0x5d7e1388, + 0x00f80000, +/* 0x0894: i2c_bitw */ + 0x0007a87e, + 0x7e03e84e, + 0xbb00005d, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x0006837e, + 0x0007ea7e, 0xf40464b6, -/* 0x06e2: i2c_start_send */ - 0x00031d11, - 0x0006417e, - 0x7e13884e, - 0x0300005d, - 0x06277e00, - 0x13884e00, - 0x00005d7e, -/* 0x06fc: i2c_start_out */ -/* 0x06fe: i2c_stop */ - 0x000300f8, - 0x0006277e, - 0x417e0003, - 0xe84e0006, - 0x005d7e03, - 0x7e010300, - 0x4e000627, + 0x884e1711, + 0x005d7e13, + 0x7e000300, + 0x4e00078e, 0x5d7e1388, - 0x01030000, - 0x0006417e, - 0x7e13884e, - 0xf800005d, -/* 0x072d: i2c_bitw */ - 0x06417e00, - 0x03e84e00, - 0x00005d7e, +/* 0x08d2: i2c_bitw_out */ + 0x00f80000, +/* 0x08d4: i2c_bitr */ + 0xa87e0103, + 0xe84e0007, + 0x005d7e03, + 0x0076bb00, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0xea7e50fc, + 0x64b60007, + 0x1a11f404, + 0x0007d67e, + 0x8e7e0003, + 0x884e0007, + 0x005d7e13, + 0x013cf000, +/* 0x0917: i2c_bitr_done */ + 0xf80131f4, +/* 0x0919: i2c_get_byte */ + 0x04000500, +/* 0x091d: i2c_get_byte_next */ + 0x0154b608, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x06837e50, + 0x08d47e50, 0x0464b600, - 0x4e1711f4, - 0x5d7e1388, - 0x00030000, - 0x0006277e, - 0x7e13884e, -/* 0x076b: i2c_bitw_out */ - 0xf800005d, -/* 0x076d: i2c_bitr */ - 0x7e010300, - 0x4e000641, - 0x5d7e03e8, - 0x76bb0000, + 0xfd2a11f4, + 0x42b60553, + 0xd81bf401, + 0x76bb0103, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0x7e50fc04, - 0xb6000683, - 0x11f40464, - 0x066f7e1a, - 0x7e000300, - 0x4e000627, - 0x5d7e1388, - 0x3cf00000, - 0x0131f401, -/* 0x07b0: i2c_bitr_done */ -/* 0x07b2: i2c_get_byte */ - 0x000500f8, -/* 0x07b6: i2c_get_byte_next */ - 0x54b60804, - 0x0076bb01, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x6d7e50fc, - 0x64b60007, - 0x2a11f404, - 0xb60553fd, - 0x1bf40142, - 0xbb0103d8, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x00072d7e, -/* 0x07ff: i2c_get_byte_done */ - 0xf80464b6, -/* 0x0801: i2c_put_byte */ -/* 0x0803: i2c_put_byte_next */ - 0xb6080400, - 0x54ff0142, - 0x0076bb38, + 0xb6000894, +/* 0x0966: i2c_get_byte_done */ + 0x00f80464, +/* 0x0968: i2c_put_byte */ +/* 0x096a: i2c_put_byte_next */ + 0x42b60804, + 0x3854ff01, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x08947e50, + 0x0464b600, + 0xb03411f4, + 0x1bf40046, + 0x0076bbd8, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, - 0x2d7e50fc, - 0x64b60007, - 0x3411f404, - 0xf40046b0, - 0x76bbd81b, + 0xd47e50fc, + 0x64b60008, + 0x0f11f404, + 0xb00076bb, + 0x1bf40136, + 0x0132f406, +/* 0x09c0: i2c_put_byte_done */ +/* 0x09c2: i2c_addr */ + 0x76bb00f8, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0x7e50fc04, - 0xb600076d, + 0xb600080d, 0x11f40464, - 0x0076bb0f, - 0xf40136b0, - 0x32f4061b, -/* 0x0859: i2c_put_byte_done */ -/* 0x085b: i2c_addr */ - 0xbb00f801, + 0x2ec3e729, + 0x0134b601, + 0xbb0553fd, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x0006a67e, - 0xf40464b6, - 0xc3e72911, - 0x34b6012e, - 0x0553fd01, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0x08017e50, - 0x0464b600, -/* 0x08a0: i2c_addr_done */ -/* 0x08a2: i2c_acquire_addr */ - 0xcec700f8, - 0x05e4b6f8, - 0xd014e0b7, -/* 0x08ae: i2c_acquire */ - 0xa27e00f8, - 0x047e0008, - 0xd9f00000, + 0x0009687e, +/* 0x0a07: i2c_addr_done */ + 0xf80464b6, +/* 0x0a09: i2c_acquire_addr */ + 0xf8cec700, + 0xb705e4b6, + 0xf8d014e0, +/* 0x0a15: i2c_acquire */ + 0x0a097e00, + 0x00047e00, + 0x03d9f000, + 0x00002e7e, +/* 0x0a26: i2c_release */ + 0x097e00f8, + 0x047e000a, + 0xdaf00000, 0x002e7e03, -/* 0x08bf: i2c_release */ - 0x7e00f800, - 0x7e0008a2, - 0xf0000004, - 0x2e7e03da, - 0x00f80000, -/* 0x08d0: i2c_recv */ - 0xc70132f4, - 0x14b6f8c1, - 0x2816b002, - 0x01371ff5, - 0x0cf413b8, - 0x00329800, - 0x0ccc13b8, - 0x00319800, - 0xf90231f4, - 0xf9e0f9d0, - 0x0067f1d0, - 0x0063f100, - 0x01679210, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0x08ae7e50, - 0x0464b600, - 0xd6b0d0fc, - 0xb01bf500, - 0xbb000500, +/* 0x0a37: i2c_recv */ + 0xf400f800, + 0xc1c70132, + 0x0214b6f8, + 0xf52816b0, + 0xb801371f, + 0x000cfc13, + 0xb8003298, + 0x000cd413, + 0xf4003198, + 0xd0f90231, + 0xd0f9e0f9, + 0x000067f1, + 0x100063f1, + 0xbb016792, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x00085b7e, - 0xf50464b6, - 0xc700cc11, - 0x76bbe0c5, + 0x000a157e, + 0xfc0464b6, + 0x00d6b0d0, + 0x00b01bf5, + 0x76bb0005, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0x7e50fc04, - 0xb6000801, + 0xb60009c2, 0x11f50464, - 0x010500a9, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0x085b7e50, - 0x0464b600, - 0x008711f5, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0x07b27e50, - 0x0464b600, - 0xcb6711f4, - 0x76bbe05b, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0x7e50fc04, - 0xb60006fe, - 0x5bb20464, - 0x0ef474bd, -/* 0x09d5: i2c_recv_not_rd08 */ - 0x01d6b041, - 0x053b1bf4, - 0x085b7e00, - 0x3211f400, - 0x7ee0c5c7, - 0xf4000801, - 0x00052811, - 0x00085b7e, - 0xc71f11f4, - 0x017ee0b5, - 0x11f40008, - 0x06fe7e15, - 0xc774bd00, - 0x1bf408c5, - 0x0232f409, -/* 0x0a13: i2c_recv_not_wr08 */ -/* 0x0a13: i2c_recv_done */ - 0xc7030ef4, - 0xbf7ef8ce, - 0xe0fc0008, - 0x12f4d0fc, - 0x7e7cb209, -/* 0x0a27: i2c_recv_exit */ - 0xf80002b6, -/* 0x0a29: i2c_init */ -/* 0x0a2b: test_recv */ - 0x4100f800, - 0x11cf0458, + 0xc5c700cc, + 0x0076bbe0, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x687e50fc, + 0x64b60009, + 0xa911f504, + 0xbb010500, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x0009c27e, + 0xf50464b6, + 0xbb008711, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x0009197e, + 0xf40464b6, + 0x5bcb6711, + 0x0076bbe0, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x657e50fc, + 0x64b60008, + 0xbd5bb204, + 0x410ef474, +/* 0x0b3c: i2c_recv_not_rd08 */ + 0xf401d6b0, + 0x00053b1b, + 0x0009c27e, + 0xc73211f4, + 0x687ee0c5, + 0x11f40009, + 0x7e000528, + 0xf40009c2, + 0xb5c71f11, + 0x09687ee0, + 0x1511f400, + 0x0008657e, + 0xc5c774bd, + 0x091bf408, + 0xf40232f4, +/* 0x0b7a: i2c_recv_not_wr08 */ +/* 0x0b7a: i2c_recv_done */ + 0xcec7030e, + 0x0a267ef8, + 0xfce0fc00, + 0x0912f4d0, + 0xb67e7cb2, +/* 0x0b8e: i2c_recv_exit */ + 0x00f80002, +/* 0x0b90: i2c_init */ +/* 0x0b92: test_recv */ + 0x584100f8, + 0x0011cf04, + 0x400110b6, + 0x01f60458, + 0xf104bd00, + 0xf1d900e7, + 0x7e134fe3, + 0xf80001f5, +/* 0x0bb1: test_init */ + 0x08004e00, + 0x0001f57e, +/* 0x0bba: idle_recv */ + 0x00f800f8, +/* 0x0bbc: idle */ + 0x410031f4, + 0x11cf0454, 0x0110b600, - 0xf6045840, + 0xf6045440, 0x04bd0001, - 0xd900e7f1, - 0x134fe3f1, - 0x0001f57e, -/* 0x0a4a: test_init */ - 0x004e00f8, - 0x01f57e08, -/* 0x0a53: idle_recv */ - 0xf800f800, -/* 0x0a55: idle */ - 0x0031f400, - 0xcf045441, - 0x10b60011, - 0x04544001, - 0xbd0001f6, -/* 0x0a69: idle_loop */ - 0xf4580104, -/* 0x0a6e: idle_proc */ -/* 0x0a6e: idle_proc_exec */ - 0x10f90232, - 0xbf7e1eb2, - 0x10fc0002, - 0xf40911f4, - 0x0ef40231, -/* 0x0a81: idle_proc_next */ - 0x5810b6f0, - 0x1bf41fa6, - 0xe002f4e8, - 0xf40028f4, - 0x0000c60e, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, +/* 0x0bd0: idle_loop */ + 0x32f45801, +/* 0x0bd5: idle_proc */ +/* 0x0bd5: idle_proc_exec */ + 0xb210f902, + 0x02bf7e1e, + 0xf410fc00, + 0x31f40911, + 0xf00ef402, +/* 0x0be8: idle_proc_next */ + 0xa65810b6, + 0xe81bf41f, + 0xf4e002f4, + 0x0ef40028, + 0x000000c6, 0x00000000, }; diff --git a/drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h b/drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h index 5165692..e57511f 100644 --- a/drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h +++ b/drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h @@ -68,7 +68,7 @@ uint32_t gt215_pmu_data[] = { 0x00000000, 0x00000000, 0x46524550, - 0x0000083b, + 0x00000919, 0x00000839, 0x00000000, 0x00000000, @@ -90,8 +90,8 @@ uint32_t gt215_pmu_data[] = { 0x00000000, 0x00000000, 0x5f433249, - 0x00000c6b, - 0x00000b0e, + 0x00000dd5, + 0x00000c78, 0x00000000, 0x00000000, 0x00000000, @@ -112,8 +112,8 @@ uint32_t gt215_pmu_data[] = { 0x00000000, 0x00000000, 0x54534554, - 0x00000c94, - 0x00000c6d, + 0x00000dfe, + 0x00000dd7, 0x00000000, 0x00000000, 0x00000000, @@ -134,8 +134,8 @@ uint32_t gt215_pmu_data[] = { 0x00000000, 0x00000000, 0x454c4449, - 0x00000ca0, - 0x00000c9e, + 0x00000e0a, + 0x00000e08, 0x00000000, 0x00000000, 0x00000000, @@ -834,7 +834,14 @@ uint32_t gt215_pmu_data[] = { 0x00000000, 0x00000000, /* 0x0ccc: memx_train_tail */ -/* 0x0ccc: i2c_scl_map */ +/* 0x0ccc: perf_attr_start */ +/* 0x0ccc: perf_polling_period_us */ + 0x000186a0, +/* 0x0cd0: perf_eng_gr */ +/* 0x0cd1: perf_eng_vdec */ +/* 0x0cd2: perf_eng_mc */ + 0x00000000, +/* 0x0cd4: i2c_scl_map */ 0x00001000, 0x00004000, 0x00010000, @@ -845,7 +852,7 @@ uint32_t gt215_pmu_data[] = { 0x01000000, 0x04000000, 0x10000000, -/* 0x0cf4: i2c_sda_map */ +/* 0x0cfc: i2c_sda_map */ 0x00002000, 0x00008000, 0x00020000, @@ -856,7 +863,7 @@ uint32_t gt215_pmu_data[] = { 0x02000000, 0x08000000, 0x20000000, -/* 0x0d1c: i2c_ctrl */ +/* 0x0d24: i2c_ctrl */ 0x0000e138, 0x0000e150, 0x0000e168, @@ -912,8 +919,6 @@ uint32_t gt215_pmu_data[] = { 0x00000000, 0x00000000, 0x00000000, - 0x00000000, - 0x00000000, }; uint32_t gt215_pmu_code[] = { @@ -1511,352 +1516,483 @@ uint32_t gt215_pmu_code[] = { /* 0x0837: memx_init */ 0xf800f8d8, /* 0x0839: perf_recv */ -/* 0x083b: perf_init */ - 0xf800f800, -/* 0x083d: i2c_drive_scl */ - 0x0036b000, - 0xf1110bf4, - 0xb607e007, - 0x01d00604, + 0x48a7f100, + 0x53a3f14f, + 0x06eab854, + 0xb0351bf4, + 0x1bf401d6, + 0xbdb4bd44, + 0xd207f1c4, + 0x000c180c, + 0xc4b604bd, + 0xd107f108, + 0x000c180c, + 0xc4b604bd, + 0xd007f108, + 0x000c180c, + 0x21f504bd, + 0x0ef40337, +/* 0x0879: perf_recv_not_host */ + 0x9021f518, + 0xcc07f108, + 0x000e980c, + 0x21f504bd, + 0x21f5022b, +/* 0x088e: perf_recv_exit */ + 0x00f80257, +/* 0x0890: perf_counter_readout */ + 0x0508e7f1, + 0xcf06e4b6, + 0xeecc00ee, + 0x18d7f1ff, + 0x06d4b605, + 0xff00ddcf, + 0x07f1dcde, + 0x0d000cd0, + 0xf104bd00, + 0xb60528d7, + 0xddcf06d4, + 0xdcdeff00, + 0x0cd107f1, + 0xbd000d00, + 0x38d7f104, + 0x06d4b605, + 0xff00ddcf, + 0x07f1dcde, + 0x0d000cd2, + 0xf104bd00, + 0xf10000e7, + 0xf18000e3, + 0xb6050807, + 0x0ed00604, + 0xf104bd00, + 0xb6051807, + 0x0ed00604, + 0xf104bd00, + 0xb6052807, + 0x0ed00604, + 0xf104bd00, + 0xb6053807, + 0x0ed00604, 0xf804bd00, -/* 0x0851: i2c_drive_scl_lo */ - 0xe407f100, - 0x0604b607, - 0xbd0001d0, -/* 0x085f: i2c_drive_sda */ - 0xb000f804, +/* 0x0919: perf_init */ + 0x03e7f100, + 0x00e3f000, + 0x050c07f1, + 0xd00604b6, + 0x04bd000e, + 0x0002e7f1, + 0xf100e3f0, + 0xb6051c07, + 0x0ed00604, + 0xf104bd00, + 0xb6052c07, + 0x0ed00604, + 0xf104bd00, + 0xb6053c07, + 0x0ed00604, + 0xf104bd00, + 0xf0000de7, + 0x07f100e3, + 0x04b60514, + 0x000ed006, + 0xe7f104bd, + 0xe3f00070, + 0x2407f100, + 0x0604b605, + 0xbd000ed0, + 0x00e7f104, + 0x00e3f001, + 0x053407f1, + 0xd00604b6, + 0x04bd000e, + 0x089021f5, + 0x0ccc07f1, + 0xbd000e98, + 0x2b21f504, + 0x5721f502, +/* 0x09a7: i2c_drive_scl */ + 0xb000f802, 0x0bf40036, 0xe007f111, 0x0604b607, - 0xbd0002d0, -/* 0x0873: i2c_drive_sda_lo */ + 0xbd0001d0, +/* 0x09bb: i2c_drive_scl_lo */ 0xf100f804, 0xb607e407, + 0x01d00604, + 0xf804bd00, +/* 0x09c9: i2c_drive_sda */ + 0x0036b000, + 0xf1110bf4, + 0xb607e007, 0x02d00604, 0xf804bd00, -/* 0x0881: i2c_sense_scl */ - 0x0132f400, - 0x07c437f1, - 0xcf0634b6, - 0x31fd0033, - 0x060bf404, -/* 0x0897: i2c_sense_scl_done */ - 0xf80131f4, -/* 0x0899: i2c_sense_sda */ - 0x0132f400, - 0x07c437f1, - 0xcf0634b6, - 0x32fd0033, - 0x060bf404, -/* 0x08af: i2c_sense_sda_done */ - 0xf80131f4, -/* 0x08b1: i2c_raise_scl */ - 0xf140f900, - 0xf0089847, - 0x21f50137, -/* 0x08be: i2c_raise_scl_wait */ - 0xe7f1083d, - 0x21f403e8, - 0x8121f57f, - 0x0901f408, - 0xf40142b6, -/* 0x08d2: i2c_raise_scl_done */ - 0x40fcef1b, -/* 0x08d6: i2c_start */ - 0x21f500f8, - 0x11f40881, - 0x9921f50d, - 0x0611f408, -/* 0x08e7: i2c_start_rep */ - 0xf0300ef4, - 0x21f50037, - 0x37f0083d, - 0x5f21f501, - 0x0076bb08, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b608b1, - 0x1f11f404, -/* 0x0914: i2c_start_send */ +/* 0x09dd: i2c_drive_sda_lo */ + 0xe407f100, + 0x0604b607, + 0xbd0002d0, +/* 0x09eb: i2c_sense_scl */ + 0xf400f804, + 0x37f10132, + 0x34b607c4, + 0x0033cf06, + 0xf40431fd, + 0x31f4060b, +/* 0x0a01: i2c_sense_scl_done */ +/* 0x0a03: i2c_sense_sda */ + 0xf400f801, + 0x37f10132, + 0x34b607c4, + 0x0033cf06, + 0xf40432fd, + 0x31f4060b, +/* 0x0a19: i2c_sense_sda_done */ +/* 0x0a1b: i2c_raise_scl */ + 0xf900f801, + 0x9847f140, + 0x0137f008, + 0x09a721f5, +/* 0x0a28: i2c_raise_scl_wait */ + 0x03e8e7f1, + 0xf57f21f4, + 0xf409eb21, + 0x42b60901, + 0xef1bf401, +/* 0x0a3c: i2c_raise_scl_done */ + 0x00f840fc, +/* 0x0a40: i2c_start */ + 0x09eb21f5, + 0xf50d11f4, + 0xf40a0321, + 0x0ef40611, +/* 0x0a51: i2c_start_rep */ + 0x0037f030, + 0x09a721f5, + 0xf50137f0, + 0xbb09c921, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x0a1b21f5, + 0xf40464b6, +/* 0x0a7e: i2c_start_send */ + 0x37f01f11, + 0xc921f500, + 0x88e7f109, + 0x7f21f413, 0xf50037f0, - 0xf1085f21, + 0xf109a721, 0xf41388e7, - 0x37f07f21, - 0x3d21f500, - 0x88e7f108, - 0x7f21f413, -/* 0x0930: i2c_start_out */ -/* 0x0932: i2c_stop */ - 0x37f000f8, - 0x3d21f500, - 0x0037f008, - 0x085f21f5, - 0x03e8e7f1, +/* 0x0a9a: i2c_start_out */ + 0x00f87f21, +/* 0x0a9c: i2c_stop */ + 0xf50037f0, + 0xf009a721, + 0x21f50037, + 0xe7f109c9, + 0x21f403e8, + 0x0137f07f, + 0x09a721f5, + 0x1388e7f1, 0xf07f21f4, 0x21f50137, - 0xe7f1083d, + 0xe7f109c9, 0x21f41388, - 0x0137f07f, - 0x085f21f5, - 0x1388e7f1, - 0xf87f21f4, -/* 0x0965: i2c_bitw */ - 0x5f21f500, - 0xe8e7f108, - 0x7f21f403, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0xb121f550, - 0x0464b608, - 0xf11811f4, - 0xf41388e7, - 0x37f07f21, - 0x3d21f500, - 0x88e7f108, +/* 0x0acf: i2c_bitw */ + 0xf500f87f, + 0xf109c921, + 0xf403e8e7, + 0x76bb7f21, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb60a1b21, + 0x11f40464, + 0x88e7f118, 0x7f21f413, -/* 0x09a4: i2c_bitw_out */ -/* 0x09a6: i2c_bitr */ - 0x37f000f8, - 0x5f21f501, - 0xe8e7f108, - 0x7f21f403, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0xb121f550, - 0x0464b608, - 0xf51b11f4, - 0xf0089921, - 0x21f50037, - 0xe7f1083d, - 0x21f41388, - 0x013cf07f, -/* 0x09eb: i2c_bitr_done */ - 0xf80131f4, -/* 0x09ed: i2c_get_byte */ - 0x0057f000, -/* 0x09f3: i2c_get_byte_next */ - 0xb60847f0, - 0x76bb0154, + 0xf50037f0, + 0xf109a721, + 0xf41388e7, +/* 0x0b0e: i2c_bitw_out */ + 0x00f87f21, +/* 0x0b10: i2c_bitr */ + 0xf50137f0, + 0xf109c921, + 0xf403e8e7, + 0x76bb7f21, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb609a621, + 0xb60a1b21, 0x11f40464, - 0x0553fd2b, - 0xf40142b6, - 0x37f0d81b, - 0x0076bb01, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b60965, -/* 0x0a3d: i2c_get_byte_done */ -/* 0x0a3f: i2c_put_byte */ - 0xf000f804, -/* 0x0a42: i2c_put_byte_next */ - 0x42b60847, - 0x3854ff01, + 0x0321f51b, + 0x0037f00a, + 0x09a721f5, + 0x1388e7f1, + 0xf07f21f4, + 0x31f4013c, +/* 0x0b55: i2c_bitr_done */ +/* 0x0b57: i2c_get_byte */ + 0xf000f801, + 0x47f00057, +/* 0x0b5d: i2c_get_byte_next */ + 0x0154b608, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x6521f550, - 0x0464b609, - 0xb03411f4, - 0x1bf40046, - 0x0076bbd8, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b609a6, - 0x0f11f404, - 0xb00076bb, - 0x1bf40136, - 0x0132f406, -/* 0x0a98: i2c_put_byte_done */ -/* 0x0a9a: i2c_addr */ - 0x76bb00f8, + 0x1021f550, + 0x0464b60b, + 0xfd2b11f4, + 0x42b60553, + 0xd81bf401, + 0xbb0137f0, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x0acf21f5, +/* 0x0ba7: i2c_get_byte_done */ + 0xf80464b6, +/* 0x0ba9: i2c_put_byte */ + 0x0847f000, +/* 0x0bac: i2c_put_byte_next */ + 0xff0142b6, + 0x76bb3854, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb608d621, + 0xb60acf21, 0x11f40464, - 0x2ec3e729, - 0x0134b601, - 0xbb0553fd, + 0x0046b034, + 0xbbd81bf4, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x0a3f21f5, -/* 0x0adf: i2c_addr_done */ - 0xf80464b6, -/* 0x0ae1: i2c_acquire_addr */ - 0xf8cec700, - 0xb702e4b6, - 0x980d1ce0, - 0x00f800ee, -/* 0x0af0: i2c_acquire */ - 0x0ae121f5, - 0xf00421f4, - 0x21f403d9, -/* 0x0aff: i2c_release */ - 0xf500f83f, - 0xf40ae121, - 0xdaf00421, - 0x3f21f403, -/* 0x0b0e: i2c_recv */ - 0x32f400f8, - 0xf8c1c701, - 0xb00214b6, - 0x1ff52816, - 0x13a0013a, - 0x32980cf4, - 0xcc13a000, - 0x0031980c, - 0xf90231f4, - 0xf9e0f9d0, - 0x0067f1d0, - 0x0063f100, - 0x01679210, + 0x0b1021f5, + 0xf40464b6, + 0x76bb0f11, + 0x0136b000, + 0xf4061bf4, +/* 0x0c02: i2c_put_byte_done */ + 0x00f80132, +/* 0x0c04: i2c_addr */ 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0xf021f550, + 0x4021f550, 0x0464b60a, - 0xd6b0d0fc, - 0xb31bf500, - 0x0057f000, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0x9a21f550, - 0x0464b60a, - 0x00d011f5, - 0xbbe0c5c7, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x0a3f21f5, - 0xf50464b6, - 0xf000ad11, - 0x76bb0157, + 0xe72911f4, + 0xb6012ec3, + 0x53fd0134, + 0x0076bb05, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b60ba9, +/* 0x0c49: i2c_addr_done */ +/* 0x0c4b: i2c_acquire_addr */ + 0xc700f804, + 0xe4b6f8ce, + 0x24e0b702, + 0x00ee980d, +/* 0x0c5a: i2c_acquire */ + 0x21f500f8, + 0x21f40c4b, + 0x03d9f004, + 0xf83f21f4, +/* 0x0c69: i2c_release */ + 0x4b21f500, + 0x0421f40c, + 0xf403daf0, + 0x00f83f21, +/* 0x0c78: i2c_recv */ + 0xc70132f4, + 0x14b6f8c1, + 0x2816b002, + 0x013a1ff5, + 0x0cfc13a0, + 0xa0003298, + 0x980cd413, + 0x31f40031, + 0xf9d0f902, + 0xf1d0f9e0, + 0xf1000067, + 0x92100063, + 0x76bb0167, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb60a9a21, - 0x11f50464, - 0x76bb008a, + 0xb60c5a21, + 0xd0fc0464, + 0xf500d6b0, + 0xf000b31b, + 0x76bb0057, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb609ed21, - 0x11f40464, - 0xe05bcb6a, + 0xb60c0421, + 0x11f50464, + 0xc5c700d0, + 0x0076bbe0, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b60ba9, + 0xad11f504, + 0x0157f000, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x3221f550, - 0x0464b609, - 0xbd025bb9, - 0x430ef474, -/* 0x0c14: i2c_recv_not_rd08 */ - 0xf401d6b0, - 0x57f03d1b, - 0x9a21f500, - 0x3311f40a, - 0xf5e0c5c7, - 0xf40a3f21, - 0x57f02911, - 0x9a21f500, - 0x1f11f40a, - 0xf5e0b5c7, - 0xf40a3f21, - 0x21f51511, - 0x74bd0932, - 0xf408c5c7, - 0x32f4091b, - 0x030ef402, -/* 0x0c54: i2c_recv_not_wr08 */ -/* 0x0c54: i2c_recv_done */ - 0xf5f8cec7, - 0xfc0aff21, - 0xf4d0fce0, - 0x7cb90a12, - 0x3721f502, -/* 0x0c69: i2c_recv_exit */ -/* 0x0c6b: i2c_init */ - 0xf800f803, -/* 0x0c6d: test_recv */ - 0xd817f100, - 0x0614b605, - 0xb60011cf, - 0x07f10110, - 0x04b605d8, - 0x0001d006, - 0xe7f104bd, - 0xe3f1d900, - 0x21f5134f, - 0x00f80257, -/* 0x0c94: test_init */ - 0x0800e7f1, - 0x025721f5, -/* 0x0c9e: idle_recv */ - 0x00f800f8, -/* 0x0ca0: idle */ - 0xf10031f4, - 0xb605d417, + 0x0421f550, + 0x0464b60c, + 0x008a11f5, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x5721f550, + 0x0464b60b, + 0xcb6a11f4, + 0x76bbe05b, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb60a9c21, + 0x5bb90464, + 0xf474bd02, +/* 0x0d7e: i2c_recv_not_rd08 */ + 0xd6b0430e, + 0x3d1bf401, + 0xf50057f0, + 0xf40c0421, + 0xc5c73311, + 0xa921f5e0, + 0x2911f40b, + 0xf50057f0, + 0xf40c0421, + 0xb5c71f11, + 0xa921f5e0, + 0x1511f40b, + 0x0a9c21f5, + 0xc5c774bd, + 0x091bf408, + 0xf40232f4, +/* 0x0dbe: i2c_recv_not_wr08 */ +/* 0x0dbe: i2c_recv_done */ + 0xcec7030e, + 0x6921f5f8, + 0xfce0fc0c, + 0x0a12f4d0, + 0xf5027cb9, +/* 0x0dd3: i2c_recv_exit */ + 0xf8033721, +/* 0x0dd5: i2c_init */ +/* 0x0dd7: test_recv */ + 0xf100f800, + 0xb605d817, 0x11cf0614, 0x0110b600, - 0x05d407f1, + 0x05d807f1, 0xd00604b6, 0x04bd0001, -/* 0x0cbc: idle_loop */ - 0xf45817f0, -/* 0x0cc2: idle_proc */ -/* 0x0cc2: idle_proc_exec */ - 0x10f90232, - 0xf5021eb9, - 0xfc034021, - 0x0911f410, - 0xf40231f4, -/* 0x0cd6: idle_proc_next */ - 0x10b6ef0e, - 0x061fb858, - 0xf4e61bf4, - 0x28f4dd02, - 0xbb0ef400, + 0xd900e7f1, + 0x134fe3f1, + 0x025721f5, +/* 0x0dfe: test_init */ + 0xe7f100f8, + 0x21f50800, + 0x00f80257, +/* 0x0e08: idle_recv */ +/* 0x0e0a: idle */ + 0x31f400f8, + 0xd417f100, + 0x0614b605, + 0xb60011cf, + 0x07f10110, + 0x04b605d4, + 0x0001d006, +/* 0x0e26: idle_loop */ + 0x17f004bd, + 0x0232f458, +/* 0x0e2c: idle_proc */ +/* 0x0e2c: idle_proc_exec */ + 0x1eb910f9, + 0x4021f502, + 0xf410fc03, + 0x31f40911, + 0xef0ef402, +/* 0x0e40: idle_proc_next */ + 0xb85810b6, + 0x1bf4061f, + 0xdd02f4e6, + 0xf40028f4, + 0x0000bb0e, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, diff --git a/drm/nouveau/nvkm/subdev/pmu/fuc/os.h b/drm/nouveau/nvkm/subdev/pmu/fuc/os.h index c8b06cb..53508d9 100644 --- a/drm/nouveau/nvkm/subdev/pmu/fuc/os.h +++ b/drm/nouveau/nvkm/subdev/pmu/fuc/os.h @@ -49,4 +49,8 @@ #define I2C__MSG_DATA0_WR08_REG 0:7 #define I2C__MSG_DATA1_WR08_VAL 0:7 + +/* PERF: message identifiers */ +#define PERF_MSG_LOAD 1 + #endif diff --git a/drm/nouveau/nvkm/subdev/pmu/fuc/perf.fuc b/drm/nouveau/nvkm/subdev/pmu/fuc/perf.fuc index 38eadf7..901557d 100644 --- a/drm/nouveau/nvkm/subdev/pmu/fuc/perf.fuc +++ b/drm/nouveau/nvkm/subdev/pmu/fuc/perf.fuc @@ -30,6 +30,18 @@ process(PROC_PERF, #perf_init, #perf_recv) * PERF data segment *****************************************************************************/ #ifdef INCLUDE_DATA +perf_attr_start: +// parameters +perf_polling_period_us: .b32 100000 + +// engine usage percentage +perf_eng_gr: .b8 0 +perf_eng_vdec: .b8 0 +perf_eng_mc: .b8 0 +#if NVKM_PPWR_CHIPSET >= GF100 +perf_eng_pcie: .b8 0 +#endif +.align 4 #endif /****************************************************************************** @@ -46,6 +58,67 @@ process(PROC_PERF, #perf_init, #perf_recv) // $r11 - data1 // $r0 - zero perf_recv: + imm32($r10, PROC_HOST) + cmp b32 $r14 $r10 + bra ne #perf_recv_not_host + cmp b32 $r13 PERF_MSG_LOAD + bra ne #perf_recv_exit + clear b32 $r11 + clear b32 $r12 +#if NVKM_PPWR_CHIPSET >= GF100 + ld(b8, $r12, #perf_eng_pcie) + shl b32 $r12 8 +#endif + ld(b8, $r12, #perf_eng_mc) + shl b32 $r12 8 + ld(b8, $r12, #perf_eng_vdec) + shl b32 $r12 8 + ld(b8, $r12, #perf_eng_gr) + call(send) + bra #perf_recv_exit +perf_recv_not_host: + call(perf_counter_readout) + ld(b32, $r14, #perf_polling_period_us) + call #ticks_from_us + call(timer) +perf_recv_exit: + ret + +// description +// +// $r15 - current (perf) +// $r0 - zero +perf_counter_readout: + nv_iord($r14, NV_PPWR_COUNTER_COUNT(0)) + div $r14 $r14 0xff + + nv_iord($r13, NV_PPWR_COUNTER_COUNT(1)) + div $r13 $r13 $r14 + st(b8, #perf_eng_gr, $r13) + + nv_iord($r13, NV_PPWR_COUNTER_COUNT(2)) + div $r13 $r13 $r14 + st(b8, #perf_eng_vdec, $r13) + + nv_iord($r13, NV_PPWR_COUNTER_COUNT(3)) + div $r13 $r13 $r14 + st(b8, #perf_eng_mc, $r13) + +#if NVKM_PPWR_CHIPSET >= GF100 + nv_iord($r13, NV_PPWR_COUNTER_COUNT(4)) + div $r13 $r13 $r14 + st(b8, #perf_eng_pcie, $r13) +#endif + + // reset the counters + imm32($r14, NV_PPWR_COUNTER_COUNT_RESET) + nv_iowr(NV_PPWR_COUNTER_COUNT(0), $r14) + nv_iowr(NV_PPWR_COUNTER_COUNT(1), $r14) + nv_iowr(NV_PPWR_COUNTER_COUNT(2), $r14) + nv_iowr(NV_PPWR_COUNTER_COUNT(3), $r14) +#if NVKM_PPWR_CHIPSET >= GF100 + nv_iowr(NV_PPWR_COUNTER_COUNT(4), $r14) +#endif ret // description @@ -53,5 +126,69 @@ perf_recv: // $r15 - current (perf) // $r0 - zero perf_init: + // set up the total ticks counter first + imm32($r14, NV_PPWR_COUNTER_MODE_ALWAYS) + nv_iowr(NV_PPWR_COUNTER_MODE(0), $r14) + + // set up the other counters, with fermi there are more + imm32($r14, NV_PPWR_COUNTER_MODE_IF_NOT_ALL) + nv_iowr(NV_PPWR_COUNTER_MODE(1), $r14) + nv_iowr(NV_PPWR_COUNTER_MODE(2), $r14) + nv_iowr(NV_PPWR_COUNTER_MODE(3), $r14) +#if NVKM_PPWR_CHIPSET >= GF100 + nv_iowr(NV_PPWR_COUNTER_MODE(4), $r14) +#endif + + // core load counter + imm32($r14, + NV_PPWR_COUNTER_SIG_GR + | NV_PPWR_COUNTER_SIG_GR_GPC + | NV_PPWR_COUNTER_SIG_GR_ROP +#if NVKM_PPWR_CHIPSET >= GF100 + | NV_PPWR_COUNTER_SIG_GR_HUB + | NV_PPWR_COUNTER_SIG_PCOPY0 + | NV_PPWR_COUNTER_SIG_PCOPY1 +#endif +#if NVKM_PPWR_CHIPSET >= GK104 + | NV_PPWR_COUNTER_SIG_PCOPY2 +#endif + ) + nv_iowr(NV_PPWR_COUNTER_MASK(1), $r14) + + // video load counter + imm32($r14, + NV_PPWR_COUNTER_SIG_PVLD + | NV_PPWR_COUNTER_SIG_PPDEC + | NV_PPWR_COUNTER_SIG_PPPP +#if NVKM_PPWR_CHIPSET >= GK104 + | NV_PPWR_COUNTER_SIG_PVENC +#endif + ) + nv_iowr(NV_PPWR_COUNTER_MASK(2), $r14) + + // memory load counter + imm32($r14, +#if NVKM_PPWR_CHIPSET >= GF100 + NV_PPWR_COUNTER_SIG_BFB_PART0_REQ +#else + NV_PPWR_COUNTER_SIG_FB_PART0_REQ +#endif + ) + nv_iowr(NV_PPWR_COUNTER_MASK(3), $r14) + + // pcie load counter +#if NVKM_PPWR_CHIPSET >= GF100 + imm32($r14, NV_PPWR_COUNTER_SIG_PCIE) + nv_iowr(NV_PPWR_COUNTER_MASK(4), $r14) +#endif + + // initial read out + call(perf_counter_readout) + + // schedule the next read out + ld(b32, $r14, #perf_polling_period_us) + call #ticks_from_us + call(timer) + ret #endif -- 2.7.1 _______________________________________________ Nouveau mailing list Nouveau@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/nouveau