I think I am done reworking the series and getting to a point where I think it is basically finished. The configuration of the slots could be improved later on when working on dynamic reclocking, but for now it's good enough to report the current GPU utilization to userspace. Patches 1-4 imeplement PMU commands to setup and readout the counters. Patches 5-6 lets Nouveau make use of 1-4. Patch 7 adds a debugfs file to readout basic GPU loads. In a follow up one could write a nice NVIF based interface for readoung out those values to provide them through GALLIUM_HUD. This feature is required to implement proper dynamic reclocking on GT215 and newer. On pre GT215 GPUs there is also PCOUNTERS, but this is ugly so that I only focus on dynamic reclocking starting with GT215 for now. Karol Herbst (7): pmu/fuc: add macros for pmu engine counters pmu/fuc: read out counters and store them pmu/fuc: implement GET_SLOTS pmu/fuc: implement SET_SLOT pmu: add counter_slots field pmu: setup counters nouveau/debugfs: add interface for current load drm/nouveau/include/nvif/device.h | 1 + drm/nouveau/include/nvkm/subdev/pmu.h | 17 + drm/nouveau/nouveau_debugfs.c | 27 + drm/nouveau/nvkm/subdev/pmu/base.c | 8 + drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h | 838 ++++++++++++++++----------- drm/nouveau/nvkm/subdev/pmu/fuc/gf119.fuc4.h | 780 +++++++++++++++---------- drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h | 732 +++++++++++++---------- drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h | 736 +++++++++++++---------- drm/nouveau/nvkm/subdev/pmu/fuc/macros.fuc | 8 + drm/nouveau/nvkm/subdev/pmu/fuc/os.h | 16 + drm/nouveau/nvkm/subdev/pmu/fuc/perf.fuc | 156 +++++ drm/nouveau/nvkm/subdev/pmu/gf100.c | 2 + drm/nouveau/nvkm/subdev/pmu/gf119.c | 2 + drm/nouveau/nvkm/subdev/pmu/gk104.c | 2 + drm/nouveau/nvkm/subdev/pmu/gk110.c | 2 + drm/nouveau/nvkm/subdev/pmu/gk208.c | 2 + drm/nouveau/nvkm/subdev/pmu/gm107.c | 2 + drm/nouveau/nvkm/subdev/pmu/gt215.c | 62 ++ drm/nouveau/nvkm/subdev/pmu/priv.h | 5 + 19 files changed, 2137 insertions(+), 1261 deletions(-) -- 2.13.0
Karol Herbst
2017-Jun-05 20:35 UTC
[Nouveau] [PATCH v3 1/7] pmu/fuc: add macros for pmu engine counters
v2: removed definitions we won't need anymore v3: rename IF_NOT_ALL to IF_ANY Signed-off-by: Karol Herbst <karolherbst at gmail.com> Reviewed-by: Martin Peres <martin.peres at free.fr> --- drm/nouveau/nvkm/subdev/pmu/fuc/macros.fuc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drm/nouveau/nvkm/subdev/pmu/fuc/macros.fuc b/drm/nouveau/nvkm/subdev/pmu/fuc/macros.fuc index 3737bd27..d14f2771 100644 --- a/drm/nouveau/nvkm/subdev/pmu/fuc/macros.fuc +++ b/drm/nouveau/nvkm/subdev/pmu/fuc/macros.fuc @@ -65,6 +65,14 @@ #define NV_PPWR_RFIFO_GET 0x04cc #define NV_PPWR_H2D 0x04d0 #define NV_PPWR_D2H 0x04dc +#define NV_PPWR_COUNTER_MASK(i) (0x10 * (i) + 0x0504) +#define NV_PPWR_COUNTER_COUNT(i) (0x10 * (i) + 0x0508) +#define NV_PPWR_COUNTER_COUNT_RESET 0x80000000 +#define NV_PPWR_COUNTER_MODE(i) (0x10 * (i) + 0x050c) +#define NV_PPWR_COUNTER_MODE_NEVER 0 +#define NV_PPWR_COUNTER_MODE_IF_ALL 1 +#define NV_PPWR_COUNTER_MODE_IF_ANY 2 +#define NV_PPWR_COUNTER_MODE_ALWAYS 3 #if NVKM_PPWR_CHIPSET < GK208 #define NV_PPWR_DSCRATCH(i) (4 * (i) + 0x05d0) #endif -- 2.13.0
Karol Herbst
2017-Jun-05 20:35 UTC
[Nouveau] [PATCH v3 2/7] pmu/fuc: read out counters and store them
The counter values are read out periodically and divided by the total amount of ticks divided by 255 to have nice 8 bit values. A higher precision won't be needed. This way we can have simple PMU-host interfaces. The polling is designed in such a way so that we can change the polling period later if we need it. Signed-off-by: Karol Herbst <karolherbst at gmail.com> --- drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h | 821 +++++++++++++++------------ drm/nouveau/nvkm/subdev/pmu/fuc/gf119.fuc4.h | 763 ++++++++++++++----------- drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h | 711 ++++++++++++----------- drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h | 757 ++++++++++++++---------- drm/nouveau/nvkm/subdev/pmu/fuc/perf.fuc | 120 ++++ 5 files changed, 1826 insertions(+), 1346 deletions(-) diff --git a/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h b/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h index 0bcf0b30..9ed8e313 100644 --- a/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h +++ b/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h @@ -1,4 +1,4 @@ -static uint32_t gf100_pmu_data[] = { +uint32_t gf100_pmu_data[] = { /* 0x0000: proc_kern */ 0x52544e49, 0x00000000, @@ -68,7 +68,7 @@ static uint32_t gf100_pmu_data[] = { 0x00000000, 0x00000000, 0x46524550, - 0x0000075a, + 0x000008c9, 0x00000758, 0x00000000, 0x00000000, @@ -90,8 +90,8 @@ static uint32_t gf100_pmu_data[] = { 0x00000000, 0x00000000, 0x5f433249, - 0x00000b8a, - 0x00000a2d, + 0x00000d7f, + 0x00000c22, 0x00000000, 0x00000000, 0x00000000, @@ -112,8 +112,8 @@ static uint32_t gf100_pmu_data[] = { 0x00000000, 0x00000000, 0x54534554, - 0x00000bb3, - 0x00000b8c, + 0x00000da8, + 0x00000d81, 0x00000000, 0x00000000, 0x00000000, @@ -134,8 +134,8 @@ static uint32_t gf100_pmu_data[] = { 0x00000000, 0x00000000, 0x454c4449, - 0x00000bbf, - 0x00000bbd, + 0x00000db4, + 0x00000db2, 0x00000000, 0x00000000, 0x00000000, @@ -834,7 +834,18 @@ static uint32_t gf100_pmu_data[] = { 0x00000000, 0x00000000, /* 0x0ccc: memx_train_tail */ -/* 0x0ccc: i2c_scl_map */ +/* 0x0ccc: perf_polling_period_us */ + 0x000186a0, +/* 0x0cd0: perf_slot1 */ +/* 0x0cd1: perf_slot2 */ +/* 0x0cd2: perf_slot3 */ +/* 0x0cd3: perf_slot4 */ + 0x00000000, +/* 0x0cd4: perf_slot5 */ +/* 0x0cd5: perf_slot6 */ +/* 0x0cd6: perf_slot7 */ + 0x00000000, +/* 0x0cd8: i2c_scl_map */ 0x00001000, 0x00004000, 0x00010000, @@ -845,7 +856,7 @@ static uint32_t gf100_pmu_data[] = { 0x01000000, 0x04000000, 0x10000000, -/* 0x0cf4: i2c_sda_map */ +/* 0x0d00: i2c_sda_map */ 0x00002000, 0x00008000, 0x00020000, @@ -856,7 +867,7 @@ static uint32_t gf100_pmu_data[] = { 0x02000000, 0x08000000, 0x20000000, -/* 0x0d1c: i2c_ctrl */ +/* 0x0d28: i2c_ctrl */ 0x0000e138, 0x0000e150, 0x0000e168, @@ -911,12 +922,9 @@ static uint32_t gf100_pmu_data[] = { 0x00000000, 0x00000000, 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, }; -static uint32_t gf100_pmu_code[] = { +uint32_t gf100_pmu_code[] = { 0x03920ef5, /* 0x0004: rd32 */ 0x07a007f1, @@ -1452,412 +1460,479 @@ static uint32_t gf100_pmu_code[] = { /* 0x0756: memx_init */ 0x00f800f8, /* 0x0758: perf_recv */ -/* 0x075a: perf_init */ - 0x00f800f8, -/* 0x075c: i2c_drive_scl */ - 0xf40036b0, - 0x07f1110b, - 0x04b607e0, - 0x0001d006, - 0x00f804bd, -/* 0x0770: i2c_drive_scl_lo */ - 0x07e407f1, - 0xd00604b6, - 0x04bd0001, -/* 0x077e: i2c_drive_sda */ - 0x36b000f8, - 0x110bf400, - 0x07e007f1, - 0xd00604b6, - 0x04bd0002, -/* 0x0792: i2c_drive_sda_lo */ - 0x07f100f8, - 0x04b607e4, - 0x0002d006, - 0x00f804bd, -/* 0x07a0: i2c_sense_scl */ - 0xf10132f4, - 0xb607c437, - 0x33cf0634, - 0x0431fd00, - 0xf4060bf4, -/* 0x07b6: i2c_sense_scl_done */ - 0x00f80131, -/* 0x07b8: i2c_sense_sda */ - 0xf10132f4, - 0xb607c437, + 0x4f48a7f1, + 0x5453a3f1, + 0xf406eab8, + 0x0ef4061b, +/* 0x0769: perf_recv_not_host */ + 0x8321f51b, + 0xcc07f107, + 0x0003f00c, + 0xbd000e98, + 0x2a21f504, + 0x5621f502, +/* 0x0781: perf_recv_exit */ +/* 0x0783: perf_counter_readout */ + 0xf900f802, + 0xf920f910, + 0xf940f930, + 0xf960f950, + 0xf180f970, + 0xb6050817, + 0x11cf0614, + 0x1827f100, + 0x0624b605, + 0xf10022cf, + 0xb6052837, 0x33cf0634, - 0x0432fd00, - 0xf4060bf4, -/* 0x07ce: i2c_sense_sda_done */ - 0x00f80131, -/* 0x07d0: i2c_raise_scl */ - 0x47f140f9, - 0x37f00898, - 0x5c21f501, -/* 0x07dd: i2c_raise_scl_wait */ - 0xe8e7f107, - 0x7e21f403, - 0x07a021f5, - 0xb60901f4, - 0x1bf40142, -/* 0x07f1: i2c_raise_scl_done */ - 0xf840fcef, -/* 0x07f5: i2c_start */ - 0xa021f500, - 0x0d11f407, - 0x07b821f5, - 0xf40611f4, -/* 0x0806: i2c_start_rep */ - 0x37f0300e, - 0x5c21f500, - 0x0137f007, - 0x077e21f5, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0xd021f550, - 0x0464b607, -/* 0x0833: i2c_start_send */ - 0xf01f11f4, + 0x3847f100, + 0x0644b605, + 0xf10044cf, + 0xb6054857, + 0x55cf0654, + 0x5867f100, + 0x0664b605, + 0xf10066cf, + 0xb6056877, + 0x77cf0674, + 0x7887f100, + 0x0684b605, + 0xf10088cf, + 0xf10000e7, + 0xf18000e3, + 0xb6050807, + 0x0ed00604, + 0xf104bd00, + 0xb6051807, + 0x0ed00604, + 0xf104bd00, + 0xb6052807, + 0x0ed00604, + 0xf104bd00, + 0xb6053807, + 0x0ed00604, + 0xf104bd00, + 0xb6054807, + 0x0ed00604, + 0xf104bd00, + 0xb6055807, + 0x0ed00604, + 0xf104bd00, + 0xb6056807, + 0x0ed00604, + 0xf104bd00, + 0xb6057807, + 0x0ed00604, + 0xcc04bd00, + 0x21ffff11, + 0x3c31ff2c, + 0xff4c41ff, + 0x61ff5c51, + 0x7c71ff6c, + 0xf18c81ff, + 0xf00cd007, + 0x02000003, + 0xf104bd00, + 0xf00cd107, + 0x03000003, + 0xf104bd00, + 0xf00cd207, + 0x04000003, + 0xf104bd00, + 0xf00cd307, + 0x05000003, + 0xf104bd00, + 0xf00cd407, + 0x06000003, + 0xf104bd00, + 0xf00cd507, + 0x07000003, + 0xf104bd00, + 0xf00cd607, + 0x08000003, + 0xfc04bd00, + 0xfc70fc80, + 0xfc50fc60, + 0xfc30fc40, + 0xf810fc20, +/* 0x08c9: perf_init */ + 0x03e7f100, + 0x00e3f000, + 0x050c07f1, + 0xd00604b6, + 0x04bd000e, + 0x0002e7f1, + 0xf100e3f0, + 0xb6051c07, + 0x0ed00604, + 0xf104bd00, + 0xb6052c07, + 0x0ed00604, + 0xf104bd00, + 0xb6053c07, + 0x0ed00604, + 0xf104bd00, + 0xb6054c07, + 0x0ed00604, + 0xf104bd00, + 0xb6055c07, + 0x0ed00604, + 0xf104bd00, + 0xb6056c07, + 0x0ed00604, + 0xf104bd00, + 0xb6057c07, + 0x0ed00604, + 0xf504bd00, + 0xf1078321, + 0xf00ccc07, + 0x0e980003, + 0xf504bd00, + 0xf5022a21, + 0xf8025621, +/* 0x0951: i2c_drive_scl */ + 0x0036b000, + 0xf1110bf4, + 0xb607e007, + 0x01d00604, + 0xf804bd00, +/* 0x0965: i2c_drive_scl_lo */ + 0xe407f100, + 0x0604b607, + 0xbd0001d0, +/* 0x0973: i2c_drive_sda */ + 0xb000f804, + 0x0bf40036, + 0xe007f111, + 0x0604b607, + 0xbd0002d0, +/* 0x0987: i2c_drive_sda_lo */ + 0xf100f804, + 0xb607e407, + 0x02d00604, + 0xf804bd00, +/* 0x0995: i2c_sense_scl */ + 0x0132f400, + 0x07c437f1, + 0xcf0634b6, + 0x31fd0033, + 0x060bf404, +/* 0x09ab: i2c_sense_scl_done */ + 0xf80131f4, +/* 0x09ad: i2c_sense_sda */ + 0x0132f400, + 0x07c437f1, + 0xcf0634b6, + 0x32fd0033, + 0x060bf404, +/* 0x09c3: i2c_sense_sda_done */ + 0xf80131f4, +/* 0x09c5: i2c_raise_scl */ + 0xf140f900, + 0xf0089847, + 0x21f50137, +/* 0x09d2: i2c_raise_scl_wait */ + 0xe7f10951, + 0x21f403e8, + 0x9521f57e, + 0x0901f409, + 0xf40142b6, +/* 0x09e6: i2c_raise_scl_done */ + 0x40fcef1b, +/* 0x09ea: i2c_start */ + 0x21f500f8, + 0x11f40995, + 0xad21f50d, + 0x0611f409, +/* 0x09fb: i2c_start_rep */ + 0xf0300ef4, 0x21f50037, - 0xe7f1077e, - 0x21f41388, - 0x0037f07e, - 0x075c21f5, - 0x1388e7f1, -/* 0x084f: i2c_start_out */ - 0xf87e21f4, -/* 0x0851: i2c_stop */ - 0x0037f000, - 0x075c21f5, + 0x37f00951, + 0x7321f501, + 0x0076bb09, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b609c5, + 0x1f11f404, +/* 0x0a28: i2c_start_send */ 0xf50037f0, - 0xf1077e21, - 0xf403e8e7, + 0xf1097321, + 0xf41388e7, 0x37f07e21, - 0x5c21f501, - 0x88e7f107, + 0x5121f500, + 0x88e7f109, 0x7e21f413, - 0xf50137f0, - 0xf1077e21, - 0xf41388e7, - 0x00f87e21, -/* 0x0884: i2c_bitw */ - 0x077e21f5, +/* 0x0a44: i2c_start_out */ +/* 0x0a46: i2c_stop */ + 0x37f000f8, + 0x5121f500, + 0x0037f009, + 0x097321f5, 0x03e8e7f1, - 0xbb7e21f4, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x07d021f5, - 0xf40464b6, - 0xe7f11811, + 0xf07e21f4, + 0x21f50137, + 0xe7f10951, 0x21f41388, - 0x0037f07e, - 0x075c21f5, + 0x0137f07e, + 0x097321f5, 0x1388e7f1, -/* 0x08c3: i2c_bitw_out */ 0xf87e21f4, -/* 0x08c5: i2c_bitr */ - 0x0137f000, - 0x077e21f5, - 0x03e8e7f1, - 0xbb7e21f4, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x07d021f5, - 0xf40464b6, - 0x21f51b11, - 0x37f007b8, - 0x5c21f500, - 0x88e7f107, +/* 0x0a79: i2c_bitw */ + 0x7321f500, + 0xe8e7f109, + 0x7e21f403, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0xc521f550, + 0x0464b609, + 0xf11811f4, + 0xf41388e7, + 0x37f07e21, + 0x5121f500, + 0x88e7f109, 0x7e21f413, - 0xf4013cf0, -/* 0x090a: i2c_bitr_done */ - 0x00f80131, -/* 0x090c: i2c_get_byte */ - 0xf00057f0, -/* 0x0912: i2c_get_byte_next */ - 0x54b60847, +/* 0x0ab8: i2c_bitw_out */ +/* 0x0aba: i2c_bitr */ + 0x37f000f8, + 0x7321f501, + 0xe8e7f109, + 0x7e21f403, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0xc521f550, + 0x0464b609, + 0xf51b11f4, + 0xf009ad21, + 0x21f50037, + 0xe7f10951, + 0x21f41388, + 0x013cf07e, +/* 0x0aff: i2c_bitr_done */ + 0xf80131f4, +/* 0x0b01: i2c_get_byte */ + 0x0057f000, +/* 0x0b07: i2c_get_byte_next */ + 0xb60847f0, + 0x76bb0154, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb60aba21, + 0x11f40464, + 0x0553fd2b, + 0xf40142b6, + 0x37f0d81b, 0x0076bb01, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b608c5, - 0x2b11f404, - 0xb60553fd, - 0x1bf40142, - 0x0137f0d8, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0x8421f550, - 0x0464b608, -/* 0x095c: i2c_get_byte_done */ -/* 0x095e: i2c_put_byte */ - 0x47f000f8, -/* 0x0961: i2c_put_byte_next */ - 0x0142b608, - 0xbb3854ff, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x088421f5, - 0xf40464b6, - 0x46b03411, - 0xd81bf400, + 0x64b60a79, +/* 0x0b51: i2c_get_byte_done */ +/* 0x0b53: i2c_put_byte */ + 0xf000f804, +/* 0x0b56: i2c_put_byte_next */ + 0x42b60847, + 0x3854ff01, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0xc521f550, - 0x0464b608, - 0xbb0f11f4, - 0x36b00076, - 0x061bf401, -/* 0x09b7: i2c_put_byte_done */ - 0xf80132f4, -/* 0x09b9: i2c_addr */ - 0x0076bb00, + 0x7921f550, + 0x0464b60a, + 0xb03411f4, + 0x1bf40046, + 0x0076bbd8, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b607f5, - 0x2911f404, - 0x012ec3e7, - 0xfd0134b6, - 0x76bb0553, + 0x64b60aba, + 0x0f11f404, + 0xb00076bb, + 0x1bf40136, + 0x0132f406, +/* 0x0bac: i2c_put_byte_done */ +/* 0x0bae: i2c_addr */ + 0x76bb00f8, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb6095e21, -/* 0x09fe: i2c_addr_done */ - 0x00f80464, -/* 0x0a00: i2c_acquire_addr */ - 0xb6f8cec7, - 0xe0b702e4, - 0xee980d1c, -/* 0x0a0f: i2c_acquire */ - 0xf500f800, - 0xf40a0021, - 0xd9f00421, - 0x4021f403, -/* 0x0a1e: i2c_release */ - 0x21f500f8, - 0x21f40a00, - 0x03daf004, - 0xf84021f4, -/* 0x0a2d: i2c_recv */ - 0x0132f400, - 0xb6f8c1c7, - 0x16b00214, - 0x3a1ff528, - 0xf413a001, - 0x0032980c, - 0x0ccc13a0, - 0xf4003198, - 0xd0f90231, - 0xd0f9e0f9, - 0x000067f1, - 0x100063f1, - 0xbb016792, + 0xb609ea21, + 0x11f40464, + 0x2ec3e729, + 0x0134b601, + 0xbb0553fd, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x0a0f21f5, - 0xfc0464b6, - 0x00d6b0d0, - 0x00b31bf5, - 0xbb0057f0, + 0x0b5321f5, +/* 0x0bf3: i2c_addr_done */ + 0xf80464b6, +/* 0x0bf5: i2c_acquire_addr */ + 0xf8cec700, + 0xb702e4b6, + 0x980d28e0, + 0x00f800ee, +/* 0x0c04: i2c_acquire */ + 0x0bf521f5, + 0xf00421f4, + 0x21f403d9, +/* 0x0c13: i2c_release */ + 0xf500f840, + 0xf40bf521, + 0xdaf00421, + 0x4021f403, +/* 0x0c22: i2c_recv */ + 0x32f400f8, + 0xf8c1c701, + 0xb00214b6, + 0x1ff52816, + 0x13a0013a, + 0x32980d00, + 0xd813a000, + 0x0031980c, + 0xf90231f4, + 0xf9e0f9d0, + 0x0067f1d0, + 0x0063f100, + 0x01679210, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x0421f550, + 0x0464b60c, + 0xd6b0d0fc, + 0xb31bf500, + 0x0057f000, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0xae21f550, + 0x0464b60b, + 0x00d011f5, + 0xbbe0c5c7, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x09b921f5, + 0x0b5321f5, 0xf50464b6, - 0xc700d011, - 0x76bbe0c5, + 0xf000ad11, + 0x76bb0157, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb6095e21, + 0xb60bae21, 0x11f50464, - 0x57f000ad, - 0x0076bb01, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b609b9, - 0x8a11f504, - 0x0076bb00, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b6090c, - 0x6a11f404, - 0xbbe05bcb, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x085121f5, - 0xb90464b6, - 0x74bd025b, -/* 0x0b33: i2c_recv_not_rd08 */ - 0xb0430ef4, - 0x1bf401d6, - 0x0057f03d, - 0x09b921f5, - 0xc73311f4, - 0x21f5e0c5, - 0x11f4095e, - 0x0057f029, - 0x09b921f5, - 0xc71f11f4, - 0x21f5e0b5, - 0x11f4095e, - 0x5121f515, - 0xc774bd08, - 0x1bf408c5, - 0x0232f409, -/* 0x0b73: i2c_recv_not_wr08 */ -/* 0x0b73: i2c_recv_done */ - 0xc7030ef4, - 0x21f5f8ce, - 0xe0fc0a1e, - 0x12f4d0fc, - 0x027cb90a, - 0x033621f5, -/* 0x0b88: i2c_recv_exit */ -/* 0x0b8a: i2c_init */ + 0x76bb008a, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb60b0121, + 0x11f40464, + 0xe05bcb6a, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x4621f550, + 0x0464b60a, + 0xbd025bb9, + 0x430ef474, +/* 0x0d28: i2c_recv_not_rd08 */ + 0xf401d6b0, + 0x57f03d1b, + 0xae21f500, + 0x3311f40b, + 0xf5e0c5c7, + 0xf40b5321, + 0x57f02911, + 0xae21f500, + 0x1f11f40b, + 0xf5e0b5c7, + 0xf40b5321, + 0x21f51511, + 0x74bd0a46, + 0xf408c5c7, + 0x32f4091b, + 0x030ef402, +/* 0x0d68: i2c_recv_not_wr08 */ +/* 0x0d68: i2c_recv_done */ + 0xf5f8cec7, + 0xfc0c1321, + 0xf4d0fce0, + 0x7cb90a12, + 0x3621f502, +/* 0x0d7d: i2c_recv_exit */ +/* 0x0d7f: i2c_init */ + 0xf800f803, +/* 0x0d81: test_recv */ + 0xd817f100, + 0x0614b605, + 0xb60011cf, + 0x07f10110, + 0x04b605d8, + 0x0001d006, + 0xe7f104bd, + 0xe3f1d900, + 0x21f5134f, + 0x00f80256, +/* 0x0da8: test_init */ + 0x0800e7f1, + 0x025621f5, +/* 0x0db2: idle_recv */ 0x00f800f8, -/* 0x0b8c: test_recv */ - 0x05d817f1, - 0xcf0614b6, - 0x10b60011, - 0xd807f101, - 0x0604b605, - 0xbd0001d0, - 0x00e7f104, - 0x4fe3f1d9, - 0x5621f513, -/* 0x0bb3: test_init */ - 0xf100f802, - 0xf50800e7, - 0xf8025621, -/* 0x0bbd: idle_recv */ -/* 0x0bbf: idle */ - 0xf400f800, - 0x17f10031, - 0x14b605d4, - 0x0011cf06, - 0xf10110b6, - 0xb605d407, - 0x01d00604, -/* 0x0bdb: idle_loop */ - 0xf004bd00, - 0x32f45817, -/* 0x0be1: idle_proc */ -/* 0x0be1: idle_proc_exec */ - 0xb910f902, - 0x21f5021e, - 0x10fc033f, - 0xf40911f4, - 0x0ef40231, -/* 0x0bf5: idle_proc_next */ - 0x5810b6ef, - 0xf4061fb8, - 0x02f4e61b, - 0x0028f4dd, - 0x00bb0ef4, - 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, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, +/* 0x0db4: idle */ + 0xf10031f4, + 0xb605d417, + 0x11cf0614, + 0x0110b600, + 0x05d407f1, + 0xd00604b6, + 0x04bd0001, +/* 0x0dd0: idle_loop */ + 0xf45817f0, +/* 0x0dd6: idle_proc */ +/* 0x0dd6: idle_proc_exec */ + 0x10f90232, + 0xf5021eb9, + 0xfc033f21, + 0x0911f410, + 0xf40231f4, +/* 0x0dea: idle_proc_next */ + 0x10b6ef0e, + 0x061fb858, + 0xf4e61bf4, + 0x28f4dd02, + 0xbb0ef400, 0x00000000, }; diff --git a/drm/nouveau/nvkm/subdev/pmu/fuc/gf119.fuc4.h b/drm/nouveau/nvkm/subdev/pmu/fuc/gf119.fuc4.h index fe890566..78f6379a 100644 --- a/drm/nouveau/nvkm/subdev/pmu/fuc/gf119.fuc4.h +++ b/drm/nouveau/nvkm/subdev/pmu/fuc/gf119.fuc4.h @@ -1,4 +1,4 @@ -static uint32_t gf119_pmu_data[] = { +uint32_t gf119_pmu_data[] = { /* 0x0000: proc_kern */ 0x52544e49, 0x00000000, @@ -68,7 +68,7 @@ static uint32_t gf119_pmu_data[] = { 0x00000000, 0x00000000, 0x46524550, - 0x00000687, + 0x000007c6, 0x00000685, 0x00000000, 0x00000000, @@ -90,8 +90,8 @@ static uint32_t gf119_pmu_data[] = { 0x00000000, 0x00000000, 0x5f433249, - 0x00000aa2, - 0x00000945, + 0x00000c4f, + 0x00000af2, 0x00000000, 0x00000000, 0x00000000, @@ -112,8 +112,8 @@ static uint32_t gf119_pmu_data[] = { 0x00000000, 0x00000000, 0x54534554, - 0x00000ac5, - 0x00000aa4, + 0x00000c72, + 0x00000c51, 0x00000000, 0x00000000, 0x00000000, @@ -134,8 +134,8 @@ static uint32_t gf119_pmu_data[] = { 0x00000000, 0x00000000, 0x454c4449, - 0x00000ad1, - 0x00000acf, + 0x00000c7e, + 0x00000c7c, 0x00000000, 0x00000000, 0x00000000, @@ -834,7 +834,18 @@ static uint32_t gf119_pmu_data[] = { 0x00000000, 0x00000000, /* 0x0ccc: memx_train_tail */ -/* 0x0ccc: i2c_scl_map */ +/* 0x0ccc: perf_polling_period_us */ + 0x000186a0, +/* 0x0cd0: perf_slot1 */ +/* 0x0cd1: perf_slot2 */ +/* 0x0cd2: perf_slot3 */ +/* 0x0cd3: perf_slot4 */ + 0x00000000, +/* 0x0cd4: perf_slot5 */ +/* 0x0cd5: perf_slot6 */ +/* 0x0cd6: perf_slot7 */ + 0x00000000, +/* 0x0cd8: i2c_scl_map */ 0x00000400, 0x00000800, 0x00001000, @@ -845,7 +856,7 @@ static uint32_t gf119_pmu_data[] = { 0x00020000, 0x00040000, 0x00080000, -/* 0x0cf4: i2c_sda_map */ +/* 0x0d00: i2c_sda_map */ 0x00100000, 0x00200000, 0x00400000, @@ -910,12 +921,9 @@ static uint32_t gf119_pmu_data[] = { 0x00000000, 0x00000000, 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, }; -static uint32_t gf119_pmu_code[] = { +uint32_t gf119_pmu_code[] = { 0x03410ef5, /* 0x0004: rd32 */ 0x07a007f1, @@ -1393,387 +1401,454 @@ static uint32_t gf119_pmu_code[] = { /* 0x0683: memx_init */ 0xf800f8d8, /* 0x0685: perf_recv */ -/* 0x0687: perf_init */ - 0xf800f800, -/* 0x0689: i2c_drive_scl */ - 0x0036b000, - 0xf10e0bf4, - 0xd007e007, + 0x48a7f100, + 0x53a3f14f, + 0x06eab854, + 0xf4061bf4, +/* 0x0696: perf_recv_not_host */ + 0x21f51b0e, + 0x07f106b0, + 0x03f00ccc, + 0x000e9800, + 0x21f504bd, + 0x21f501eb, +/* 0x06ae: perf_recv_exit */ + 0x00f80217, +/* 0x06b0: perf_counter_readout */ + 0x20f910f9, + 0x40f930f9, + 0x60f950f9, + 0x80f970f9, + 0x050817f1, + 0xf10011cf, + 0xcf051827, + 0x37f10022, + 0x33cf0528, + 0x3847f100, + 0x0044cf05, + 0x054857f1, + 0xf10055cf, + 0xcf055867, + 0x77f10066, + 0x77cf0568, + 0x7887f100, + 0x0088cf05, + 0x0000e7f1, + 0x8000e3f1, + 0x050807f1, + 0xbd000ed0, + 0x1807f104, + 0x000ed005, + 0x07f104bd, + 0x0ed00528, + 0xf104bd00, + 0xd0053807, + 0x04bd000e, + 0x054807f1, + 0xbd000ed0, + 0x5807f104, + 0x000ed005, + 0x07f104bd, + 0x0ed00568, + 0xf104bd00, + 0xd0057807, + 0x04bd000e, + 0xffff11cc, + 0x31ff2c21, + 0x4c41ff3c, + 0xff5c51ff, + 0x71ff6c61, + 0x8c81ff7c, + 0x0cd007f1, + 0x000003f0, + 0x04bd0002, + 0x0cd107f1, + 0x000003f0, + 0x04bd0003, + 0x0cd207f1, + 0x000003f0, + 0x04bd0004, + 0x0cd307f1, + 0x000003f0, + 0x04bd0005, + 0x0cd407f1, + 0x000003f0, + 0x04bd0006, + 0x0cd507f1, + 0x000003f0, + 0x04bd0007, + 0x0cd607f1, + 0x000003f0, + 0x04bd0008, + 0x70fc80fc, + 0x50fc60fc, + 0x30fc40fc, + 0x10fc20fc, +/* 0x07c6: perf_init */ + 0xe7f100f8, + 0xe3f00003, + 0x0c07f100, + 0x000ed005, + 0xe7f104bd, + 0xe3f00002, + 0x1c07f100, + 0x000ed005, + 0x07f104bd, + 0x0ed0052c, + 0xf104bd00, + 0xd0053c07, + 0x04bd000e, + 0x054c07f1, + 0xbd000ed0, + 0x5c07f104, + 0x000ed005, + 0x07f104bd, + 0x0ed0056c, + 0xf104bd00, + 0xd0057c07, + 0x04bd000e, + 0x06b021f5, + 0x0ccc07f1, + 0x980003f0, + 0x04bd000e, + 0x01eb21f5, + 0x021721f5, +/* 0x0836: i2c_drive_scl */ + 0x36b000f8, + 0x0e0bf400, + 0x07e007f1, + 0xbd0001d0, +/* 0x0847: i2c_drive_scl_lo */ + 0xf100f804, + 0xd007e407, 0x04bd0001, -/* 0x069a: i2c_drive_scl_lo */ - 0x07f100f8, - 0x01d007e4, - 0xf804bd00, -/* 0x06a5: i2c_drive_sda */ - 0x0036b000, - 0xf10e0bf4, - 0xd007e007, +/* 0x0852: i2c_drive_sda */ + 0x36b000f8, + 0x0e0bf400, + 0x07e007f1, + 0xbd0002d0, +/* 0x0863: i2c_drive_sda_lo */ + 0xf100f804, + 0xd007e407, 0x04bd0002, -/* 0x06b6: i2c_drive_sda_lo */ - 0x07f100f8, - 0x02d007e4, - 0xf804bd00, -/* 0x06c1: i2c_sense_scl */ - 0x0132f400, - 0x07c437f1, - 0xfd0033cf, - 0x0bf40431, - 0x0131f406, -/* 0x06d4: i2c_sense_scl_done */ -/* 0x06d6: i2c_sense_sda */ +/* 0x086e: i2c_sense_scl */ 0x32f400f8, 0xc437f101, 0x0033cf07, - 0xf40432fd, + 0xf40431fd, 0x31f4060b, -/* 0x06e9: i2c_sense_sda_done */ -/* 0x06eb: i2c_raise_scl */ - 0xf900f801, - 0x9847f140, +/* 0x0881: i2c_sense_scl_done */ +/* 0x0883: i2c_sense_sda */ + 0xf400f801, + 0x37f10132, + 0x33cf07c4, + 0x0432fd00, + 0xf4060bf4, +/* 0x0896: i2c_sense_sda_done */ + 0x00f80131, +/* 0x0898: i2c_raise_scl */ + 0x47f140f9, + 0x37f00898, + 0x3621f501, +/* 0x08a5: i2c_raise_scl_wait */ + 0xe8e7f108, + 0x6621f403, + 0x086e21f5, + 0xb60901f4, + 0x1bf40142, +/* 0x08b9: i2c_raise_scl_done */ + 0xf840fcef, +/* 0x08bd: i2c_start */ + 0x6e21f500, + 0x0d11f408, + 0x088321f5, + 0xf40611f4, +/* 0x08ce: i2c_start_rep */ + 0x37f0300e, + 0x3621f500, 0x0137f008, - 0x068921f5, -/* 0x06f8: i2c_raise_scl_wait */ - 0x03e8e7f1, - 0xf56621f4, - 0xf406c121, - 0x42b60901, - 0xef1bf401, -/* 0x070c: i2c_raise_scl_done */ - 0x00f840fc, -/* 0x0710: i2c_start */ - 0x06c121f5, - 0xf50d11f4, - 0xf406d621, - 0x0ef40611, -/* 0x0721: i2c_start_rep */ - 0x0037f030, - 0x068921f5, + 0x085221f5, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x9821f550, + 0x0464b608, +/* 0x08fb: i2c_start_send */ + 0xf01f11f4, + 0x21f50037, + 0xe7f10852, + 0x21f41388, + 0x0037f066, + 0x083621f5, + 0x1388e7f1, +/* 0x0917: i2c_start_out */ + 0xf86621f4, +/* 0x0919: i2c_stop */ + 0x0037f000, + 0x083621f5, + 0xf50037f0, + 0xf1085221, + 0xf403e8e7, + 0x37f06621, + 0x3621f501, + 0x88e7f108, + 0x6621f413, 0xf50137f0, - 0xbb06a521, + 0xf1085221, + 0xf41388e7, + 0x00f86621, +/* 0x094c: i2c_bitw */ + 0x085221f5, + 0x03e8e7f1, + 0xbb6621f4, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x06eb21f5, + 0x089821f5, 0xf40464b6, -/* 0x074e: i2c_start_send */ - 0x37f01f11, - 0xa521f500, - 0x88e7f106, - 0x6621f413, - 0xf50037f0, - 0xf1068921, - 0xf41388e7, -/* 0x076a: i2c_start_out */ - 0x00f86621, -/* 0x076c: i2c_stop */ - 0xf50037f0, - 0xf0068921, - 0x21f50037, - 0xe7f106a5, - 0x21f403e8, - 0x0137f066, - 0x068921f5, - 0x1388e7f1, - 0xf06621f4, - 0x21f50137, - 0xe7f106a5, + 0xe7f11811, 0x21f41388, -/* 0x079f: i2c_bitw */ - 0xf500f866, - 0xf106a521, - 0xf403e8e7, - 0x76bb6621, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0xf550fc04, - 0xb606eb21, - 0x11f40464, - 0x88e7f118, - 0x6621f413, - 0xf50037f0, - 0xf1068921, - 0xf41388e7, -/* 0x07de: i2c_bitw_out */ - 0x00f86621, -/* 0x07e0: i2c_bitr */ - 0xf50137f0, - 0xf106a521, - 0xf403e8e7, - 0x76bb6621, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0xf550fc04, - 0xb606eb21, - 0x11f40464, - 0xd621f51b, - 0x0037f006, - 0x068921f5, + 0x0037f066, + 0x083621f5, 0x1388e7f1, - 0xf06621f4, - 0x31f4013c, -/* 0x0825: i2c_bitr_done */ -/* 0x0827: i2c_get_byte */ - 0xf000f801, - 0x47f00057, -/* 0x082d: i2c_get_byte_next */ - 0x0154b608, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0xe021f550, - 0x0464b607, - 0xfd2b11f4, - 0x42b60553, - 0xd81bf401, - 0xbb0137f0, +/* 0x098b: i2c_bitw_out */ + 0xf86621f4, +/* 0x098d: i2c_bitr */ + 0x0137f000, + 0x085221f5, + 0x03e8e7f1, + 0xbb6621f4, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x079f21f5, -/* 0x0877: i2c_get_byte_done */ - 0xf80464b6, -/* 0x0879: i2c_put_byte */ - 0x0847f000, -/* 0x087c: i2c_put_byte_next */ - 0xff0142b6, - 0x76bb3854, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0xf550fc04, - 0xb6079f21, - 0x11f40464, - 0x0046b034, - 0xbbd81bf4, + 0x089821f5, + 0xf40464b6, + 0x21f51b11, + 0x37f00883, + 0x3621f500, + 0x88e7f108, + 0x6621f413, + 0xf4013cf0, +/* 0x09d2: i2c_bitr_done */ + 0x00f80131, +/* 0x09d4: i2c_get_byte */ + 0xf00057f0, +/* 0x09da: i2c_get_byte_next */ + 0x54b60847, + 0x0076bb01, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b6098d, + 0x2b11f404, + 0xb60553fd, + 0x1bf40142, + 0x0137f0d8, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x4c21f550, + 0x0464b609, +/* 0x0a24: i2c_get_byte_done */ +/* 0x0a26: i2c_put_byte */ + 0x47f000f8, +/* 0x0a29: i2c_put_byte_next */ + 0x0142b608, + 0xbb3854ff, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x07e021f5, + 0x094c21f5, 0xf40464b6, - 0x76bb0f11, - 0x0136b000, - 0xf4061bf4, -/* 0x08d2: i2c_put_byte_done */ - 0x00f80132, -/* 0x08d4: i2c_addr */ + 0x46b03411, + 0xd81bf400, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x1021f550, - 0x0464b607, - 0xe72911f4, - 0xb6012ec3, - 0x53fd0134, - 0x0076bb05, + 0x8d21f550, + 0x0464b609, + 0xbb0f11f4, + 0x36b00076, + 0x061bf401, +/* 0x0a7f: i2c_put_byte_done */ + 0xf80132f4, +/* 0x0a81: i2c_addr */ + 0x0076bb00, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b60879, -/* 0x0919: i2c_addr_done */ -/* 0x091b: i2c_acquire_addr */ - 0xc700f804, - 0xe4b6f8ce, - 0x14e0b705, -/* 0x0927: i2c_acquire */ - 0xf500f8d0, - 0xf4091b21, - 0xd9f00421, + 0x64b608bd, + 0x2911f404, + 0x012ec3e7, + 0xfd0134b6, + 0x76bb0553, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb60a2621, +/* 0x0ac6: i2c_addr_done */ + 0x00f80464, +/* 0x0ac8: i2c_acquire_addr */ + 0xb6f8cec7, + 0xe0b705e4, + 0x00f8d014, +/* 0x0ad4: i2c_acquire */ + 0x0ac821f5, + 0xf00421f4, + 0x21f403d9, +/* 0x0ae3: i2c_release */ + 0xf500f834, + 0xf40ac821, + 0xdaf00421, 0x3421f403, -/* 0x0936: i2c_release */ - 0x21f500f8, - 0x21f4091b, - 0x03daf004, - 0xf83421f4, -/* 0x0945: i2c_recv */ - 0x0132f400, - 0xb6f8c1c7, - 0x16b00214, - 0x3a1ff528, - 0xf413a001, - 0x0032980c, - 0x0ccc13a0, - 0xf4003198, - 0xd0f90231, - 0xd0f9e0f9, - 0x000067f1, - 0x100063f1, - 0xbb016792, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x092721f5, - 0xfc0464b6, - 0x00d6b0d0, - 0x00b31bf5, - 0xbb0057f0, +/* 0x0af2: i2c_recv */ + 0x32f400f8, + 0xf8c1c701, + 0xb00214b6, + 0x1ff52816, + 0x13a0013a, + 0x32980d00, + 0xd813a000, + 0x0031980c, + 0xf90231f4, + 0xf9e0f9d0, + 0x0067f1d0, + 0x0063f100, + 0x01679210, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0xd421f550, + 0x0464b60a, + 0xd6b0d0fc, + 0xb31bf500, + 0x0057f000, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x8121f550, + 0x0464b60a, + 0x00d011f5, + 0xbbe0c5c7, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x08d421f5, + 0x0a2621f5, 0xf50464b6, - 0xc700d011, - 0x76bbe0c5, + 0xf000ad11, + 0x76bb0157, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb6087921, + 0xb60a8121, 0x11f50464, - 0x57f000ad, - 0x0076bb01, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b608d4, - 0x8a11f504, - 0x0076bb00, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b60827, - 0x6a11f404, - 0xbbe05bcb, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x076c21f5, - 0xb90464b6, - 0x74bd025b, -/* 0x0a4b: i2c_recv_not_rd08 */ - 0xb0430ef4, - 0x1bf401d6, - 0x0057f03d, - 0x08d421f5, - 0xc73311f4, - 0x21f5e0c5, - 0x11f40879, - 0x0057f029, - 0x08d421f5, - 0xc71f11f4, - 0x21f5e0b5, - 0x11f40879, - 0x6c21f515, - 0xc774bd07, - 0x1bf408c5, - 0x0232f409, -/* 0x0a8b: i2c_recv_not_wr08 */ -/* 0x0a8b: i2c_recv_done */ - 0xc7030ef4, - 0x21f5f8ce, - 0xe0fc0936, - 0x12f4d0fc, - 0x027cb90a, - 0x02e521f5, -/* 0x0aa0: i2c_recv_exit */ -/* 0x0aa2: i2c_init */ - 0x00f800f8, -/* 0x0aa4: test_recv */ - 0x05d817f1, - 0xb60011cf, - 0x07f10110, - 0x01d005d8, - 0xf104bd00, - 0xf1d900e7, - 0xf5134fe3, - 0xf8021721, -/* 0x0ac5: test_init */ - 0x00e7f100, - 0x1721f508, -/* 0x0acf: idle_recv */ + 0x76bb008a, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb609d421, + 0x11f40464, + 0xe05bcb6a, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x1921f550, + 0x0464b609, + 0xbd025bb9, + 0x430ef474, +/* 0x0bf8: i2c_recv_not_rd08 */ + 0xf401d6b0, + 0x57f03d1b, + 0x8121f500, + 0x3311f40a, + 0xf5e0c5c7, + 0xf40a2621, + 0x57f02911, + 0x8121f500, + 0x1f11f40a, + 0xf5e0b5c7, + 0xf40a2621, + 0x21f51511, + 0x74bd0919, + 0xf408c5c7, + 0x32f4091b, + 0x030ef402, +/* 0x0c38: i2c_recv_not_wr08 */ +/* 0x0c38: i2c_recv_done */ + 0xf5f8cec7, + 0xfc0ae321, + 0xf4d0fce0, + 0x7cb90a12, + 0xe521f502, +/* 0x0c4d: i2c_recv_exit */ +/* 0x0c4f: i2c_init */ 0xf800f802, -/* 0x0ad1: idle */ - 0x0031f400, - 0x05d417f1, - 0xb60011cf, - 0x07f10110, - 0x01d005d4, -/* 0x0ae7: idle_loop */ - 0xf004bd00, - 0x32f45817, -/* 0x0aed: idle_proc */ -/* 0x0aed: idle_proc_exec */ - 0xb910f902, - 0x21f5021e, - 0x10fc02ee, - 0xf40911f4, - 0x0ef40231, -/* 0x0b01: idle_proc_next */ - 0x5810b6ef, - 0xf4061fb8, - 0x02f4e61b, - 0x0028f4dd, - 0x00c10ef4, - 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, +/* 0x0c51: test_recv */ + 0xd817f100, + 0x0011cf05, + 0xf10110b6, + 0xd005d807, + 0x04bd0001, + 0xd900e7f1, + 0x134fe3f1, + 0x021721f5, +/* 0x0c72: test_init */ + 0xe7f100f8, + 0x21f50800, + 0x00f80217, +/* 0x0c7c: idle_recv */ +/* 0x0c7e: idle */ + 0x31f400f8, + 0xd417f100, + 0x0011cf05, + 0xf10110b6, + 0xd005d407, + 0x04bd0001, +/* 0x0c94: idle_loop */ + 0xf45817f0, +/* 0x0c9a: idle_proc */ +/* 0x0c9a: idle_proc_exec */ + 0x10f90232, + 0xf5021eb9, + 0xfc02ee21, + 0x0911f410, + 0xf40231f4, +/* 0x0cae: idle_proc_next */ + 0x10b6ef0e, + 0x061fb858, + 0xf4e61bf4, + 0x28f4dd02, + 0xc10ef400, 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 9cf4e6fc..01f409ed 100644 --- a/drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h +++ b/drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h @@ -1,4 +1,4 @@ -static uint32_t gk208_pmu_data[] = { +uint32_t gk208_pmu_data[] = { /* 0x0000: proc_kern */ 0x52544e49, 0x00000000, @@ -68,7 +68,7 @@ static uint32_t gk208_pmu_data[] = { 0x00000000, 0x00000000, 0x46524550, - 0x000005f7, + 0x000006f8, 0x000005f5, 0x00000000, 0x00000000, @@ -90,8 +90,8 @@ static uint32_t gk208_pmu_data[] = { 0x00000000, 0x00000000, 0x5f433249, - 0x000009f8, - 0x000008a2, + 0x00000b51, + 0x000009fb, 0x00000000, 0x00000000, 0x00000000, @@ -112,8 +112,8 @@ static uint32_t gk208_pmu_data[] = { 0x00000000, 0x00000000, 0x54534554, - 0x00000a16, - 0x000009fa, + 0x00000b6f, + 0x00000b53, 0x00000000, 0x00000000, 0x00000000, @@ -134,8 +134,8 @@ static uint32_t gk208_pmu_data[] = { 0x00000000, 0x00000000, 0x454c4449, - 0x00000a21, - 0x00000a1f, + 0x00000b7a, + 0x00000b78, 0x00000000, 0x00000000, 0x00000000, @@ -834,7 +834,18 @@ static uint32_t gk208_pmu_data[] = { 0x00000000, 0x00000000, /* 0x0ccc: memx_train_tail */ -/* 0x0ccc: i2c_scl_map */ +/* 0x0ccc: perf_polling_period_us */ + 0x000186a0, +/* 0x0cd0: perf_slot1 */ +/* 0x0cd1: perf_slot2 */ +/* 0x0cd2: perf_slot3 */ +/* 0x0cd3: perf_slot4 */ + 0x00000000, +/* 0x0cd4: perf_slot5 */ +/* 0x0cd5: perf_slot6 */ +/* 0x0cd6: perf_slot7 */ + 0x00000000, +/* 0x0cd8: i2c_scl_map */ 0x00000400, 0x00000800, 0x00001000, @@ -845,7 +856,7 @@ static uint32_t gk208_pmu_data[] = { 0x00020000, 0x00040000, 0x00080000, -/* 0x0cf4: i2c_sda_map */ +/* 0x0d00: i2c_sda_map */ 0x00100000, 0x00200000, 0x00400000, @@ -910,12 +921,9 @@ static uint32_t gk208_pmu_data[] = { 0x00000000, 0x00000000, 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, }; -static uint32_t gk208_pmu_code[] = { +uint32_t gk208_pmu_code[] = { 0x02f90ef5, /* 0x0004: rd32 */ 0xf607a040, @@ -1357,357 +1365,424 @@ static uint32_t gk208_pmu_code[] = { /* 0x05f3: memx_init */ 0xf800f8dc, /* 0x05f5: perf_recv */ -/* 0x05f7: perf_init */ - 0xf800f800, -/* 0x05f9: i2c_drive_scl */ - 0x0036b000, - 0x400d0bf4, - 0x01f607e0, - 0xf804bd00, -/* 0x0609: i2c_drive_scl_lo */ - 0x07e44000, - 0xbd0001f6, -/* 0x0613: i2c_drive_sda */ - 0xb000f804, - 0x0bf40036, - 0x07e0400d, - 0xbd0002f6, -/* 0x0623: i2c_drive_sda_lo */ - 0x4000f804, - 0x02f607e4, - 0xf804bd00, -/* 0x062d: i2c_sense_scl */ - 0x0132f400, - 0xcf07c443, - 0x31fd0033, - 0x060bf404, -/* 0x063f: i2c_sense_scl_done */ - 0xf80131f4, -/* 0x0641: i2c_sense_sda */ - 0x0132f400, - 0xcf07c443, - 0x32fd0033, - 0x060bf404, -/* 0x0653: i2c_sense_sda_done */ - 0xf80131f4, -/* 0x0655: i2c_raise_scl */ - 0x4440f900, - 0x01030898, - 0x0005f97e, -/* 0x0660: i2c_raise_scl_wait */ - 0x7e03e84e, - 0x7e000058, - 0xf400062d, - 0x42b60901, - 0xef1bf401, -/* 0x0674: i2c_raise_scl_done */ - 0x00f840fc, -/* 0x0678: i2c_start */ - 0x00062d7e, - 0x7e0d11f4, - 0xf4000641, - 0x0ef40611, -/* 0x0689: i2c_start_rep */ - 0x7e00032e, - 0x030005f9, - 0x06137e01, - 0x0076bb00, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x557e50fc, - 0x64b60006, - 0x1d11f404, -/* 0x06b4: i2c_start_send */ - 0x137e0003, - 0x884e0006, - 0x00587e13, - 0x7e000300, - 0x4e0005f9, - 0x587e1388, -/* 0x06ce: i2c_start_out */ - 0x00f80000, -/* 0x06d0: i2c_stop */ - 0xf97e0003, - 0x00030005, - 0x0006137e, - 0x7e03e84e, - 0x03000058, - 0x05f97e01, - 0x13884e00, + 0x4f48da00, + 0xeaa65453, + 0xf4061bf4, +/* 0x0602: perf_recv_not_host */ + 0x187e170e, + 0xcc400006, + 0x000e980c, + 0xbb7e04bd, + 0xde7e0001, +/* 0x0616: perf_recv_exit */ + 0x00f80001, +/* 0x0618: perf_counter_readout */ + 0x20f910f9, + 0x40f930f9, + 0x60f950f9, + 0x80f970f9, + 0xcf050841, + 0x18420011, + 0x0022cf05, + 0xcf052843, + 0x38440033, + 0x0044cf05, + 0xcf054845, + 0x58460055, + 0x0066cf05, + 0xcf056847, + 0x78480077, + 0x0088cf05, + 0x000000de, + 0x05084080, + 0xbd000ef6, + 0x05184004, + 0xbd000ef6, + 0x05284004, + 0xbd000ef6, + 0x05384004, + 0xbd000ef6, + 0x05484004, + 0xbd000ef6, + 0x05584004, + 0xbd000ef6, + 0x05684004, + 0xbd000ef6, + 0x05784004, + 0xbd000ef6, + 0xff11cc04, + 0xff2c21ff, + 0x41ff3c31, + 0x5c51ff4c, + 0xff6c61ff, + 0x81ff7c71, + 0x0cd0408c, + 0x04bd0220, + 0x200cd140, + 0x4004bd03, + 0x04200cd2, + 0xd34004bd, + 0xbd05200c, + 0x0cd44004, + 0x04bd0620, + 0x200cd540, + 0x4004bd07, + 0x08200cd6, + 0x80fc04bd, + 0x60fc70fc, + 0x40fc50fc, + 0x20fc30fc, + 0x00f810fc, +/* 0x06f8: perf_init */ + 0x0c40030e, + 0x000ef605, + 0x020e04bd, + 0xf6051c40, + 0x04bd000e, + 0xf6052c40, + 0x04bd000e, + 0xf6053c40, + 0x04bd000e, + 0xf6054c40, + 0x04bd000e, + 0xf6055c40, + 0x04bd000e, + 0xf6056c40, + 0x04bd000e, + 0xf6057c40, + 0x04bd000e, + 0x0006187e, + 0x980ccc40, + 0x04bd000e, + 0x01bb21f5, + 0x0001de7e, +/* 0x0752: i2c_drive_scl */ + 0x36b000f8, + 0x0d0bf400, + 0xf607e040, + 0x04bd0001, +/* 0x0762: i2c_drive_scl_lo */ + 0xe44000f8, + 0x0001f607, + 0x00f804bd, +/* 0x076c: i2c_drive_sda */ + 0xf40036b0, + 0xe0400d0b, + 0x0002f607, + 0x00f804bd, +/* 0x077c: i2c_drive_sda_lo */ + 0xf607e440, + 0x04bd0002, +/* 0x0786: i2c_sense_scl */ + 0x32f400f8, + 0x07c44301, + 0xfd0033cf, + 0x0bf40431, + 0x0131f406, +/* 0x0798: i2c_sense_scl_done */ +/* 0x079a: i2c_sense_sda */ + 0x32f400f8, + 0x07c44301, + 0xfd0033cf, + 0x0bf40432, + 0x0131f406, +/* 0x07ac: i2c_sense_sda_done */ +/* 0x07ae: i2c_raise_scl */ + 0x40f900f8, + 0x03089844, + 0x07527e01, +/* 0x07b9: i2c_raise_scl_wait */ + 0x03e84e00, 0x0000587e, - 0x137e0103, - 0x884e0006, - 0x00587e13, -/* 0x06ff: i2c_bitw */ - 0x7e00f800, - 0x4e000613, - 0x587e03e8, - 0x76bb0000, + 0x0007867e, + 0xb60901f4, + 0x1bf40142, +/* 0x07cd: i2c_raise_scl_done */ + 0xf840fcef, +/* 0x07d1: i2c_start */ + 0x07867e00, + 0x0d11f400, + 0x00079a7e, + 0xf40611f4, +/* 0x07e2: i2c_start_rep */ + 0x00032e0e, + 0x0007527e, + 0x6c7e0103, + 0x76bb0007, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0x7e50fc04, - 0xb6000655, + 0xb60007ae, 0x11f40464, - 0x13884e17, - 0x0000587e, - 0xf97e0003, - 0x884e0005, - 0x00587e13, -/* 0x073d: i2c_bitw_out */ -/* 0x073f: i2c_bitr */ - 0x0300f800, - 0x06137e01, +/* 0x080d: i2c_start_send */ + 0x7e00031d, + 0x4e00076c, + 0x587e1388, + 0x00030000, + 0x0007527e, + 0x7e13884e, +/* 0x0827: i2c_start_out */ + 0xf8000058, +/* 0x0829: i2c_stop */ + 0x7e000300, + 0x03000752, + 0x076c7e00, 0x03e84e00, 0x0000587e, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0x06557e50, - 0x0464b600, - 0x7e1a11f4, - 0x03000641, - 0x05f97e00, - 0x13884e00, - 0x0000587e, - 0xf4013cf0, -/* 0x0782: i2c_bitr_done */ - 0x00f80131, -/* 0x0784: i2c_get_byte */ - 0x08040005, -/* 0x0788: i2c_get_byte_next */ - 0xbb0154b6, + 0x527e0103, + 0x884e0007, + 0x00587e13, + 0x7e010300, + 0x4e00076c, + 0x587e1388, + 0x00f80000, +/* 0x0858: i2c_bitw */ + 0x00076c7e, + 0x7e03e84e, + 0xbb000058, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x00073f7e, + 0x0007ae7e, 0xf40464b6, - 0x53fd2a11, - 0x0142b605, - 0x03d81bf4, - 0x0076bb01, + 0x884e1711, + 0x00587e13, + 0x7e000300, + 0x4e000752, + 0x587e1388, +/* 0x0896: i2c_bitw_out */ + 0x00f80000, +/* 0x0898: i2c_bitr */ + 0x6c7e0103, + 0xe84e0007, + 0x00587e03, + 0x0076bb00, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, - 0xff7e50fc, - 0x64b60006, -/* 0x07d1: i2c_get_byte_done */ -/* 0x07d3: i2c_put_byte */ - 0x0400f804, -/* 0x07d5: i2c_put_byte_next */ - 0x0142b608, - 0xbb3854ff, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x0006ff7e, - 0xf40464b6, - 0x46b03411, - 0xd81bf400, + 0xae7e50fc, + 0x64b60007, + 0x1a11f404, + 0x00079a7e, + 0x527e0003, + 0x884e0007, + 0x00587e13, + 0x013cf000, +/* 0x08db: i2c_bitr_done */ + 0xf80131f4, +/* 0x08dd: i2c_get_byte */ + 0x04000500, +/* 0x08e1: i2c_get_byte_next */ + 0x0154b608, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x073f7e50, + 0x08987e50, 0x0464b600, - 0xbb0f11f4, - 0x36b00076, - 0x061bf401, -/* 0x082b: i2c_put_byte_done */ - 0xf80132f4, -/* 0x082d: i2c_addr */ - 0x0076bb00, + 0xfd2a11f4, + 0x42b60553, + 0xd81bf401, + 0x76bb0103, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0x7e50fc04, + 0xb6000858, +/* 0x092a: i2c_get_byte_done */ + 0x00f80464, +/* 0x092c: i2c_put_byte */ +/* 0x092e: i2c_put_byte_next */ + 0x42b60804, + 0x3854ff01, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x08587e50, + 0x0464b600, + 0xb03411f4, + 0x1bf40046, + 0x0076bbd8, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, - 0x787e50fc, - 0x64b60006, - 0x2911f404, - 0x012ec3e7, - 0xfd0134b6, - 0x76bb0553, + 0x987e50fc, + 0x64b60008, + 0x0f11f404, + 0xb00076bb, + 0x1bf40136, + 0x0132f406, +/* 0x0984: i2c_put_byte_done */ +/* 0x0986: i2c_addr */ + 0x76bb00f8, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0x7e50fc04, - 0xb60007d3, -/* 0x0872: i2c_addr_done */ - 0x00f80464, -/* 0x0874: i2c_acquire_addr */ - 0xb6f8cec7, - 0xe0b705e4, - 0x00f8d014, -/* 0x0880: i2c_acquire */ - 0x0008747e, - 0x0000047e, - 0x7e03d9f0, - 0xf800002d, -/* 0x0891: i2c_release */ - 0x08747e00, + 0xb60007d1, + 0x11f40464, + 0x2ec3e729, + 0x0134b601, + 0xbb0553fd, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x00092c7e, +/* 0x09cb: i2c_addr_done */ + 0xf80464b6, +/* 0x09cd: i2c_acquire_addr */ + 0xf8cec700, + 0xb705e4b6, + 0xf8d014e0, +/* 0x09d9: i2c_acquire */ + 0x09cd7e00, 0x00047e00, - 0x03daf000, + 0x03d9f000, 0x00002d7e, -/* 0x08a2: i2c_recv */ - 0x32f400f8, - 0xf8c1c701, - 0xb00214b6, - 0x1ff52816, - 0x13b80134, - 0x98000cf4, - 0x13b80032, - 0x98000ccc, - 0x31f40031, - 0xf9d0f902, - 0xd6d0f9e0, - 0x10000000, - 0xbb016792, +/* 0x09ea: i2c_release */ + 0xcd7e00f8, + 0x047e0009, + 0xdaf00000, + 0x002d7e03, +/* 0x09fb: i2c_recv */ + 0xf400f800, + 0xc1c70132, + 0x0214b6f8, + 0xf52816b0, + 0xb801341f, + 0x000d0013, + 0xb8003298, + 0x000cd813, + 0xf4003198, + 0xd0f90231, + 0xd0f9e0f9, + 0x000000d6, + 0x01679210, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x09d97e50, + 0x0464b600, + 0xd6b0d0fc, + 0xb01bf500, + 0xbb000500, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x0008807e, - 0xfc0464b6, - 0x00d6b0d0, - 0x00b01bf5, - 0x76bb0005, + 0x0009867e, + 0xf50464b6, + 0xc700cc11, + 0x76bbe0c5, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0x7e50fc04, - 0xb600082d, + 0xb600092c, 0x11f50464, - 0xc5c700cc, - 0x0076bbe0, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0xd37e50fc, - 0x64b60007, - 0xa911f504, - 0xbb010500, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x00082d7e, - 0xf50464b6, - 0xbb008711, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x0007847e, - 0xf40464b6, - 0x5bcb6711, - 0x0076bbe0, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0xd07e50fc, - 0x64b60006, - 0xbd5bb204, - 0x410ef474, -/* 0x09a4: i2c_recv_not_rd08 */ - 0xf401d6b0, - 0x00053b1b, - 0x00082d7e, - 0xc73211f4, - 0xd37ee0c5, - 0x11f40007, - 0x7e000528, - 0xf400082d, - 0xb5c71f11, - 0x07d37ee0, - 0x1511f400, - 0x0006d07e, - 0xc5c774bd, - 0x091bf408, - 0xf40232f4, -/* 0x09e2: i2c_recv_not_wr08 */ -/* 0x09e2: i2c_recv_done */ - 0xcec7030e, - 0x08917ef8, - 0xfce0fc00, - 0x0912f4d0, - 0x9f7e7cb2, -/* 0x09f6: i2c_recv_exit */ - 0x00f80002, -/* 0x09f8: i2c_init */ -/* 0x09fa: test_recv */ - 0x584100f8, - 0x0011cf04, - 0x400110b6, - 0x01f60458, - 0xde04bd00, - 0x134fd900, - 0x0001de7e, -/* 0x0a16: test_init */ - 0x004e00f8, - 0x01de7e08, -/* 0x0a1f: idle_recv */ - 0xf800f800, -/* 0x0a21: idle */ - 0x0031f400, - 0xcf045441, - 0x10b60011, - 0x04544001, - 0xbd0001f6, -/* 0x0a35: idle_loop */ - 0xf4580104, -/* 0x0a3a: idle_proc */ -/* 0x0a3a: idle_proc_exec */ - 0x10f90232, - 0xa87e1eb2, - 0x10fc0002, - 0xf40911f4, - 0x0ef40231, -/* 0x0a4d: 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, + 0x010500a9, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x09867e50, + 0x0464b600, + 0x008711f5, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x08dd7e50, + 0x0464b600, + 0xcb6711f4, + 0x76bbe05b, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0x7e50fc04, + 0xb6000829, + 0x5bb20464, + 0x0ef474bd, +/* 0x0afd: i2c_recv_not_rd08 */ + 0x01d6b041, + 0x053b1bf4, + 0x09867e00, + 0x3211f400, + 0x7ee0c5c7, + 0xf400092c, + 0x00052811, + 0x0009867e, + 0xc71f11f4, + 0x2c7ee0b5, + 0x11f40009, + 0x08297e15, + 0xc774bd00, + 0x1bf408c5, + 0x0232f409, +/* 0x0b3b: i2c_recv_not_wr08 */ +/* 0x0b3b: i2c_recv_done */ + 0xc7030ef4, + 0xea7ef8ce, + 0xe0fc0009, + 0x12f4d0fc, + 0x7e7cb209, +/* 0x0b4f: i2c_recv_exit */ + 0xf800029f, +/* 0x0b51: i2c_init */ +/* 0x0b53: test_recv */ + 0x4100f800, + 0x11cf0458, + 0x0110b600, + 0xf6045840, + 0x04bd0001, + 0x4fd900de, + 0x01de7e13, +/* 0x0b6f: test_init */ + 0x4e00f800, + 0xde7e0800, + 0x00f80001, +/* 0x0b78: idle_recv */ +/* 0x0b7a: idle */ + 0x31f400f8, + 0x04544100, + 0xb60011cf, + 0x54400110, + 0x0001f604, +/* 0x0b8e: idle_loop */ + 0x580104bd, +/* 0x0b93: idle_proc */ +/* 0x0b93: idle_proc_exec */ + 0xf90232f4, + 0x7e1eb210, + 0xfc0002a8, + 0x0911f410, + 0xf40231f4, +/* 0x0ba6: idle_proc_next */ + 0x10b6f00e, + 0xf41fa658, + 0x02f4e81b, + 0x0028f4e0, + 0x00c60ef4, 0x00000000, 0x00000000, 0x00000000, diff --git a/drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h b/drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h index 5d692425..345c9281 100644 --- a/drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h +++ b/drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h @@ -1,4 +1,4 @@ -static uint32_t gt215_pmu_data[] = { +uint32_t gt215_pmu_data[] = { /* 0x0000: proc_kern */ 0x52544e49, 0x00000000, @@ -68,7 +68,7 @@ static uint32_t gt215_pmu_data[] = { 0x00000000, 0x00000000, 0x46524550, - 0x0000083e, + 0x00000909, 0x0000083c, 0x00000000, 0x00000000, @@ -90,8 +90,8 @@ static uint32_t gt215_pmu_data[] = { 0x00000000, 0x00000000, 0x5f433249, - 0x00000c6e, - 0x00000b11, + 0x00000d8f, + 0x00000c32, 0x00000000, 0x00000000, 0x00000000, @@ -112,8 +112,8 @@ static uint32_t gt215_pmu_data[] = { 0x00000000, 0x00000000, 0x54534554, - 0x00000c97, - 0x00000c70, + 0x00000db8, + 0x00000d91, 0x00000000, 0x00000000, 0x00000000, @@ -134,8 +134,8 @@ static uint32_t gt215_pmu_data[] = { 0x00000000, 0x00000000, 0x454c4449, - 0x00000ca3, - 0x00000ca1, + 0x00000dc4, + 0x00000dc2, 0x00000000, 0x00000000, 0x00000000, @@ -834,7 +834,13 @@ static uint32_t gt215_pmu_data[] = { 0x00000000, 0x00000000, /* 0x0ccc: memx_train_tail */ -/* 0x0ccc: i2c_scl_map */ +/* 0x0ccc: perf_polling_period_us */ + 0x000186a0, +/* 0x0cd0: perf_slot1 */ +/* 0x0cd1: perf_slot2 */ +/* 0x0cd2: perf_slot3 */ + 0x00000000, +/* 0x0cd4: i2c_scl_map */ 0x00001000, 0x00004000, 0x00010000, @@ -845,7 +851,7 @@ static uint32_t gt215_pmu_data[] = { 0x01000000, 0x04000000, 0x10000000, -/* 0x0cf4: i2c_sda_map */ +/* 0x0cfc: i2c_sda_map */ 0x00002000, 0x00008000, 0x00020000, @@ -856,7 +862,7 @@ static uint32_t gt215_pmu_data[] = { 0x02000000, 0x08000000, 0x20000000, -/* 0x0d1c: i2c_ctrl */ +/* 0x0d24: i2c_ctrl */ 0x0000e138, 0x0000e150, 0x0000e168, @@ -912,11 +918,9 @@ static uint32_t gt215_pmu_data[] = { 0x00000000, 0x00000000, 0x00000000, - 0x00000000, - 0x00000000, }; -static uint32_t gt215_pmu_code[] = { +uint32_t gt215_pmu_code[] = { 0x03920ef5, /* 0x0004: rd32 */ 0x07a007f1, @@ -1512,352 +1516,483 @@ static uint32_t gt215_pmu_code[] = { /* 0x083a: memx_init */ 0x00f800f8, /* 0x083c: perf_recv */ -/* 0x083e: perf_init */ - 0x00f800f8, -/* 0x0840: i2c_drive_scl */ - 0xf40036b0, - 0x07f1110b, - 0x04b607e0, - 0x0001d006, - 0x00f804bd, -/* 0x0854: i2c_drive_scl_lo */ - 0x07e407f1, - 0xd00604b6, - 0x04bd0001, -/* 0x0862: i2c_drive_sda */ - 0x36b000f8, - 0x110bf400, - 0x07e007f1, - 0xd00604b6, - 0x04bd0002, -/* 0x0876: i2c_drive_sda_lo */ - 0x07f100f8, - 0x04b607e4, - 0x0002d006, - 0x00f804bd, -/* 0x0884: i2c_sense_scl */ - 0xf10132f4, - 0xb607c437, - 0x33cf0634, - 0x0431fd00, - 0xf4060bf4, -/* 0x089a: i2c_sense_scl_done */ - 0x00f80131, -/* 0x089c: i2c_sense_sda */ - 0xf10132f4, - 0xb607c437, + 0x4f48a7f1, + 0x5453a3f1, + 0xf406eab8, + 0x0ef4061b, +/* 0x084d: perf_recv_not_host */ + 0x6721f51b, + 0xcc07f108, + 0x0003f00c, + 0xbd000e98, + 0x2a21f504, + 0x5621f502, +/* 0x0865: perf_recv_exit */ +/* 0x0867: perf_counter_readout */ + 0xf900f802, + 0xf920f910, + 0xf140f930, + 0xb6050817, + 0x11cf0614, + 0x1827f100, + 0x0624b605, + 0xf10022cf, + 0xb6052837, 0x33cf0634, - 0x0432fd00, - 0xf4060bf4, -/* 0x08b2: i2c_sense_sda_done */ - 0x00f80131, -/* 0x08b4: i2c_raise_scl */ - 0x47f140f9, - 0x37f00898, - 0x4021f501, -/* 0x08c1: i2c_raise_scl_wait */ - 0xe8e7f108, - 0x7e21f403, - 0x088421f5, - 0xb60901f4, - 0x1bf40142, -/* 0x08d5: i2c_raise_scl_done */ - 0xf840fcef, -/* 0x08d9: i2c_start */ - 0x8421f500, - 0x0d11f408, - 0x089c21f5, - 0xf40611f4, -/* 0x08ea: i2c_start_rep */ - 0x37f0300e, - 0x4021f500, - 0x0137f008, - 0x086221f5, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0xb421f550, - 0x0464b608, -/* 0x0917: i2c_start_send */ - 0xf01f11f4, + 0x3847f100, + 0x0644b605, + 0xf10044cf, + 0xf10000e7, + 0xf18000e3, + 0xb6050807, + 0x0ed00604, + 0xf104bd00, + 0xb6051807, + 0x0ed00604, + 0xf104bd00, + 0xb6052807, + 0x0ed00604, + 0xf104bd00, + 0xb6053807, + 0x0ed00604, + 0xcc04bd00, + 0x21ffff11, + 0x3c31ff2c, + 0xf14c41ff, + 0xf00cd007, + 0x02000003, + 0xf104bd00, + 0xf00cd107, + 0x03000003, + 0xf104bd00, + 0xf00cd207, + 0x04000003, + 0xfc04bd00, + 0xfc30fc40, + 0xf810fc20, +/* 0x0909: perf_init */ + 0x03e7f100, + 0x00e3f000, + 0x050c07f1, + 0xd00604b6, + 0x04bd000e, + 0x0002e7f1, + 0xf100e3f0, + 0xb6051c07, + 0x0ed00604, + 0xf104bd00, + 0xb6052c07, + 0x0ed00604, + 0xf104bd00, + 0xb6053c07, + 0x0ed00604, + 0xf504bd00, + 0xf1086721, + 0xf00ccc07, + 0x0e980003, + 0xf504bd00, + 0xf5022a21, + 0xf8025621, +/* 0x0961: i2c_drive_scl */ + 0x0036b000, + 0xf1110bf4, + 0xb607e007, + 0x01d00604, + 0xf804bd00, +/* 0x0975: i2c_drive_scl_lo */ + 0xe407f100, + 0x0604b607, + 0xbd0001d0, +/* 0x0983: i2c_drive_sda */ + 0xb000f804, + 0x0bf40036, + 0xe007f111, + 0x0604b607, + 0xbd0002d0, +/* 0x0997: i2c_drive_sda_lo */ + 0xf100f804, + 0xb607e407, + 0x02d00604, + 0xf804bd00, +/* 0x09a5: i2c_sense_scl */ + 0x0132f400, + 0x07c437f1, + 0xcf0634b6, + 0x31fd0033, + 0x060bf404, +/* 0x09bb: i2c_sense_scl_done */ + 0xf80131f4, +/* 0x09bd: i2c_sense_sda */ + 0x0132f400, + 0x07c437f1, + 0xcf0634b6, + 0x32fd0033, + 0x060bf404, +/* 0x09d3: i2c_sense_sda_done */ + 0xf80131f4, +/* 0x09d5: i2c_raise_scl */ + 0xf140f900, + 0xf0089847, + 0x21f50137, +/* 0x09e2: i2c_raise_scl_wait */ + 0xe7f10961, + 0x21f403e8, + 0xa521f57e, + 0x0901f409, + 0xf40142b6, +/* 0x09f6: i2c_raise_scl_done */ + 0x40fcef1b, +/* 0x09fa: i2c_start */ + 0x21f500f8, + 0x11f409a5, + 0xbd21f50d, + 0x0611f409, +/* 0x0a0b: i2c_start_rep */ + 0xf0300ef4, 0x21f50037, - 0xe7f10862, - 0x21f41388, - 0x0037f07e, - 0x084021f5, - 0x1388e7f1, -/* 0x0933: i2c_start_out */ - 0xf87e21f4, -/* 0x0935: i2c_stop */ - 0x0037f000, - 0x084021f5, + 0x37f00961, + 0x8321f501, + 0x0076bb09, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b609d5, + 0x1f11f404, +/* 0x0a38: i2c_start_send */ 0xf50037f0, - 0xf1086221, - 0xf403e8e7, + 0xf1098321, + 0xf41388e7, 0x37f07e21, - 0x4021f501, - 0x88e7f108, + 0x6121f500, + 0x88e7f109, 0x7e21f413, - 0xf50137f0, - 0xf1086221, - 0xf41388e7, - 0x00f87e21, -/* 0x0968: i2c_bitw */ - 0x086221f5, +/* 0x0a54: i2c_start_out */ +/* 0x0a56: i2c_stop */ + 0x37f000f8, + 0x6121f500, + 0x0037f009, + 0x098321f5, 0x03e8e7f1, - 0xbb7e21f4, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x08b421f5, - 0xf40464b6, - 0xe7f11811, + 0xf07e21f4, + 0x21f50137, + 0xe7f10961, 0x21f41388, - 0x0037f07e, - 0x084021f5, + 0x0137f07e, + 0x098321f5, 0x1388e7f1, -/* 0x09a7: i2c_bitw_out */ 0xf87e21f4, -/* 0x09a9: i2c_bitr */ - 0x0137f000, - 0x086221f5, - 0x03e8e7f1, - 0xbb7e21f4, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x08b421f5, - 0xf40464b6, - 0x21f51b11, - 0x37f0089c, - 0x4021f500, - 0x88e7f108, - 0x7e21f413, - 0xf4013cf0, -/* 0x09ee: i2c_bitr_done */ - 0x00f80131, -/* 0x09f0: i2c_get_byte */ - 0xf00057f0, -/* 0x09f6: i2c_get_byte_next */ - 0x54b60847, - 0x0076bb01, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b609a9, - 0x2b11f404, - 0xb60553fd, - 0x1bf40142, - 0x0137f0d8, +/* 0x0a89: i2c_bitw */ + 0x8321f500, + 0xe8e7f109, + 0x7e21f403, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x6821f550, + 0xd521f550, 0x0464b609, -/* 0x0a40: i2c_get_byte_done */ -/* 0x0a42: i2c_put_byte */ - 0x47f000f8, -/* 0x0a45: i2c_put_byte_next */ - 0x0142b608, - 0xbb3854ff, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x096821f5, - 0xf40464b6, - 0x46b03411, - 0xd81bf400, + 0xf11811f4, + 0xf41388e7, + 0x37f07e21, + 0x6121f500, + 0x88e7f109, + 0x7e21f413, +/* 0x0ac8: i2c_bitw_out */ +/* 0x0aca: i2c_bitr */ + 0x37f000f8, + 0x8321f501, + 0xe8e7f109, + 0x7e21f403, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0xa921f550, + 0xd521f550, 0x0464b609, - 0xbb0f11f4, - 0x36b00076, - 0x061bf401, -/* 0x0a9b: i2c_put_byte_done */ - 0xf80132f4, -/* 0x0a9d: i2c_addr */ - 0x0076bb00, + 0xf51b11f4, + 0xf009bd21, + 0x21f50037, + 0xe7f10961, + 0x21f41388, + 0x013cf07e, +/* 0x0b0f: i2c_bitr_done */ + 0xf80131f4, +/* 0x0b11: i2c_get_byte */ + 0x0057f000, +/* 0x0b17: i2c_get_byte_next */ + 0xb60847f0, + 0x76bb0154, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb60aca21, + 0x11f40464, + 0x0553fd2b, + 0xf40142b6, + 0x37f0d81b, + 0x0076bb01, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b608d9, - 0x2911f404, - 0x012ec3e7, - 0xfd0134b6, - 0x76bb0553, + 0x64b60a89, +/* 0x0b61: i2c_get_byte_done */ +/* 0x0b63: i2c_put_byte */ + 0xf000f804, +/* 0x0b66: i2c_put_byte_next */ + 0x42b60847, + 0x3854ff01, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x8921f550, + 0x0464b60a, + 0xb03411f4, + 0x1bf40046, + 0x0076bbd8, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b60aca, + 0x0f11f404, + 0xb00076bb, + 0x1bf40136, + 0x0132f406, +/* 0x0bbc: i2c_put_byte_done */ +/* 0x0bbe: i2c_addr */ + 0x76bb00f8, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb60a4221, -/* 0x0ae2: i2c_addr_done */ - 0x00f80464, -/* 0x0ae4: i2c_acquire_addr */ - 0xb6f8cec7, - 0xe0b702e4, - 0xee980d1c, -/* 0x0af3: i2c_acquire */ - 0xf500f800, - 0xf40ae421, - 0xd9f00421, - 0x4021f403, -/* 0x0b02: i2c_release */ - 0x21f500f8, - 0x21f40ae4, - 0x03daf004, - 0xf84021f4, -/* 0x0b11: i2c_recv */ - 0x0132f400, - 0xb6f8c1c7, - 0x16b00214, - 0x3a1ff528, - 0xf413a001, - 0x0032980c, - 0x0ccc13a0, - 0xf4003198, - 0xd0f90231, - 0xd0f9e0f9, - 0x000067f1, - 0x100063f1, - 0xbb016792, + 0xb609fa21, + 0x11f40464, + 0x2ec3e729, + 0x0134b601, + 0xbb0553fd, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x0af321f5, - 0xfc0464b6, - 0x00d6b0d0, - 0x00b31bf5, - 0xbb0057f0, + 0x0b6321f5, +/* 0x0c03: i2c_addr_done */ + 0xf80464b6, +/* 0x0c05: i2c_acquire_addr */ + 0xf8cec700, + 0xb702e4b6, + 0x980d24e0, + 0x00f800ee, +/* 0x0c14: i2c_acquire */ + 0x0c0521f5, + 0xf00421f4, + 0x21f403d9, +/* 0x0c23: i2c_release */ + 0xf500f840, + 0xf40c0521, + 0xdaf00421, + 0x4021f403, +/* 0x0c32: i2c_recv */ + 0x32f400f8, + 0xf8c1c701, + 0xb00214b6, + 0x1ff52816, + 0x13a0013a, + 0x32980cfc, + 0xd413a000, + 0x0031980c, + 0xf90231f4, + 0xf9e0f9d0, + 0x0067f1d0, + 0x0063f100, + 0x01679210, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x1421f550, + 0x0464b60c, + 0xd6b0d0fc, + 0xb31bf500, + 0x0057f000, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0xbe21f550, + 0x0464b60b, + 0x00d011f5, + 0xbbe0c5c7, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x0a9d21f5, + 0x0b6321f5, 0xf50464b6, - 0xc700d011, - 0x76bbe0c5, + 0xf000ad11, + 0x76bb0157, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb60a4221, + 0xb60bbe21, 0x11f50464, - 0x57f000ad, - 0x0076bb01, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b60a9d, - 0x8a11f504, - 0x0076bb00, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b609f0, - 0x6a11f404, - 0xbbe05bcb, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x093521f5, - 0xb90464b6, - 0x74bd025b, -/* 0x0c17: i2c_recv_not_rd08 */ - 0xb0430ef4, - 0x1bf401d6, - 0x0057f03d, - 0x0a9d21f5, - 0xc73311f4, - 0x21f5e0c5, - 0x11f40a42, - 0x0057f029, - 0x0a9d21f5, - 0xc71f11f4, - 0x21f5e0b5, - 0x11f40a42, - 0x3521f515, - 0xc774bd09, - 0x1bf408c5, - 0x0232f409, -/* 0x0c57: i2c_recv_not_wr08 */ -/* 0x0c57: i2c_recv_done */ - 0xc7030ef4, - 0x21f5f8ce, - 0xe0fc0b02, - 0x12f4d0fc, - 0x027cb90a, - 0x033621f5, -/* 0x0c6c: i2c_recv_exit */ -/* 0x0c6e: i2c_init */ + 0x76bb008a, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb60b1121, + 0x11f40464, + 0xe05bcb6a, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x5621f550, + 0x0464b60a, + 0xbd025bb9, + 0x430ef474, +/* 0x0d38: i2c_recv_not_rd08 */ + 0xf401d6b0, + 0x57f03d1b, + 0xbe21f500, + 0x3311f40b, + 0xf5e0c5c7, + 0xf40b6321, + 0x57f02911, + 0xbe21f500, + 0x1f11f40b, + 0xf5e0b5c7, + 0xf40b6321, + 0x21f51511, + 0x74bd0a56, + 0xf408c5c7, + 0x32f4091b, + 0x030ef402, +/* 0x0d78: i2c_recv_not_wr08 */ +/* 0x0d78: i2c_recv_done */ + 0xf5f8cec7, + 0xfc0c2321, + 0xf4d0fce0, + 0x7cb90a12, + 0x3621f502, +/* 0x0d8d: i2c_recv_exit */ +/* 0x0d8f: i2c_init */ + 0xf800f803, +/* 0x0d91: test_recv */ + 0xd817f100, + 0x0614b605, + 0xb60011cf, + 0x07f10110, + 0x04b605d8, + 0x0001d006, + 0xe7f104bd, + 0xe3f1d900, + 0x21f5134f, + 0x00f80256, +/* 0x0db8: test_init */ + 0x0800e7f1, + 0x025621f5, +/* 0x0dc2: idle_recv */ 0x00f800f8, -/* 0x0c70: test_recv */ - 0x05d817f1, - 0xcf0614b6, - 0x10b60011, - 0xd807f101, - 0x0604b605, - 0xbd0001d0, - 0x00e7f104, - 0x4fe3f1d9, - 0x5621f513, -/* 0x0c97: test_init */ - 0xf100f802, - 0xf50800e7, - 0xf8025621, -/* 0x0ca1: idle_recv */ -/* 0x0ca3: idle */ - 0xf400f800, - 0x17f10031, - 0x14b605d4, - 0x0011cf06, - 0xf10110b6, - 0xb605d407, - 0x01d00604, -/* 0x0cbf: idle_loop */ - 0xf004bd00, - 0x32f45817, -/* 0x0cc5: idle_proc */ -/* 0x0cc5: idle_proc_exec */ - 0xb910f902, - 0x21f5021e, - 0x10fc033f, - 0xf40911f4, - 0x0ef40231, -/* 0x0cd9: idle_proc_next */ - 0x5810b6ef, - 0xf4061fb8, - 0x02f4e61b, - 0x0028f4dd, - 0x00bb0ef4, +/* 0x0dc4: idle */ + 0xf10031f4, + 0xb605d417, + 0x11cf0614, + 0x0110b600, + 0x05d407f1, + 0xd00604b6, + 0x04bd0001, +/* 0x0de0: idle_loop */ + 0xf45817f0, +/* 0x0de6: idle_proc */ +/* 0x0de6: idle_proc_exec */ + 0x10f90232, + 0xf5021eb9, + 0xfc033f21, + 0x0911f410, + 0xf40231f4, +/* 0x0dfa: idle_proc_next */ + 0x10b6ef0e, + 0x061fb858, + 0xf4e61bf4, + 0x28f4dd02, + 0xbb0ef400, + 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, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, diff --git a/drm/nouveau/nvkm/subdev/pmu/fuc/perf.fuc b/drm/nouveau/nvkm/subdev/pmu/fuc/perf.fuc index 38eadf70..4d28b41c 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 +// parameters +perf_polling_period_us: .b32 100000 +perf_slot1: .b8 0 +perf_slot2: .b8 0 +perf_slot3: .b8 0 +#if NVKM_PPWR_CHIPSET >= GF100 +perf_slot4: .b8 0 +perf_slot5: .b8 0 +perf_slot6: .b8 0 +perf_slot7: .b8 0 +#endif +.align 4 #endif /****************************************************************************** @@ -46,6 +58,92 @@ 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 + 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: + push $r1 + push $r2 + push $r3 + push $r4 +#if NVKM_PPWR_CHIPSET >= GF100 + push $r5 + push $r6 + push $r7 + push $r8 +#endif + + // read out all at once to reduce latency problems + nv_iord($r1, NV_PPWR_COUNTER_COUNT(0)) + nv_iord($r2, NV_PPWR_COUNTER_COUNT(1)) + nv_iord($r3, NV_PPWR_COUNTER_COUNT(2)) + nv_iord($r4, NV_PPWR_COUNTER_COUNT(3)) +#if NVKM_PPWR_CHIPSET >= GF100 + nv_iord($r5, NV_PPWR_COUNTER_COUNT(4)) + nv_iord($r6, NV_PPWR_COUNTER_COUNT(5)) + nv_iord($r7, NV_PPWR_COUNTER_COUNT(6)) + nv_iord($r8, NV_PPWR_COUNTER_COUNT(7)) +#endif + + 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) + nv_iowr(NV_PPWR_COUNTER_COUNT(5), $r14) + nv_iowr(NV_PPWR_COUNTER_COUNT(6), $r14) + nv_iowr(NV_PPWR_COUNTER_COUNT(7), $r14) +#endif + + // with that we always get 8 bit values + div $r1 $r1 0xff + + div $r2 $r2 $r1 + div $r3 $r3 $r1 + div $r4 $r4 $r1 +#if NVKM_PPWR_CHIPSET >= GF100 + div $r5 $r5 $r1 + div $r6 $r6 $r1 + div $r7 $r7 $r1 + div $r8 $r8 $r1 +#endif + + st(b8, #perf_slot1, $r2) + st(b8, #perf_slot2, $r3) + st(b8, #perf_slot3, $r4) +#if NVKM_PPWR_CHIPSET >= GF100 + st(b8, #perf_slot4, $r5) + st(b8, #perf_slot5, $r6) + st(b8, #perf_slot6, $r7) + st(b8, #perf_slot7, $r8) +#endif + +#if NVKM_PPWR_CHIPSET >= GF100 + pop $r8 + pop $r7 + pop $r6 + pop $r5 +#endif + pop $r4 + pop $r3 + pop $r2 + pop $r1 + ret // description @@ -53,5 +151,27 @@ perf_recv: // $r15 - current (perf) // $r0 - zero perf_init: + imm32($r14, NV_PPWR_COUNTER_MODE_ALWAYS) + nv_iowr(NV_PPWR_COUNTER_MODE(0), $r14) + + imm32($r14, NV_PPWR_COUNTER_MODE_IF_ANY) + 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) + nv_iowr(NV_PPWR_COUNTER_MODE(5), $r14) + nv_iowr(NV_PPWR_COUNTER_MODE(6), $r14) + nv_iowr(NV_PPWR_COUNTER_MODE(7), $r14) +#endif + + // initial readout + 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.13.0
Reads out all stored 8 bit slot values. The 0th one being always 0xff. v3: Add macros documenting the command. Signed-off-by: Karol Herbst <karolherbst at gmail.com> --- drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h | 894 ++++++++++++++------------- drm/nouveau/nvkm/subdev/pmu/fuc/gf119.fuc4.h | 840 +++++++++++++------------ drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h | 776 ++++++++++++----------- drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h | 770 +++++++++++------------ drm/nouveau/nvkm/subdev/pmu/fuc/os.h | 12 + drm/nouveau/nvkm/subdev/pmu/fuc/perf.fuc | 29 +- 6 files changed, 1780 insertions(+), 1541 deletions(-) diff --git a/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h b/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h index 9ed8e313..2cbdcdff 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, - 0x000008c9, + 0x0000094b, 0x00000758, 0x00000000, 0x00000000, @@ -90,8 +90,8 @@ uint32_t gf100_pmu_data[] = { 0x00000000, 0x00000000, 0x5f433249, - 0x00000d7f, - 0x00000c22, + 0x00000e01, + 0x00000ca4, 0x00000000, 0x00000000, 0x00000000, @@ -112,8 +112,8 @@ uint32_t gf100_pmu_data[] = { 0x00000000, 0x00000000, 0x54534554, - 0x00000da8, - 0x00000d81, + 0x00000e2a, + 0x00000e03, 0x00000000, 0x00000000, 0x00000000, @@ -134,8 +134,8 @@ uint32_t gf100_pmu_data[] = { 0x00000000, 0x00000000, 0x454c4449, - 0x00000db4, - 0x00000db2, + 0x00000e36, + 0x00000e34, 0x00000000, 0x00000000, 0x00000000, @@ -1462,477 +1462,543 @@ uint32_t gf100_pmu_code[] = { /* 0x0758: perf_recv */ 0x4f48a7f1, 0x5453a3f1, - 0xf406eab8, - 0x0ef4061b, -/* 0x0769: perf_recv_not_host */ - 0x8321f51b, - 0xcc07f107, + 0xf506eab8, + 0xf100811b, + 0xf00001a7, + 0xdab800a3, + 0x070bf406, + 0x008b0ef5, +/* 0x0778: perf_recv_get_slots */ + 0x0cd207f1, + 0x180003f0, + 0x04bd000c, + 0xf108c4b6, + 0xf00cd107, + 0x0c180003, + 0xb604bd00, + 0x07f108c4, + 0x03f00cd0, + 0x000c1800, + 0xc4b604bd, + 0xffc5f008, + 0x0cd607f1, + 0x180003f0, + 0x04bd000b, + 0xf108b4b6, + 0xf00cd507, + 0x0b180003, + 0xb604bd00, + 0x07f108b4, + 0x03f00cd4, + 0x000b1800, + 0xb4b604bd, + 0xd307f108, + 0x0003f00c, + 0xbd000b18, + 0x1e0ef404, +/* 0x07e4: perf_recv_not_host */ + 0x080521f5, + 0x0ccc07f1, + 0x980003f0, + 0x04bd000e, + 0x022a21f5, + 0x025621f5, +/* 0x07ff: perf_recv_host */ + 0xf5070ef4, +/* 0x0803: perf_recv_exit */ + 0xf8033621, +/* 0x0805: perf_counter_readout */ + 0xf910f900, + 0xf930f920, + 0xf950f940, + 0xf970f960, + 0x0817f180, + 0x0614b605, + 0xf10011cf, + 0xb6051827, + 0x22cf0624, + 0x2837f100, + 0x0634b605, + 0xf10033cf, + 0xb6053847, + 0x44cf0644, + 0x4857f100, + 0x0654b605, + 0xf10055cf, + 0xb6055867, + 0x66cf0664, + 0x6877f100, + 0x0674b605, + 0xf10077cf, + 0xb6057887, + 0x88cf0684, + 0x00e7f100, + 0x00e3f100, + 0x0807f180, + 0x0604b605, + 0xbd000ed0, + 0x1807f104, + 0x0604b605, + 0xbd000ed0, + 0x2807f104, + 0x0604b605, + 0xbd000ed0, + 0x3807f104, + 0x0604b605, + 0xbd000ed0, + 0x4807f104, + 0x0604b605, + 0xbd000ed0, + 0x5807f104, + 0x0604b605, + 0xbd000ed0, + 0x6807f104, + 0x0604b605, + 0xbd000ed0, + 0x7807f104, + 0x0604b605, + 0xbd000ed0, + 0xff11cc04, + 0xff2c21ff, + 0x41ff3c31, + 0x5c51ff4c, + 0xff6c61ff, + 0x81ff7c71, + 0xd007f18c, + 0x0003f00c, + 0xbd000200, + 0xd107f104, + 0x0003f00c, + 0xbd000300, + 0xd207f104, + 0x0003f00c, + 0xbd000400, + 0xd307f104, + 0x0003f00c, + 0xbd000500, + 0xd407f104, + 0x0003f00c, + 0xbd000600, + 0xd507f104, + 0x0003f00c, + 0xbd000700, + 0xd607f104, + 0x0003f00c, + 0xbd000800, + 0xfc80fc04, + 0xfc60fc70, + 0xfc40fc50, + 0xfc20fc30, +/* 0x094b: perf_init */ + 0xf100f810, + 0xf00003e7, + 0x07f100e3, + 0x04b6050c, + 0x000ed006, + 0xe7f104bd, + 0xe3f00002, + 0x1c07f100, + 0x0604b605, + 0xbd000ed0, + 0x2c07f104, + 0x0604b605, + 0xbd000ed0, + 0x3c07f104, + 0x0604b605, + 0xbd000ed0, + 0x4c07f104, + 0x0604b605, + 0xbd000ed0, + 0x5c07f104, + 0x0604b605, + 0xbd000ed0, + 0x6c07f104, + 0x0604b605, + 0xbd000ed0, + 0x7c07f104, + 0x0604b605, + 0xbd000ed0, + 0x0521f504, + 0xcc07f108, 0x0003f00c, 0xbd000e98, 0x2a21f504, 0x5621f502, -/* 0x0781: perf_recv_exit */ -/* 0x0783: perf_counter_readout */ - 0xf900f802, - 0xf920f910, - 0xf940f930, - 0xf960f950, - 0xf180f970, - 0xb6050817, - 0x11cf0614, - 0x1827f100, - 0x0624b605, - 0xf10022cf, - 0xb6052837, - 0x33cf0634, - 0x3847f100, - 0x0644b605, - 0xf10044cf, - 0xb6054857, - 0x55cf0654, - 0x5867f100, - 0x0664b605, - 0xf10066cf, - 0xb6056877, - 0x77cf0674, - 0x7887f100, - 0x0684b605, - 0xf10088cf, - 0xf10000e7, - 0xf18000e3, - 0xb6050807, - 0x0ed00604, - 0xf104bd00, - 0xb6051807, - 0x0ed00604, - 0xf104bd00, - 0xb6052807, - 0x0ed00604, - 0xf104bd00, - 0xb6053807, - 0x0ed00604, - 0xf104bd00, - 0xb6054807, - 0x0ed00604, - 0xf104bd00, - 0xb6055807, - 0x0ed00604, - 0xf104bd00, - 0xb6056807, - 0x0ed00604, - 0xf104bd00, - 0xb6057807, - 0x0ed00604, - 0xcc04bd00, - 0x21ffff11, - 0x3c31ff2c, - 0xff4c41ff, - 0x61ff5c51, - 0x7c71ff6c, - 0xf18c81ff, - 0xf00cd007, - 0x02000003, - 0xf104bd00, - 0xf00cd107, - 0x03000003, - 0xf104bd00, - 0xf00cd207, - 0x04000003, - 0xf104bd00, - 0xf00cd307, - 0x05000003, - 0xf104bd00, - 0xf00cd407, - 0x06000003, - 0xf104bd00, - 0xf00cd507, - 0x07000003, - 0xf104bd00, - 0xf00cd607, - 0x08000003, - 0xfc04bd00, - 0xfc70fc80, - 0xfc50fc60, - 0xfc30fc40, - 0xf810fc20, -/* 0x08c9: perf_init */ - 0x03e7f100, - 0x00e3f000, - 0x050c07f1, - 0xd00604b6, - 0x04bd000e, - 0x0002e7f1, - 0xf100e3f0, - 0xb6051c07, - 0x0ed00604, - 0xf104bd00, - 0xb6052c07, - 0x0ed00604, - 0xf104bd00, - 0xb6053c07, - 0x0ed00604, - 0xf104bd00, - 0xb6054c07, - 0x0ed00604, - 0xf104bd00, - 0xb6055c07, - 0x0ed00604, - 0xf104bd00, - 0xb6056c07, - 0x0ed00604, - 0xf104bd00, - 0xb6057c07, - 0x0ed00604, - 0xf504bd00, - 0xf1078321, - 0xf00ccc07, - 0x0e980003, - 0xf504bd00, - 0xf5022a21, - 0xf8025621, -/* 0x0951: i2c_drive_scl */ - 0x0036b000, - 0xf1110bf4, - 0xb607e007, - 0x01d00604, - 0xf804bd00, -/* 0x0965: i2c_drive_scl_lo */ - 0xe407f100, - 0x0604b607, - 0xbd0001d0, -/* 0x0973: i2c_drive_sda */ - 0xb000f804, +/* 0x09d3: i2c_drive_scl */ + 0xb000f802, 0x0bf40036, 0xe007f111, 0x0604b607, - 0xbd0002d0, -/* 0x0987: i2c_drive_sda_lo */ + 0xbd0001d0, +/* 0x09e7: i2c_drive_scl_lo */ 0xf100f804, 0xb607e407, + 0x01d00604, + 0xf804bd00, +/* 0x09f5: i2c_drive_sda */ + 0x0036b000, + 0xf1110bf4, + 0xb607e007, 0x02d00604, 0xf804bd00, -/* 0x0995: i2c_sense_scl */ - 0x0132f400, - 0x07c437f1, - 0xcf0634b6, - 0x31fd0033, - 0x060bf404, -/* 0x09ab: i2c_sense_scl_done */ - 0xf80131f4, -/* 0x09ad: i2c_sense_sda */ - 0x0132f400, - 0x07c437f1, - 0xcf0634b6, - 0x32fd0033, - 0x060bf404, -/* 0x09c3: i2c_sense_sda_done */ - 0xf80131f4, -/* 0x09c5: i2c_raise_scl */ - 0xf140f900, - 0xf0089847, - 0x21f50137, -/* 0x09d2: i2c_raise_scl_wait */ - 0xe7f10951, - 0x21f403e8, - 0x9521f57e, - 0x0901f409, - 0xf40142b6, -/* 0x09e6: i2c_raise_scl_done */ - 0x40fcef1b, -/* 0x09ea: i2c_start */ - 0x21f500f8, - 0x11f40995, - 0xad21f50d, - 0x0611f409, -/* 0x09fb: i2c_start_rep */ - 0xf0300ef4, - 0x21f50037, - 0x37f00951, - 0x7321f501, - 0x0076bb09, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b609c5, - 0x1f11f404, -/* 0x0a28: i2c_start_send */ - 0xf50037f0, - 0xf1097321, - 0xf41388e7, - 0x37f07e21, - 0x5121f500, +/* 0x0a09: i2c_drive_sda_lo */ + 0xe407f100, + 0x0604b607, + 0xbd0002d0, +/* 0x0a17: i2c_sense_scl */ + 0xf400f804, + 0x37f10132, + 0x34b607c4, + 0x0033cf06, + 0xf40431fd, + 0x31f4060b, +/* 0x0a2d: i2c_sense_scl_done */ +/* 0x0a2f: i2c_sense_sda */ + 0xf400f801, + 0x37f10132, + 0x34b607c4, + 0x0033cf06, + 0xf40432fd, + 0x31f4060b, +/* 0x0a45: i2c_sense_sda_done */ +/* 0x0a47: i2c_raise_scl */ + 0xf900f801, + 0x9847f140, + 0x0137f008, + 0x09d321f5, +/* 0x0a54: i2c_raise_scl_wait */ + 0x03e8e7f1, + 0xf57e21f4, + 0xf40a1721, + 0x42b60901, + 0xef1bf401, +/* 0x0a68: i2c_raise_scl_done */ + 0x00f840fc, +/* 0x0a6c: i2c_start */ + 0x0a1721f5, + 0xf50d11f4, + 0xf40a2f21, + 0x0ef40611, +/* 0x0a7d: i2c_start_rep */ + 0x0037f030, + 0x09d321f5, + 0xf50137f0, + 0xbb09f521, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x0a4721f5, + 0xf40464b6, +/* 0x0aaa: i2c_start_send */ + 0x37f01f11, + 0xf521f500, 0x88e7f109, 0x7e21f413, -/* 0x0a44: i2c_start_out */ -/* 0x0a46: i2c_stop */ - 0x37f000f8, - 0x5121f500, - 0x0037f009, - 0x097321f5, - 0x03e8e7f1, + 0xf50037f0, + 0xf109d321, + 0xf41388e7, +/* 0x0ac6: i2c_start_out */ + 0x00f87e21, +/* 0x0ac8: i2c_stop */ + 0xf50037f0, + 0xf009d321, + 0x21f50037, + 0xe7f109f5, + 0x21f403e8, + 0x0137f07e, + 0x09d321f5, + 0x1388e7f1, 0xf07e21f4, 0x21f50137, - 0xe7f10951, + 0xe7f109f5, 0x21f41388, - 0x0137f07e, - 0x097321f5, - 0x1388e7f1, - 0xf87e21f4, -/* 0x0a79: i2c_bitw */ - 0x7321f500, - 0xe8e7f109, - 0x7e21f403, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0xc521f550, - 0x0464b609, - 0xf11811f4, - 0xf41388e7, - 0x37f07e21, - 0x5121f500, - 0x88e7f109, +/* 0x0afb: i2c_bitw */ + 0xf500f87e, + 0xf109f521, + 0xf403e8e7, + 0x76bb7e21, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb60a4721, + 0x11f40464, + 0x88e7f118, 0x7e21f413, -/* 0x0ab8: i2c_bitw_out */ -/* 0x0aba: i2c_bitr */ - 0x37f000f8, - 0x7321f501, - 0xe8e7f109, - 0x7e21f403, + 0xf50037f0, + 0xf109d321, + 0xf41388e7, +/* 0x0b3a: i2c_bitw_out */ + 0x00f87e21, +/* 0x0b3c: i2c_bitr */ + 0xf50137f0, + 0xf109f521, + 0xf403e8e7, + 0x76bb7e21, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb60a4721, + 0x11f40464, + 0x2f21f51b, + 0x0037f00a, + 0x09d321f5, + 0x1388e7f1, + 0xf07e21f4, + 0x31f4013c, +/* 0x0b81: i2c_bitr_done */ +/* 0x0b83: i2c_get_byte */ + 0xf000f801, + 0x47f00057, +/* 0x0b89: i2c_get_byte_next */ + 0x0154b608, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0xc521f550, - 0x0464b609, - 0xf51b11f4, - 0xf009ad21, - 0x21f50037, - 0xe7f10951, - 0x21f41388, - 0x013cf07e, -/* 0x0aff: i2c_bitr_done */ - 0xf80131f4, -/* 0x0b01: i2c_get_byte */ - 0x0057f000, -/* 0x0b07: i2c_get_byte_next */ - 0xb60847f0, - 0x76bb0154, + 0x3c21f550, + 0x0464b60b, + 0xfd2b11f4, + 0x42b60553, + 0xd81bf401, + 0xbb0137f0, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x0afb21f5, +/* 0x0bd3: i2c_get_byte_done */ + 0xf80464b6, +/* 0x0bd5: i2c_put_byte */ + 0x0847f000, +/* 0x0bd8: i2c_put_byte_next */ + 0xff0142b6, + 0x76bb3854, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb60aba21, + 0xb60afb21, 0x11f40464, - 0x0553fd2b, - 0xf40142b6, - 0x37f0d81b, - 0x0076bb01, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b60a79, -/* 0x0b51: i2c_get_byte_done */ -/* 0x0b53: i2c_put_byte */ - 0xf000f804, -/* 0x0b56: i2c_put_byte_next */ - 0x42b60847, - 0x3854ff01, + 0x0046b034, + 0xbbd81bf4, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x0b3c21f5, + 0xf40464b6, + 0x76bb0f11, + 0x0136b000, + 0xf4061bf4, +/* 0x0c2e: i2c_put_byte_done */ + 0x00f80132, +/* 0x0c30: i2c_addr */ 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x7921f550, + 0x6c21f550, 0x0464b60a, - 0xb03411f4, - 0x1bf40046, - 0x0076bbd8, + 0xe72911f4, + 0xb6012ec3, + 0x53fd0134, + 0x0076bb05, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b60aba, - 0x0f11f404, - 0xb00076bb, - 0x1bf40136, - 0x0132f406, -/* 0x0bac: i2c_put_byte_done */ -/* 0x0bae: i2c_addr */ - 0x76bb00f8, + 0x64b60bd5, +/* 0x0c75: i2c_addr_done */ +/* 0x0c77: i2c_acquire_addr */ + 0xc700f804, + 0xe4b6f8ce, + 0x28e0b702, + 0x00ee980d, +/* 0x0c86: i2c_acquire */ + 0x21f500f8, + 0x21f40c77, + 0x03d9f004, + 0xf84021f4, +/* 0x0c95: i2c_release */ + 0x7721f500, + 0x0421f40c, + 0xf403daf0, + 0x00f84021, +/* 0x0ca4: i2c_recv */ + 0xc70132f4, + 0x14b6f8c1, + 0x2816b002, + 0x013a1ff5, + 0x0d0013a0, + 0xa0003298, + 0x980cd813, + 0x31f40031, + 0xf9d0f902, + 0xf1d0f9e0, + 0xf1000067, + 0x92100063, + 0x76bb0167, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb609ea21, - 0x11f40464, - 0x2ec3e729, - 0x0134b601, - 0xbb0553fd, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x0b5321f5, -/* 0x0bf3: i2c_addr_done */ - 0xf80464b6, -/* 0x0bf5: i2c_acquire_addr */ - 0xf8cec700, - 0xb702e4b6, - 0x980d28e0, - 0x00f800ee, -/* 0x0c04: i2c_acquire */ - 0x0bf521f5, - 0xf00421f4, - 0x21f403d9, -/* 0x0c13: i2c_release */ - 0xf500f840, - 0xf40bf521, - 0xdaf00421, - 0x4021f403, -/* 0x0c22: i2c_recv */ - 0x32f400f8, - 0xf8c1c701, - 0xb00214b6, - 0x1ff52816, - 0x13a0013a, - 0x32980d00, - 0xd813a000, - 0x0031980c, - 0xf90231f4, - 0xf9e0f9d0, - 0x0067f1d0, - 0x0063f100, - 0x01679210, + 0xb60c8621, + 0xd0fc0464, + 0xf500d6b0, + 0xf000b31b, + 0x76bb0057, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb60c3021, + 0x11f50464, + 0xc5c700d0, + 0x0076bbe0, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b60bd5, + 0xad11f504, + 0x0157f000, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x0421f550, + 0x3021f550, 0x0464b60c, - 0xd6b0d0fc, - 0xb31bf500, - 0x0057f000, + 0x008a11f5, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0xae21f550, + 0x8321f550, 0x0464b60b, - 0x00d011f5, - 0xbbe0c5c7, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x0b5321f5, - 0xf50464b6, - 0xf000ad11, - 0x76bb0157, + 0xcb6a11f4, + 0x76bbe05b, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb60bae21, - 0x11f50464, - 0x76bb008a, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0xf550fc04, - 0xb60b0121, - 0x11f40464, - 0xe05bcb6a, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0x4621f550, - 0x0464b60a, - 0xbd025bb9, - 0x430ef474, -/* 0x0d28: i2c_recv_not_rd08 */ - 0xf401d6b0, - 0x57f03d1b, - 0xae21f500, - 0x3311f40b, - 0xf5e0c5c7, - 0xf40b5321, - 0x57f02911, - 0xae21f500, - 0x1f11f40b, - 0xf5e0b5c7, - 0xf40b5321, - 0x21f51511, - 0x74bd0a46, - 0xf408c5c7, - 0x32f4091b, - 0x030ef402, -/* 0x0d68: i2c_recv_not_wr08 */ -/* 0x0d68: i2c_recv_done */ - 0xf5f8cec7, - 0xfc0c1321, - 0xf4d0fce0, - 0x7cb90a12, - 0x3621f502, -/* 0x0d7d: i2c_recv_exit */ -/* 0x0d7f: i2c_init */ - 0xf800f803, -/* 0x0d81: test_recv */ - 0xd817f100, - 0x0614b605, - 0xb60011cf, - 0x07f10110, - 0x04b605d8, - 0x0001d006, - 0xe7f104bd, - 0xe3f1d900, - 0x21f5134f, - 0x00f80256, -/* 0x0da8: test_init */ - 0x0800e7f1, - 0x025621f5, -/* 0x0db2: idle_recv */ - 0x00f800f8, -/* 0x0db4: idle */ - 0xf10031f4, - 0xb605d417, + 0xb60ac821, + 0x5bb90464, + 0xf474bd02, +/* 0x0daa: i2c_recv_not_rd08 */ + 0xd6b0430e, + 0x3d1bf401, + 0xf50057f0, + 0xf40c3021, + 0xc5c73311, + 0xd521f5e0, + 0x2911f40b, + 0xf50057f0, + 0xf40c3021, + 0xb5c71f11, + 0xd521f5e0, + 0x1511f40b, + 0x0ac821f5, + 0xc5c774bd, + 0x091bf408, + 0xf40232f4, +/* 0x0dea: i2c_recv_not_wr08 */ +/* 0x0dea: i2c_recv_done */ + 0xcec7030e, + 0x9521f5f8, + 0xfce0fc0c, + 0x0a12f4d0, + 0xf5027cb9, +/* 0x0dff: i2c_recv_exit */ + 0xf8033621, +/* 0x0e01: i2c_init */ +/* 0x0e03: test_recv */ + 0xf100f800, + 0xb605d817, 0x11cf0614, 0x0110b600, - 0x05d407f1, + 0x05d807f1, 0xd00604b6, 0x04bd0001, -/* 0x0dd0: idle_loop */ - 0xf45817f0, -/* 0x0dd6: idle_proc */ -/* 0x0dd6: idle_proc_exec */ - 0x10f90232, - 0xf5021eb9, - 0xfc033f21, - 0x0911f410, - 0xf40231f4, -/* 0x0dea: idle_proc_next */ - 0x10b6ef0e, - 0x061fb858, - 0xf4e61bf4, - 0x28f4dd02, - 0xbb0ef400, + 0xd900e7f1, + 0x134fe3f1, + 0x025621f5, +/* 0x0e2a: test_init */ + 0xe7f100f8, + 0x21f50800, + 0x00f80256, +/* 0x0e34: idle_recv */ +/* 0x0e36: idle */ + 0x31f400f8, + 0xd417f100, + 0x0614b605, + 0xb60011cf, + 0x07f10110, + 0x04b605d4, + 0x0001d006, +/* 0x0e52: idle_loop */ + 0x17f004bd, + 0x0232f458, +/* 0x0e58: idle_proc */ +/* 0x0e58: idle_proc_exec */ + 0x1eb910f9, + 0x3f21f502, + 0xf410fc03, + 0x31f40911, + 0xef0ef402, +/* 0x0e6c: 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, }; diff --git a/drm/nouveau/nvkm/subdev/pmu/fuc/gf119.fuc4.h b/drm/nouveau/nvkm/subdev/pmu/fuc/gf119.fuc4.h index 78f6379a..213a774d 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, - 0x000007c6, + 0x00000848, 0x00000685, 0x00000000, 0x00000000, @@ -90,8 +90,8 @@ uint32_t gf119_pmu_data[] = { 0x00000000, 0x00000000, 0x5f433249, - 0x00000c4f, - 0x00000af2, + 0x00000cd1, + 0x00000b74, 0x00000000, 0x00000000, 0x00000000, @@ -112,8 +112,8 @@ uint32_t gf119_pmu_data[] = { 0x00000000, 0x00000000, 0x54534554, - 0x00000c72, - 0x00000c51, + 0x00000cf4, + 0x00000cd3, 0x00000000, 0x00000000, 0x00000000, @@ -134,8 +134,8 @@ uint32_t gf119_pmu_data[] = { 0x00000000, 0x00000000, 0x454c4449, - 0x00000c7e, - 0x00000c7c, + 0x00000d00, + 0x00000cfe, 0x00000000, 0x00000000, 0x00000000, @@ -1404,451 +1404,517 @@ uint32_t gf119_pmu_code[] = { 0x48a7f100, 0x53a3f14f, 0x06eab854, - 0xf4061bf4, -/* 0x0696: perf_recv_not_host */ - 0x21f51b0e, - 0x07f106b0, - 0x03f00ccc, - 0x000e9800, - 0x21f504bd, - 0x21f501eb, -/* 0x06ae: perf_recv_exit */ - 0x00f80217, -/* 0x06b0: perf_counter_readout */ - 0x20f910f9, - 0x40f930f9, - 0x60f950f9, - 0x80f970f9, - 0x050817f1, - 0xf10011cf, - 0xcf051827, - 0x37f10022, - 0x33cf0528, - 0x3847f100, - 0x0044cf05, - 0x054857f1, - 0xf10055cf, - 0xcf055867, - 0x77f10066, - 0x77cf0568, - 0x7887f100, - 0x0088cf05, - 0x0000e7f1, - 0x8000e3f1, - 0x050807f1, - 0xbd000ed0, - 0x1807f104, - 0x000ed005, - 0x07f104bd, - 0x0ed00528, + 0x00811bf5, + 0x0001a7f1, + 0xb800a3f0, + 0x0bf406da, + 0x8b0ef507, +/* 0x06a5: perf_recv_get_slots */ + 0xd207f100, + 0x0003f00c, + 0xbd000c18, + 0x08c4b604, + 0x0cd107f1, + 0x180003f0, + 0x04bd000c, + 0xf108c4b6, + 0xf00cd007, + 0x0c180003, + 0xb604bd00, + 0xc5f008c4, + 0xd607f1ff, + 0x0003f00c, + 0xbd000b18, + 0x08b4b604, + 0x0cd507f1, + 0x180003f0, + 0x04bd000b, + 0xf108b4b6, + 0xf00cd407, + 0x0b180003, + 0xb604bd00, + 0x07f108b4, + 0x03f00cd3, + 0x000b1800, + 0x0ef404bd, +/* 0x0711: perf_recv_not_host */ + 0x3221f51e, + 0xcc07f107, + 0x0003f00c, + 0xbd000e98, + 0xeb21f504, + 0x1721f501, + 0x070ef402, +/* 0x072c: perf_recv_host */ + 0x02e521f5, +/* 0x0730: perf_recv_exit */ +/* 0x0732: perf_counter_readout */ + 0x10f900f8, + 0x30f920f9, + 0x50f940f9, + 0x70f960f9, + 0x17f180f9, + 0x11cf0508, + 0x1827f100, + 0x0022cf05, + 0x052837f1, + 0xf10033cf, + 0xcf053847, + 0x57f10044, + 0x55cf0548, + 0x5867f100, + 0x0066cf05, + 0x056877f1, + 0xf10077cf, + 0xcf057887, + 0xe7f10088, + 0xe3f10000, + 0x07f18000, + 0x0ed00508, 0xf104bd00, - 0xd0053807, + 0xd0051807, 0x04bd000e, - 0x054807f1, + 0x052807f1, 0xbd000ed0, - 0x5807f104, + 0x3807f104, 0x000ed005, 0x07f104bd, - 0x0ed00568, + 0x0ed00548, 0xf104bd00, - 0xd0057807, + 0xd0055807, 0x04bd000e, - 0xffff11cc, - 0x31ff2c21, - 0x4c41ff3c, - 0xff5c51ff, - 0x71ff6c61, - 0x8c81ff7c, - 0x0cd007f1, - 0x000003f0, - 0x04bd0002, - 0x0cd107f1, - 0x000003f0, - 0x04bd0003, - 0x0cd207f1, - 0x000003f0, - 0x04bd0004, - 0x0cd307f1, - 0x000003f0, - 0x04bd0005, - 0x0cd407f1, - 0x000003f0, - 0x04bd0006, - 0x0cd507f1, - 0x000003f0, - 0x04bd0007, - 0x0cd607f1, - 0x000003f0, - 0x04bd0008, - 0x70fc80fc, - 0x50fc60fc, - 0x30fc40fc, - 0x10fc20fc, -/* 0x07c6: perf_init */ - 0xe7f100f8, - 0xe3f00003, - 0x0c07f100, - 0x000ed005, - 0xe7f104bd, - 0xe3f00002, - 0x1c07f100, + 0x056807f1, + 0xbd000ed0, + 0x7807f104, 0x000ed005, + 0x11cc04bd, + 0x2c21ffff, + 0xff3c31ff, + 0x51ff4c41, + 0x6c61ff5c, + 0xff7c71ff, + 0x07f18c81, + 0x03f00cd0, + 0x00020000, 0x07f104bd, - 0x0ed0052c, - 0xf104bd00, - 0xd0053c07, + 0x03f00cd1, + 0x00030000, + 0x07f104bd, + 0x03f00cd2, + 0x00040000, + 0x07f104bd, + 0x03f00cd3, + 0x00050000, + 0x07f104bd, + 0x03f00cd4, + 0x00060000, + 0x07f104bd, + 0x03f00cd5, + 0x00070000, + 0x07f104bd, + 0x03f00cd6, + 0x00080000, + 0x80fc04bd, + 0x60fc70fc, + 0x40fc50fc, + 0x20fc30fc, + 0x00f810fc, +/* 0x0848: perf_init */ + 0x0003e7f1, + 0xf100e3f0, + 0xd0050c07, 0x04bd000e, - 0x054c07f1, + 0x0002e7f1, + 0xf100e3f0, + 0xd0051c07, + 0x04bd000e, + 0x052c07f1, 0xbd000ed0, - 0x5c07f104, + 0x3c07f104, 0x000ed005, 0x07f104bd, - 0x0ed0056c, + 0x0ed0054c, 0xf104bd00, - 0xd0057c07, - 0x04bd000e, - 0x06b021f5, - 0x0ccc07f1, - 0x980003f0, + 0xd0055c07, 0x04bd000e, - 0x01eb21f5, - 0x021721f5, -/* 0x0836: i2c_drive_scl */ - 0x36b000f8, - 0x0e0bf400, - 0x07e007f1, - 0xbd0001d0, -/* 0x0847: i2c_drive_scl_lo */ - 0xf100f804, - 0xd007e407, - 0x04bd0001, -/* 0x0852: i2c_drive_sda */ - 0x36b000f8, - 0x0e0bf400, - 0x07e007f1, - 0xbd0002d0, -/* 0x0863: i2c_drive_sda_lo */ - 0xf100f804, - 0xd007e407, - 0x04bd0002, -/* 0x086e: i2c_sense_scl */ - 0x32f400f8, - 0xc437f101, - 0x0033cf07, - 0xf40431fd, - 0x31f4060b, -/* 0x0881: i2c_sense_scl_done */ -/* 0x0883: i2c_sense_sda */ - 0xf400f801, - 0x37f10132, - 0x33cf07c4, - 0x0432fd00, - 0xf4060bf4, -/* 0x0896: i2c_sense_sda_done */ - 0x00f80131, -/* 0x0898: i2c_raise_scl */ - 0x47f140f9, - 0x37f00898, - 0x3621f501, -/* 0x08a5: i2c_raise_scl_wait */ - 0xe8e7f108, - 0x6621f403, - 0x086e21f5, - 0xb60901f4, - 0x1bf40142, -/* 0x08b9: i2c_raise_scl_done */ - 0xf840fcef, -/* 0x08bd: i2c_start */ - 0x6e21f500, - 0x0d11f408, - 0x088321f5, - 0xf40611f4, -/* 0x08ce: i2c_start_rep */ - 0x37f0300e, - 0x3621f500, - 0x0137f008, - 0x085221f5, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0x9821f550, - 0x0464b608, -/* 0x08fb: i2c_start_send */ - 0xf01f11f4, + 0x056c07f1, + 0xbd000ed0, + 0x7c07f104, + 0x000ed005, + 0x21f504bd, + 0x07f10732, + 0x03f00ccc, + 0x000e9800, + 0x21f504bd, + 0x21f501eb, + 0x00f80217, +/* 0x08b8: i2c_drive_scl */ + 0xf40036b0, + 0x07f10e0b, + 0x01d007e0, + 0xf804bd00, +/* 0x08c9: i2c_drive_scl_lo */ + 0xe407f100, + 0x0001d007, + 0x00f804bd, +/* 0x08d4: i2c_drive_sda */ + 0xf40036b0, + 0x07f10e0b, + 0x02d007e0, + 0xf804bd00, +/* 0x08e5: i2c_drive_sda_lo */ + 0xe407f100, + 0x0002d007, + 0x00f804bd, +/* 0x08f0: i2c_sense_scl */ + 0xf10132f4, + 0xcf07c437, + 0x31fd0033, + 0x060bf404, +/* 0x0903: i2c_sense_scl_done */ + 0xf80131f4, +/* 0x0905: i2c_sense_sda */ + 0x0132f400, + 0x07c437f1, + 0xfd0033cf, + 0x0bf40432, + 0x0131f406, +/* 0x0918: i2c_sense_sda_done */ +/* 0x091a: i2c_raise_scl */ + 0x40f900f8, + 0x089847f1, + 0xf50137f0, +/* 0x0927: i2c_raise_scl_wait */ + 0xf108b821, + 0xf403e8e7, + 0x21f56621, + 0x01f408f0, + 0x0142b609, +/* 0x093b: i2c_raise_scl_done */ + 0xfcef1bf4, +/* 0x093f: i2c_start */ + 0xf500f840, + 0xf408f021, + 0x21f50d11, + 0x11f40905, + 0x300ef406, +/* 0x0950: i2c_start_rep */ + 0xf50037f0, + 0xf008b821, + 0x21f50137, + 0x76bb08d4, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb6091a21, + 0x11f40464, +/* 0x097d: i2c_start_send */ + 0x0037f01f, + 0x08d421f5, + 0x1388e7f1, + 0xf06621f4, 0x21f50037, - 0xe7f10852, + 0xe7f108b8, 0x21f41388, - 0x0037f066, - 0x083621f5, - 0x1388e7f1, -/* 0x0917: i2c_start_out */ - 0xf86621f4, -/* 0x0919: i2c_stop */ - 0x0037f000, - 0x083621f5, - 0xf50037f0, - 0xf1085221, - 0xf403e8e7, +/* 0x0999: i2c_start_out */ +/* 0x099b: i2c_stop */ + 0xf000f866, + 0x21f50037, + 0x37f008b8, + 0xd421f500, + 0xe8e7f108, + 0x6621f403, + 0xf50137f0, + 0xf108b821, + 0xf41388e7, 0x37f06621, - 0x3621f501, + 0xd421f501, 0x88e7f108, 0x6621f413, - 0xf50137f0, - 0xf1085221, - 0xf41388e7, - 0x00f86621, -/* 0x094c: i2c_bitw */ - 0x085221f5, - 0x03e8e7f1, - 0xbb6621f4, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x089821f5, - 0xf40464b6, - 0xe7f11811, - 0x21f41388, - 0x0037f066, - 0x083621f5, +/* 0x09ce: i2c_bitw */ + 0x21f500f8, + 0xe7f108d4, + 0x21f403e8, + 0x0076bb66, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b6091a, + 0x1811f404, 0x1388e7f1, -/* 0x098b: i2c_bitw_out */ - 0xf86621f4, -/* 0x098d: i2c_bitr */ - 0x0137f000, - 0x085221f5, - 0x03e8e7f1, - 0xbb6621f4, + 0xf06621f4, + 0x21f50037, + 0xe7f108b8, + 0x21f41388, +/* 0x0a0d: i2c_bitw_out */ +/* 0x0a0f: i2c_bitr */ + 0xf000f866, + 0x21f50137, + 0xe7f108d4, + 0x21f403e8, + 0x0076bb66, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b6091a, + 0x1b11f404, + 0x090521f5, + 0xf50037f0, + 0xf108b821, + 0xf41388e7, + 0x3cf06621, + 0x0131f401, +/* 0x0a54: i2c_bitr_done */ +/* 0x0a56: i2c_get_byte */ + 0x57f000f8, + 0x0847f000, +/* 0x0a5c: i2c_get_byte_next */ + 0xbb0154b6, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x089821f5, + 0x0a0f21f5, 0xf40464b6, - 0x21f51b11, - 0x37f00883, - 0x3621f500, - 0x88e7f108, - 0x6621f413, - 0xf4013cf0, -/* 0x09d2: i2c_bitr_done */ - 0x00f80131, -/* 0x09d4: i2c_get_byte */ - 0xf00057f0, -/* 0x09da: i2c_get_byte_next */ - 0x54b60847, - 0x0076bb01, + 0x53fd2b11, + 0x0142b605, + 0xf0d81bf4, + 0x76bb0137, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb609ce21, +/* 0x0aa6: i2c_get_byte_done */ + 0x00f80464, +/* 0x0aa8: i2c_put_byte */ +/* 0x0aab: i2c_put_byte_next */ + 0xb60847f0, + 0x54ff0142, + 0x0076bb38, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b6098d, - 0x2b11f404, - 0xb60553fd, - 0x1bf40142, - 0x0137f0d8, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0x4c21f550, - 0x0464b609, -/* 0x0a24: i2c_get_byte_done */ -/* 0x0a26: i2c_put_byte */ - 0x47f000f8, -/* 0x0a29: i2c_put_byte_next */ - 0x0142b608, - 0xbb3854ff, + 0x64b609ce, + 0x3411f404, + 0xf40046b0, + 0x76bbd81b, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb60a0f21, + 0x11f40464, + 0x0076bb0f, + 0xf40136b0, + 0x32f4061b, +/* 0x0b01: i2c_put_byte_done */ +/* 0x0b03: i2c_addr */ + 0xbb00f801, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x094c21f5, + 0x093f21f5, 0xf40464b6, - 0x46b03411, - 0xd81bf400, + 0xc3e72911, + 0x34b6012e, + 0x0553fd01, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x8d21f550, - 0x0464b609, - 0xbb0f11f4, - 0x36b00076, - 0x061bf401, -/* 0x0a7f: i2c_put_byte_done */ - 0xf80132f4, -/* 0x0a81: i2c_addr */ - 0x0076bb00, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b608bd, - 0x2911f404, - 0x012ec3e7, - 0xfd0134b6, - 0x76bb0553, + 0xa821f550, + 0x0464b60a, +/* 0x0b48: i2c_addr_done */ +/* 0x0b4a: i2c_acquire_addr */ + 0xcec700f8, + 0x05e4b6f8, + 0xd014e0b7, +/* 0x0b56: i2c_acquire */ + 0x21f500f8, + 0x21f40b4a, + 0x03d9f004, + 0xf83421f4, +/* 0x0b65: i2c_release */ + 0x4a21f500, + 0x0421f40b, + 0xf403daf0, + 0x00f83421, +/* 0x0b74: i2c_recv */ + 0xc70132f4, + 0x14b6f8c1, + 0x2816b002, + 0x013a1ff5, + 0x0d0013a0, + 0xa0003298, + 0x980cd813, + 0x31f40031, + 0xf9d0f902, + 0xf1d0f9e0, + 0xf1000067, + 0x92100063, + 0x76bb0167, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb60a2621, -/* 0x0ac6: i2c_addr_done */ - 0x00f80464, -/* 0x0ac8: i2c_acquire_addr */ - 0xb6f8cec7, - 0xe0b705e4, - 0x00f8d014, -/* 0x0ad4: i2c_acquire */ - 0x0ac821f5, - 0xf00421f4, - 0x21f403d9, -/* 0x0ae3: i2c_release */ - 0xf500f834, - 0xf40ac821, - 0xdaf00421, - 0x3421f403, -/* 0x0af2: i2c_recv */ - 0x32f400f8, - 0xf8c1c701, - 0xb00214b6, - 0x1ff52816, - 0x13a0013a, - 0x32980d00, - 0xd813a000, - 0x0031980c, - 0xf90231f4, - 0xf9e0f9d0, - 0x0067f1d0, - 0x0063f100, - 0x01679210, + 0xb60b5621, + 0xd0fc0464, + 0xf500d6b0, + 0xf000b31b, + 0x76bb0057, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb60b0321, + 0x11f50464, + 0xc5c700d0, + 0x0076bbe0, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b60aa8, + 0xad11f504, + 0x0157f000, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0xd421f550, - 0x0464b60a, - 0xd6b0d0fc, - 0xb31bf500, - 0x0057f000, + 0x0321f550, + 0x0464b60b, + 0x008a11f5, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x8121f550, + 0x5621f550, 0x0464b60a, - 0x00d011f5, - 0xbbe0c5c7, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x0a2621f5, - 0xf50464b6, - 0xf000ad11, - 0x76bb0157, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0xf550fc04, - 0xb60a8121, - 0x11f50464, - 0x76bb008a, + 0xcb6a11f4, + 0x76bbe05b, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb609d421, - 0x11f40464, - 0xe05bcb6a, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0x1921f550, - 0x0464b609, - 0xbd025bb9, - 0x430ef474, -/* 0x0bf8: i2c_recv_not_rd08 */ - 0xf401d6b0, - 0x57f03d1b, - 0x8121f500, - 0x3311f40a, - 0xf5e0c5c7, - 0xf40a2621, - 0x57f02911, - 0x8121f500, - 0x1f11f40a, - 0xf5e0b5c7, - 0xf40a2621, - 0x21f51511, - 0x74bd0919, - 0xf408c5c7, - 0x32f4091b, - 0x030ef402, -/* 0x0c38: i2c_recv_not_wr08 */ -/* 0x0c38: i2c_recv_done */ - 0xf5f8cec7, - 0xfc0ae321, - 0xf4d0fce0, - 0x7cb90a12, - 0xe521f502, -/* 0x0c4d: i2c_recv_exit */ -/* 0x0c4f: i2c_init */ - 0xf800f802, -/* 0x0c51: test_recv */ - 0xd817f100, - 0x0011cf05, - 0xf10110b6, - 0xd005d807, - 0x04bd0001, - 0xd900e7f1, - 0x134fe3f1, - 0x021721f5, -/* 0x0c72: test_init */ - 0xe7f100f8, - 0x21f50800, + 0xb6099b21, + 0x5bb90464, + 0xf474bd02, +/* 0x0c7a: i2c_recv_not_rd08 */ + 0xd6b0430e, + 0x3d1bf401, + 0xf50057f0, + 0xf40b0321, + 0xc5c73311, + 0xa821f5e0, + 0x2911f40a, + 0xf50057f0, + 0xf40b0321, + 0xb5c71f11, + 0xa821f5e0, + 0x1511f40a, + 0x099b21f5, + 0xc5c774bd, + 0x091bf408, + 0xf40232f4, +/* 0x0cba: i2c_recv_not_wr08 */ +/* 0x0cba: i2c_recv_done */ + 0xcec7030e, + 0x6521f5f8, + 0xfce0fc0b, + 0x0a12f4d0, + 0xf5027cb9, +/* 0x0ccf: i2c_recv_exit */ + 0xf802e521, +/* 0x0cd1: i2c_init */ +/* 0x0cd3: test_recv */ + 0xf100f800, + 0xcf05d817, + 0x10b60011, + 0xd807f101, + 0x0001d005, + 0xe7f104bd, + 0xe3f1d900, + 0x21f5134f, 0x00f80217, -/* 0x0c7c: idle_recv */ -/* 0x0c7e: idle */ - 0x31f400f8, - 0xd417f100, - 0x0011cf05, - 0xf10110b6, - 0xd005d407, - 0x04bd0001, -/* 0x0c94: idle_loop */ - 0xf45817f0, -/* 0x0c9a: idle_proc */ -/* 0x0c9a: idle_proc_exec */ - 0x10f90232, - 0xf5021eb9, - 0xfc02ee21, - 0x0911f410, - 0xf40231f4, -/* 0x0cae: idle_proc_next */ - 0x10b6ef0e, - 0x061fb858, - 0xf4e61bf4, - 0x28f4dd02, - 0xc10ef400, +/* 0x0cf4: test_init */ + 0x0800e7f1, + 0x021721f5, +/* 0x0cfe: idle_recv */ + 0x00f800f8, +/* 0x0d00: idle */ + 0xf10031f4, + 0xcf05d417, + 0x10b60011, + 0xd407f101, + 0x0001d005, +/* 0x0d16: idle_loop */ + 0x17f004bd, + 0x0232f458, +/* 0x0d1c: idle_proc */ +/* 0x0d1c: idle_proc_exec */ + 0x1eb910f9, + 0xee21f502, + 0xf410fc02, + 0x31f40911, + 0xef0ef402, +/* 0x0d30: idle_proc_next */ + 0xb85810b6, + 0x1bf4061f, + 0xdd02f4e6, + 0xf40028f4, + 0x0000c10e, + 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/gk208.fuc5.h b/drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h index 01f409ed..43dada42 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, - 0x000006f8, + 0x00000756, 0x000005f5, 0x00000000, 0x00000000, @@ -90,8 +90,8 @@ uint32_t gk208_pmu_data[] = { 0x00000000, 0x00000000, 0x5f433249, - 0x00000b51, - 0x000009fb, + 0x00000baf, + 0x00000a59, 0x00000000, 0x00000000, 0x00000000, @@ -112,8 +112,8 @@ uint32_t gk208_pmu_data[] = { 0x00000000, 0x00000000, 0x54534554, - 0x00000b6f, - 0x00000b53, + 0x00000bcd, + 0x00000bb1, 0x00000000, 0x00000000, 0x00000000, @@ -134,8 +134,8 @@ uint32_t gk208_pmu_data[] = { 0x00000000, 0x00000000, 0x454c4449, - 0x00000b7a, - 0x00000b78, + 0x00000bd8, + 0x00000bd6, 0x00000000, 0x00000000, 0x00000000, @@ -1367,197 +1367,204 @@ uint32_t gk208_pmu_code[] = { /* 0x05f5: perf_recv */ 0x4f48da00, 0xeaa65453, - 0xf4061bf4, -/* 0x0602: perf_recv_not_host */ - 0x187e170e, + 0x0a5d1bf4, + 0xf4daa601, + 0x0ef4060b, +/* 0x0609: perf_recv_get_slots */ + 0x0cd2406a, + 0xbd000c18, + 0x08c4b604, + 0x180cd140, + 0x04bd000c, + 0x4008c4b6, + 0x0c180cd0, + 0xb604bd00, + 0xc5f008c4, + 0x0cd640ff, + 0xbd000b18, + 0x08b4b604, + 0x180cd540, + 0x04bd000b, + 0x4008b4b6, + 0x0b180cd4, + 0xb604bd00, + 0xd34008b4, + 0x000b180c, + 0x0ef404bd, +/* 0x0659: perf_recv_not_host */ + 0x06767e1a, + 0x0ccc4000, + 0xbd000e98, + 0x01bb7e04, + 0x01de7e00, + 0x070ef400, +/* 0x0670: perf_recv_host */ + 0x00029f7e, +/* 0x0674: perf_recv_exit */ +/* 0x0676: perf_counter_readout */ + 0x10f900f8, + 0x30f920f9, + 0x50f940f9, + 0x70f960f9, + 0x084180f9, + 0x0011cf05, + 0xcf051842, + 0x28430022, + 0x0033cf05, + 0xcf053844, + 0x48450044, + 0x0055cf05, + 0xcf055846, + 0x68470066, + 0x0077cf05, + 0xcf057848, + 0x00de0088, + 0x40800000, + 0x0ef60508, + 0x4004bd00, + 0x0ef60518, + 0x4004bd00, + 0x0ef60528, + 0x4004bd00, + 0x0ef60538, + 0x4004bd00, + 0x0ef60548, + 0x4004bd00, + 0x0ef60558, + 0x4004bd00, + 0x0ef60568, + 0x4004bd00, + 0x0ef60578, + 0xcc04bd00, + 0x21ffff11, + 0x3c31ff2c, + 0xff4c41ff, + 0x61ff5c51, + 0x7c71ff6c, + 0x408c81ff, + 0x02200cd0, + 0xd14004bd, + 0xbd03200c, + 0x0cd24004, + 0x04bd0420, + 0x200cd340, + 0x4004bd05, + 0x06200cd4, + 0xd54004bd, + 0xbd07200c, + 0x0cd64004, + 0x04bd0820, + 0x70fc80fc, + 0x50fc60fc, + 0x30fc40fc, + 0x10fc20fc, +/* 0x0756: perf_init */ + 0x030e00f8, + 0xf6050c40, + 0x04bd000e, + 0x1c40020e, + 0x000ef605, + 0x2c4004bd, + 0x000ef605, + 0x3c4004bd, + 0x000ef605, + 0x4c4004bd, + 0x000ef605, + 0x5c4004bd, + 0x000ef605, + 0x6c4004bd, + 0x000ef605, + 0x7c4004bd, + 0x000ef605, + 0x767e04bd, 0xcc400006, 0x000e980c, - 0xbb7e04bd, - 0xde7e0001, -/* 0x0616: perf_recv_exit */ + 0x21f504bd, + 0xde7e01bb, 0x00f80001, -/* 0x0618: perf_counter_readout */ - 0x20f910f9, - 0x40f930f9, - 0x60f950f9, - 0x80f970f9, - 0xcf050841, - 0x18420011, - 0x0022cf05, - 0xcf052843, - 0x38440033, - 0x0044cf05, - 0xcf054845, - 0x58460055, - 0x0066cf05, - 0xcf056847, - 0x78480077, - 0x0088cf05, - 0x000000de, - 0x05084080, - 0xbd000ef6, - 0x05184004, - 0xbd000ef6, - 0x05284004, - 0xbd000ef6, - 0x05384004, - 0xbd000ef6, - 0x05484004, - 0xbd000ef6, - 0x05584004, - 0xbd000ef6, - 0x05684004, - 0xbd000ef6, - 0x05784004, - 0xbd000ef6, - 0xff11cc04, - 0xff2c21ff, - 0x41ff3c31, - 0x5c51ff4c, - 0xff6c61ff, - 0x81ff7c71, - 0x0cd0408c, - 0x04bd0220, - 0x200cd140, - 0x4004bd03, - 0x04200cd2, - 0xd34004bd, - 0xbd05200c, - 0x0cd44004, - 0x04bd0620, - 0x200cd540, - 0x4004bd07, - 0x08200cd6, - 0x80fc04bd, - 0x60fc70fc, - 0x40fc50fc, - 0x20fc30fc, - 0x00f810fc, -/* 0x06f8: perf_init */ - 0x0c40030e, - 0x000ef605, - 0x020e04bd, - 0xf6051c40, - 0x04bd000e, - 0xf6052c40, - 0x04bd000e, - 0xf6053c40, - 0x04bd000e, - 0xf6054c40, - 0x04bd000e, - 0xf6055c40, - 0x04bd000e, - 0xf6056c40, - 0x04bd000e, - 0xf6057c40, - 0x04bd000e, - 0x0006187e, - 0x980ccc40, - 0x04bd000e, - 0x01bb21f5, - 0x0001de7e, -/* 0x0752: i2c_drive_scl */ +/* 0x07b0: i2c_drive_scl */ + 0xf40036b0, + 0xe0400d0b, + 0x0001f607, + 0x00f804bd, +/* 0x07c0: i2c_drive_scl_lo */ + 0xf607e440, + 0x04bd0001, +/* 0x07ca: i2c_drive_sda */ 0x36b000f8, 0x0d0bf400, 0xf607e040, - 0x04bd0001, -/* 0x0762: i2c_drive_scl_lo */ + 0x04bd0002, +/* 0x07da: i2c_drive_sda_lo */ 0xe44000f8, - 0x0001f607, - 0x00f804bd, -/* 0x076c: i2c_drive_sda */ - 0xf40036b0, - 0xe0400d0b, 0x0002f607, 0x00f804bd, -/* 0x077c: i2c_drive_sda_lo */ - 0xf607e440, - 0x04bd0002, -/* 0x0786: i2c_sense_scl */ - 0x32f400f8, - 0x07c44301, - 0xfd0033cf, - 0x0bf40431, - 0x0131f406, -/* 0x0798: i2c_sense_scl_done */ -/* 0x079a: i2c_sense_sda */ - 0x32f400f8, - 0x07c44301, - 0xfd0033cf, - 0x0bf40432, - 0x0131f406, -/* 0x07ac: i2c_sense_sda_done */ -/* 0x07ae: i2c_raise_scl */ - 0x40f900f8, - 0x03089844, - 0x07527e01, -/* 0x07b9: i2c_raise_scl_wait */ - 0x03e84e00, - 0x0000587e, - 0x0007867e, - 0xb60901f4, - 0x1bf40142, -/* 0x07cd: i2c_raise_scl_done */ - 0xf840fcef, -/* 0x07d1: i2c_start */ - 0x07867e00, - 0x0d11f400, - 0x00079a7e, - 0xf40611f4, -/* 0x07e2: i2c_start_rep */ - 0x00032e0e, - 0x0007527e, - 0x6c7e0103, - 0x76bb0007, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0x7e50fc04, - 0xb60007ae, - 0x11f40464, -/* 0x080d: i2c_start_send */ - 0x7e00031d, - 0x4e00076c, - 0x587e1388, - 0x00030000, - 0x0007527e, - 0x7e13884e, -/* 0x0827: i2c_start_out */ - 0xf8000058, -/* 0x0829: i2c_stop */ - 0x7e000300, - 0x03000752, - 0x076c7e00, - 0x03e84e00, +/* 0x07e4: i2c_sense_scl */ + 0x430132f4, + 0x33cf07c4, + 0x0431fd00, + 0xf4060bf4, +/* 0x07f6: i2c_sense_scl_done */ + 0x00f80131, +/* 0x07f8: i2c_sense_sda */ + 0x430132f4, + 0x33cf07c4, + 0x0432fd00, + 0xf4060bf4, +/* 0x080a: i2c_sense_sda_done */ + 0x00f80131, +/* 0x080c: i2c_raise_scl */ + 0x984440f9, + 0x7e010308, +/* 0x0817: i2c_raise_scl_wait */ + 0x4e0007b0, + 0x587e03e8, + 0xe47e0000, + 0x01f40007, + 0x0142b609, +/* 0x082b: i2c_raise_scl_done */ + 0xfcef1bf4, +/* 0x082f: i2c_start */ + 0x7e00f840, + 0xf40007e4, + 0xf87e0d11, + 0x11f40007, + 0x2e0ef406, +/* 0x0840: i2c_start_rep */ + 0xb07e0003, + 0x01030007, + 0x0007ca7e, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x080c7e50, + 0x0464b600, +/* 0x086b: i2c_start_send */ + 0x031d11f4, + 0x07ca7e00, + 0x13884e00, 0x0000587e, - 0x527e0103, + 0xb07e0003, 0x884e0007, 0x00587e13, - 0x7e010300, - 0x4e00076c, - 0x587e1388, - 0x00f80000, -/* 0x0858: i2c_bitw */ - 0x00076c7e, - 0x7e03e84e, - 0xbb000058, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x0007ae7e, - 0xf40464b6, - 0x884e1711, - 0x00587e13, +/* 0x0885: i2c_start_out */ +/* 0x0887: i2c_stop */ + 0x0300f800, + 0x07b07e00, 0x7e000300, - 0x4e000752, - 0x587e1388, -/* 0x0896: i2c_bitw_out */ - 0x00f80000, -/* 0x0898: i2c_bitr */ - 0x6c7e0103, + 0x4e0007ca, + 0x587e03e8, + 0x01030000, + 0x0007b07e, + 0x7e13884e, + 0x03000058, + 0x07ca7e01, + 0x13884e00, + 0x0000587e, +/* 0x08b6: i2c_bitw */ + 0xca7e00f8, 0xe84e0007, 0x00587e03, 0x0076bb00, @@ -1565,224 +1572,283 @@ uint32_t gk208_pmu_code[] = { 0x04659450, 0xbd0256bb, 0x0475fd50, - 0xae7e50fc, - 0x64b60007, - 0x1a11f404, - 0x00079a7e, - 0x527e0003, - 0x884e0007, - 0x00587e13, - 0x013cf000, -/* 0x08db: i2c_bitr_done */ - 0xf80131f4, -/* 0x08dd: i2c_get_byte */ - 0x04000500, -/* 0x08e1: i2c_get_byte_next */ - 0x0154b608, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0x08987e50, - 0x0464b600, - 0xfd2a11f4, - 0x42b60553, - 0xd81bf401, - 0x76bb0103, + 0x0c7e50fc, + 0x64b60008, + 0x1711f404, + 0x7e13884e, + 0x03000058, + 0x07b07e00, + 0x13884e00, + 0x0000587e, +/* 0x08f4: i2c_bitw_out */ +/* 0x08f6: i2c_bitr */ + 0x010300f8, + 0x0007ca7e, + 0x7e03e84e, + 0xbb000058, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x00080c7e, + 0xf40464b6, + 0xf87e1a11, + 0x00030007, + 0x0007b07e, + 0x7e13884e, + 0xf0000058, + 0x31f4013c, +/* 0x0939: i2c_bitr_done */ +/* 0x093b: i2c_get_byte */ + 0x0500f801, +/* 0x093f: i2c_get_byte_next */ + 0xb6080400, + 0x76bb0154, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0x7e50fc04, - 0xb6000858, -/* 0x092a: i2c_get_byte_done */ - 0x00f80464, -/* 0x092c: i2c_put_byte */ -/* 0x092e: i2c_put_byte_next */ - 0x42b60804, - 0x3854ff01, + 0xb60008f6, + 0x11f40464, + 0x0553fd2a, + 0xf40142b6, + 0x0103d81b, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x08587e50, + 0x08b67e50, 0x0464b600, - 0xb03411f4, - 0x1bf40046, - 0x0076bbd8, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x987e50fc, - 0x64b60008, - 0x0f11f404, - 0xb00076bb, - 0x1bf40136, - 0x0132f406, -/* 0x0984: i2c_put_byte_done */ -/* 0x0986: i2c_addr */ - 0x76bb00f8, +/* 0x0988: i2c_get_byte_done */ +/* 0x098a: i2c_put_byte */ + 0x080400f8, +/* 0x098c: i2c_put_byte_next */ + 0xff0142b6, + 0x76bb3854, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0x7e50fc04, - 0xb60007d1, + 0xb60008b6, 0x11f40464, - 0x2ec3e729, - 0x0134b601, - 0xbb0553fd, + 0x0046b034, + 0xbbd81bf4, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x00092c7e, -/* 0x09cb: i2c_addr_done */ - 0xf80464b6, -/* 0x09cd: i2c_acquire_addr */ - 0xf8cec700, - 0xb705e4b6, - 0xf8d014e0, -/* 0x09d9: i2c_acquire */ - 0x09cd7e00, - 0x00047e00, - 0x03d9f000, - 0x00002d7e, -/* 0x09ea: i2c_release */ - 0xcd7e00f8, - 0x047e0009, - 0xdaf00000, - 0x002d7e03, -/* 0x09fb: i2c_recv */ - 0xf400f800, - 0xc1c70132, - 0x0214b6f8, - 0xf52816b0, - 0xb801341f, - 0x000d0013, - 0xb8003298, - 0x000cd813, - 0xf4003198, - 0xd0f90231, - 0xd0f9e0f9, - 0x000000d6, - 0x01679210, + 0x0008f67e, + 0xf40464b6, + 0x76bb0f11, + 0x0136b000, + 0xf4061bf4, +/* 0x09e2: i2c_put_byte_done */ + 0x00f80132, +/* 0x09e4: i2c_addr */ 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x09d97e50, + 0x082f7e50, 0x0464b600, - 0xd6b0d0fc, - 0xb01bf500, - 0xbb000500, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x0009867e, - 0xf50464b6, - 0xc700cc11, - 0x76bbe0c5, + 0xe72911f4, + 0xb6012ec3, + 0x53fd0134, + 0x0076bb05, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x8a7e50fc, + 0x64b60009, +/* 0x0a29: i2c_addr_done */ +/* 0x0a2b: i2c_acquire_addr */ + 0xc700f804, + 0xe4b6f8ce, + 0x14e0b705, +/* 0x0a37: i2c_acquire */ + 0x7e00f8d0, + 0x7e000a2b, + 0xf0000004, + 0x2d7e03d9, + 0x00f80000, +/* 0x0a48: i2c_release */ + 0x000a2b7e, + 0x0000047e, + 0x7e03daf0, + 0xf800002d, +/* 0x0a59: i2c_recv */ + 0x0132f400, + 0xb6f8c1c7, + 0x16b00214, + 0x341ff528, + 0x0013b801, + 0x3298000d, + 0xd813b800, + 0x3198000c, + 0x0231f400, + 0xe0f9d0f9, + 0x00d6d0f9, + 0x92100000, + 0x76bb0167, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0x7e50fc04, - 0xb600092c, - 0x11f50464, - 0x010500a9, + 0xb6000a37, + 0xd0fc0464, + 0xf500d6b0, + 0x0500b01b, + 0x0076bb00, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0xe47e50fc, + 0x64b60009, + 0xcc11f504, + 0xe0c5c700, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x09867e50, + 0x098a7e50, 0x0464b600, - 0x008711f5, + 0x00a911f5, + 0x76bb0105, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0x7e50fc04, + 0xb60009e4, + 0x11f50464, + 0x76bb0087, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0x7e50fc04, + 0xb600093b, + 0x11f40464, + 0xe05bcb67, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x08dd7e50, + 0x08877e50, 0x0464b600, - 0xcb6711f4, - 0x76bbe05b, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0x7e50fc04, - 0xb6000829, - 0x5bb20464, - 0x0ef474bd, -/* 0x0afd: i2c_recv_not_rd08 */ - 0x01d6b041, - 0x053b1bf4, - 0x09867e00, - 0x3211f400, - 0x7ee0c5c7, - 0xf400092c, - 0x00052811, - 0x0009867e, - 0xc71f11f4, - 0x2c7ee0b5, + 0x74bd5bb2, +/* 0x0b5b: i2c_recv_not_rd08 */ + 0xb0410ef4, + 0x1bf401d6, + 0x7e00053b, + 0xf40009e4, + 0xc5c73211, + 0x098a7ee0, + 0x2811f400, + 0xe47e0005, 0x11f40009, - 0x08297e15, - 0xc774bd00, - 0x1bf408c5, - 0x0232f409, -/* 0x0b3b: i2c_recv_not_wr08 */ -/* 0x0b3b: i2c_recv_done */ - 0xc7030ef4, - 0xea7ef8ce, - 0xe0fc0009, - 0x12f4d0fc, - 0x7e7cb209, -/* 0x0b4f: i2c_recv_exit */ - 0xf800029f, -/* 0x0b51: i2c_init */ -/* 0x0b53: test_recv */ - 0x4100f800, - 0x11cf0458, - 0x0110b600, - 0xf6045840, - 0x04bd0001, - 0x4fd900de, - 0x01de7e13, -/* 0x0b6f: test_init */ - 0x4e00f800, - 0xde7e0800, - 0x00f80001, -/* 0x0b78: idle_recv */ -/* 0x0b7a: idle */ - 0x31f400f8, - 0x04544100, + 0xe0b5c71f, + 0x00098a7e, + 0x7e1511f4, + 0xbd000887, + 0x08c5c774, + 0xf4091bf4, + 0x0ef40232, +/* 0x0b99: i2c_recv_not_wr08 */ +/* 0x0b99: i2c_recv_done */ + 0xf8cec703, + 0x000a487e, + 0xd0fce0fc, + 0xb20912f4, + 0x029f7e7c, +/* 0x0bad: i2c_recv_exit */ +/* 0x0baf: i2c_init */ + 0xf800f800, +/* 0x0bb1: test_recv */ + 0x04584100, 0xb60011cf, - 0x54400110, + 0x58400110, 0x0001f604, -/* 0x0b8e: idle_loop */ - 0x580104bd, -/* 0x0b93: idle_proc */ -/* 0x0b93: idle_proc_exec */ - 0xf90232f4, - 0x7e1eb210, - 0xfc0002a8, - 0x0911f410, - 0xf40231f4, -/* 0x0ba6: idle_proc_next */ - 0x10b6f00e, - 0xf41fa658, - 0x02f4e81b, - 0x0028f4e0, - 0x00c60ef4, + 0x00de04bd, + 0x7e134fd9, + 0xf80001de, +/* 0x0bcd: test_init */ + 0x08004e00, + 0x0001de7e, +/* 0x0bd6: idle_recv */ + 0x00f800f8, +/* 0x0bd8: idle */ + 0x410031f4, + 0x11cf0454, + 0x0110b600, + 0xf6045440, + 0x04bd0001, +/* 0x0bec: idle_loop */ + 0x32f45801, +/* 0x0bf1: idle_proc */ +/* 0x0bf1: idle_proc_exec */ + 0xb210f902, + 0x02a87e1e, + 0xf410fc00, + 0x31f40911, + 0xf00ef402, +/* 0x0c04: idle_proc_next */ + 0xa65810b6, + 0xe81bf41f, + 0xf4e002f4, + 0x0ef40028, + 0x000000c6, + 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/gt215.fuc3.h b/drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h index 345c9281..a86478e6 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, - 0x00000909, + 0x00000950, 0x0000083c, 0x00000000, 0x00000000, @@ -90,8 +90,8 @@ uint32_t gt215_pmu_data[] = { 0x00000000, 0x00000000, 0x5f433249, - 0x00000d8f, - 0x00000c32, + 0x00000dd6, + 0x00000c79, 0x00000000, 0x00000000, 0x00000000, @@ -112,8 +112,8 @@ uint32_t gt215_pmu_data[] = { 0x00000000, 0x00000000, 0x54534554, - 0x00000db8, - 0x00000d91, + 0x00000dff, + 0x00000dd8, 0x00000000, 0x00000000, 0x00000000, @@ -134,8 +134,8 @@ uint32_t gt215_pmu_data[] = { 0x00000000, 0x00000000, 0x454c4449, - 0x00000dc4, - 0x00000dc2, + 0x00000e0b, + 0x00000e09, 0x00000000, 0x00000000, 0x00000000, @@ -1519,442 +1519,444 @@ uint32_t gt215_pmu_code[] = { 0x4f48a7f1, 0x5453a3f1, 0xf406eab8, - 0x0ef4061b, -/* 0x084d: perf_recv_not_host */ - 0x6721f51b, + 0xa7f1461b, + 0xa3f00001, + 0x06dab800, + 0xf4060bf4, +/* 0x085a: perf_recv_get_slots */ + 0x07f1510e, + 0x03f00cd2, + 0x000c1800, + 0xc4b604bd, + 0xd107f108, + 0x0003f00c, + 0xbd000c18, + 0x08c4b604, + 0x0cd007f1, + 0x180003f0, + 0x04bd000c, + 0xf008c4b6, + 0x0ef4ffc5, +/* 0x088d: perf_recv_not_host */ + 0xae21f51e, 0xcc07f108, 0x0003f00c, 0xbd000e98, 0x2a21f504, 0x5621f502, -/* 0x0865: perf_recv_exit */ -/* 0x0867: perf_counter_readout */ - 0xf900f802, - 0xf920f910, - 0xf140f930, - 0xb6050817, - 0x11cf0614, - 0x1827f100, - 0x0624b605, - 0xf10022cf, - 0xb6052837, - 0x33cf0634, - 0x3847f100, - 0x0644b605, - 0xf10044cf, - 0xf10000e7, - 0xf18000e3, - 0xb6050807, - 0x0ed00604, - 0xf104bd00, - 0xb6051807, - 0x0ed00604, - 0xf104bd00, - 0xb6052807, - 0x0ed00604, - 0xf104bd00, - 0xb6053807, - 0x0ed00604, - 0xcc04bd00, - 0x21ffff11, - 0x3c31ff2c, - 0xf14c41ff, - 0xf00cd007, - 0x02000003, - 0xf104bd00, - 0xf00cd107, - 0x03000003, - 0xf104bd00, - 0xf00cd207, - 0x04000003, - 0xfc04bd00, - 0xfc30fc40, - 0xf810fc20, -/* 0x0909: perf_init */ - 0x03e7f100, - 0x00e3f000, - 0x050c07f1, - 0xd00604b6, - 0x04bd000e, - 0x0002e7f1, + 0x070ef402, +/* 0x08a8: perf_recv_host */ + 0x033621f5, +/* 0x08ac: perf_recv_exit */ +/* 0x08ae: perf_counter_readout */ + 0x10f900f8, + 0x30f920f9, + 0x17f140f9, + 0x14b60508, + 0x0011cf06, + 0x051827f1, + 0xcf0624b6, + 0x37f10022, + 0x34b60528, + 0x0033cf06, + 0x053847f1, + 0xcf0644b6, + 0xe7f10044, + 0xe3f10000, + 0x07f18000, + 0x04b60508, + 0x000ed006, + 0x07f104bd, + 0x04b60518, + 0x000ed006, + 0x07f104bd, + 0x04b60528, + 0x000ed006, + 0x07f104bd, + 0x04b60538, + 0x000ed006, + 0x11cc04bd, + 0x2c21ffff, + 0xff3c31ff, + 0x07f14c41, + 0x03f00cd0, + 0x00020000, + 0x07f104bd, + 0x03f00cd1, + 0x00030000, + 0x07f104bd, + 0x03f00cd2, + 0x00040000, + 0x40fc04bd, + 0x20fc30fc, + 0x00f810fc, +/* 0x0950: perf_init */ + 0x0003e7f1, 0xf100e3f0, - 0xb6051c07, - 0x0ed00604, - 0xf104bd00, - 0xb6052c07, + 0xb6050c07, 0x0ed00604, 0xf104bd00, - 0xb6053c07, - 0x0ed00604, - 0xf504bd00, - 0xf1086721, - 0xf00ccc07, - 0x0e980003, - 0xf504bd00, - 0xf5022a21, - 0xf8025621, -/* 0x0961: i2c_drive_scl */ - 0x0036b000, - 0xf1110bf4, - 0xb607e007, - 0x01d00604, - 0xf804bd00, -/* 0x0975: i2c_drive_scl_lo */ - 0xe407f100, - 0x0604b607, - 0xbd0001d0, -/* 0x0983: i2c_drive_sda */ - 0xb000f804, - 0x0bf40036, - 0xe007f111, - 0x0604b607, - 0xbd0002d0, -/* 0x0997: i2c_drive_sda_lo */ - 0xf100f804, - 0xb607e407, - 0x02d00604, - 0xf804bd00, -/* 0x09a5: i2c_sense_scl */ - 0x0132f400, - 0x07c437f1, - 0xcf0634b6, - 0x31fd0033, - 0x060bf404, -/* 0x09bb: i2c_sense_scl_done */ - 0xf80131f4, -/* 0x09bd: i2c_sense_sda */ - 0x0132f400, - 0x07c437f1, - 0xcf0634b6, - 0x32fd0033, - 0x060bf404, -/* 0x09d3: i2c_sense_sda_done */ - 0xf80131f4, -/* 0x09d5: i2c_raise_scl */ - 0xf140f900, - 0xf0089847, - 0x21f50137, -/* 0x09e2: i2c_raise_scl_wait */ - 0xe7f10961, - 0x21f403e8, - 0xa521f57e, - 0x0901f409, - 0xf40142b6, -/* 0x09f6: i2c_raise_scl_done */ - 0x40fcef1b, -/* 0x09fa: i2c_start */ - 0x21f500f8, - 0x11f409a5, - 0xbd21f50d, - 0x0611f409, -/* 0x0a0b: i2c_start_rep */ - 0xf0300ef4, - 0x21f50037, - 0x37f00961, - 0x8321f501, - 0x0076bb09, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b609d5, - 0x1f11f404, -/* 0x0a38: i2c_start_send */ - 0xf50037f0, - 0xf1098321, - 0xf41388e7, - 0x37f07e21, - 0x6121f500, - 0x88e7f109, - 0x7e21f413, -/* 0x0a54: i2c_start_out */ -/* 0x0a56: i2c_stop */ - 0x37f000f8, - 0x6121f500, - 0x0037f009, - 0x098321f5, - 0x03e8e7f1, - 0xf07e21f4, - 0x21f50137, - 0xe7f10961, - 0x21f41388, - 0x0137f07e, - 0x098321f5, - 0x1388e7f1, - 0xf87e21f4, -/* 0x0a89: i2c_bitw */ - 0x8321f500, + 0xf00002e7, + 0x07f100e3, + 0x04b6051c, + 0x000ed006, + 0x07f104bd, + 0x04b6052c, + 0x000ed006, + 0x07f104bd, + 0x04b6053c, + 0x000ed006, + 0x21f504bd, + 0x07f108ae, + 0x03f00ccc, + 0x000e9800, + 0x21f504bd, + 0x21f5022a, + 0x00f80256, +/* 0x09a8: i2c_drive_scl */ + 0xf40036b0, + 0x07f1110b, + 0x04b607e0, + 0x0001d006, + 0x00f804bd, +/* 0x09bc: i2c_drive_scl_lo */ + 0x07e407f1, + 0xd00604b6, + 0x04bd0001, +/* 0x09ca: i2c_drive_sda */ + 0x36b000f8, + 0x110bf400, + 0x07e007f1, + 0xd00604b6, + 0x04bd0002, +/* 0x09de: i2c_drive_sda_lo */ + 0x07f100f8, + 0x04b607e4, + 0x0002d006, + 0x00f804bd, +/* 0x09ec: i2c_sense_scl */ + 0xf10132f4, + 0xb607c437, + 0x33cf0634, + 0x0431fd00, + 0xf4060bf4, +/* 0x0a02: i2c_sense_scl_done */ + 0x00f80131, +/* 0x0a04: i2c_sense_sda */ + 0xf10132f4, + 0xb607c437, + 0x33cf0634, + 0x0432fd00, + 0xf4060bf4, +/* 0x0a1a: i2c_sense_sda_done */ + 0x00f80131, +/* 0x0a1c: i2c_raise_scl */ + 0x47f140f9, + 0x37f00898, + 0xa821f501, +/* 0x0a29: i2c_raise_scl_wait */ 0xe8e7f109, 0x7e21f403, + 0x09ec21f5, + 0xb60901f4, + 0x1bf40142, +/* 0x0a3d: i2c_raise_scl_done */ + 0xf840fcef, +/* 0x0a41: i2c_start */ + 0xec21f500, + 0x0d11f409, + 0x0a0421f5, + 0xf40611f4, +/* 0x0a52: i2c_start_rep */ + 0x37f0300e, + 0xa821f500, + 0x0137f009, + 0x09ca21f5, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0xd521f550, - 0x0464b609, - 0xf11811f4, - 0xf41388e7, + 0x1c21f550, + 0x0464b60a, +/* 0x0a7f: i2c_start_send */ + 0xf01f11f4, + 0x21f50037, + 0xe7f109ca, + 0x21f41388, + 0x0037f07e, + 0x09a821f5, + 0x1388e7f1, +/* 0x0a9b: i2c_start_out */ + 0xf87e21f4, +/* 0x0a9d: i2c_stop */ + 0x0037f000, + 0x09a821f5, + 0xf50037f0, + 0xf109ca21, + 0xf403e8e7, 0x37f07e21, - 0x6121f500, + 0xa821f501, 0x88e7f109, 0x7e21f413, -/* 0x0ac8: i2c_bitw_out */ -/* 0x0aca: i2c_bitr */ - 0x37f000f8, - 0x8321f501, - 0xe8e7f109, - 0x7e21f403, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0xd521f550, - 0x0464b609, - 0xf51b11f4, - 0xf009bd21, - 0x21f50037, - 0xe7f10961, + 0xf50137f0, + 0xf109ca21, + 0xf41388e7, + 0x00f87e21, +/* 0x0ad0: i2c_bitw */ + 0x09ca21f5, + 0x03e8e7f1, + 0xbb7e21f4, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x0a1c21f5, + 0xf40464b6, + 0xe7f11811, 0x21f41388, - 0x013cf07e, -/* 0x0b0f: i2c_bitr_done */ - 0xf80131f4, -/* 0x0b11: i2c_get_byte */ - 0x0057f000, -/* 0x0b17: i2c_get_byte_next */ - 0xb60847f0, - 0x76bb0154, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0xf550fc04, - 0xb60aca21, - 0x11f40464, - 0x0553fd2b, - 0xf40142b6, - 0x37f0d81b, + 0x0037f07e, + 0x09a821f5, + 0x1388e7f1, +/* 0x0b0f: i2c_bitw_out */ + 0xf87e21f4, +/* 0x0b11: i2c_bitr */ + 0x0137f000, + 0x09ca21f5, + 0x03e8e7f1, + 0xbb7e21f4, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x0a1c21f5, + 0xf40464b6, + 0x21f51b11, + 0x37f00a04, + 0xa821f500, + 0x88e7f109, + 0x7e21f413, + 0xf4013cf0, +/* 0x0b56: i2c_bitr_done */ + 0x00f80131, +/* 0x0b58: i2c_get_byte */ + 0xf00057f0, +/* 0x0b5e: i2c_get_byte_next */ + 0x54b60847, 0x0076bb01, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b60a89, -/* 0x0b61: i2c_get_byte_done */ -/* 0x0b63: i2c_put_byte */ - 0xf000f804, -/* 0x0b66: i2c_put_byte_next */ - 0x42b60847, - 0x3854ff01, + 0x64b60b11, + 0x2b11f404, + 0xb60553fd, + 0x1bf40142, + 0x0137f0d8, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x8921f550, + 0xd021f550, 0x0464b60a, - 0xb03411f4, - 0x1bf40046, - 0x0076bbd8, +/* 0x0ba8: i2c_get_byte_done */ +/* 0x0baa: i2c_put_byte */ + 0x47f000f8, +/* 0x0bad: i2c_put_byte_next */ + 0x0142b608, + 0xbb3854ff, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x0ad021f5, + 0xf40464b6, + 0x46b03411, + 0xd81bf400, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x1121f550, + 0x0464b60b, + 0xbb0f11f4, + 0x36b00076, + 0x061bf401, +/* 0x0c03: i2c_put_byte_done */ + 0xf80132f4, +/* 0x0c05: i2c_addr */ + 0x0076bb00, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b60aca, - 0x0f11f404, - 0xb00076bb, - 0x1bf40136, - 0x0132f406, -/* 0x0bbc: i2c_put_byte_done */ -/* 0x0bbe: i2c_addr */ - 0x76bb00f8, + 0x64b60a41, + 0x2911f404, + 0x012ec3e7, + 0xfd0134b6, + 0x76bb0553, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb609fa21, - 0x11f40464, - 0x2ec3e729, - 0x0134b601, - 0xbb0553fd, + 0xb60baa21, +/* 0x0c4a: i2c_addr_done */ + 0x00f80464, +/* 0x0c4c: i2c_acquire_addr */ + 0xb6f8cec7, + 0xe0b702e4, + 0xee980d24, +/* 0x0c5b: i2c_acquire */ + 0xf500f800, + 0xf40c4c21, + 0xd9f00421, + 0x4021f403, +/* 0x0c6a: i2c_release */ + 0x21f500f8, + 0x21f40c4c, + 0x03daf004, + 0xf84021f4, +/* 0x0c79: i2c_recv */ + 0x0132f400, + 0xb6f8c1c7, + 0x16b00214, + 0x3a1ff528, + 0xfc13a001, + 0x0032980c, + 0x0cd413a0, + 0xf4003198, + 0xd0f90231, + 0xd0f9e0f9, + 0x000067f1, + 0x100063f1, + 0xbb016792, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x0b6321f5, -/* 0x0c03: i2c_addr_done */ - 0xf80464b6, -/* 0x0c05: i2c_acquire_addr */ - 0xf8cec700, - 0xb702e4b6, - 0x980d24e0, - 0x00f800ee, -/* 0x0c14: i2c_acquire */ - 0x0c0521f5, - 0xf00421f4, - 0x21f403d9, -/* 0x0c23: i2c_release */ - 0xf500f840, - 0xf40c0521, - 0xdaf00421, - 0x4021f403, -/* 0x0c32: i2c_recv */ - 0x32f400f8, - 0xf8c1c701, - 0xb00214b6, - 0x1ff52816, - 0x13a0013a, - 0x32980cfc, - 0xd413a000, - 0x0031980c, - 0xf90231f4, - 0xf9e0f9d0, - 0x0067f1d0, - 0x0063f100, - 0x01679210, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0x1421f550, - 0x0464b60c, - 0xd6b0d0fc, - 0xb31bf500, - 0x0057f000, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0xbe21f550, - 0x0464b60b, - 0x00d011f5, - 0xbbe0c5c7, + 0x0c5b21f5, + 0xfc0464b6, + 0x00d6b0d0, + 0x00b31bf5, + 0xbb0057f0, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x0b6321f5, + 0x0c0521f5, 0xf50464b6, - 0xf000ad11, - 0x76bb0157, + 0xc700d011, + 0x76bbe0c5, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb60bbe21, + 0xb60baa21, 0x11f50464, - 0x76bb008a, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0xf550fc04, - 0xb60b1121, - 0x11f40464, - 0xe05bcb6a, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0x5621f550, - 0x0464b60a, - 0xbd025bb9, - 0x430ef474, -/* 0x0d38: i2c_recv_not_rd08 */ - 0xf401d6b0, - 0x57f03d1b, - 0xbe21f500, - 0x3311f40b, - 0xf5e0c5c7, - 0xf40b6321, - 0x57f02911, - 0xbe21f500, - 0x1f11f40b, - 0xf5e0b5c7, - 0xf40b6321, - 0x21f51511, - 0x74bd0a56, - 0xf408c5c7, - 0x32f4091b, - 0x030ef402, -/* 0x0d78: i2c_recv_not_wr08 */ -/* 0x0d78: i2c_recv_done */ - 0xf5f8cec7, - 0xfc0c2321, - 0xf4d0fce0, - 0x7cb90a12, - 0x3621f502, -/* 0x0d8d: i2c_recv_exit */ -/* 0x0d8f: i2c_init */ - 0xf800f803, -/* 0x0d91: test_recv */ - 0xd817f100, - 0x0614b605, - 0xb60011cf, - 0x07f10110, - 0x04b605d8, - 0x0001d006, - 0xe7f104bd, - 0xe3f1d900, - 0x21f5134f, - 0x00f80256, -/* 0x0db8: test_init */ - 0x0800e7f1, - 0x025621f5, -/* 0x0dc2: idle_recv */ + 0x57f000ad, + 0x0076bb01, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b60c05, + 0x8a11f504, + 0x0076bb00, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b60b58, + 0x6a11f404, + 0xbbe05bcb, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x0a9d21f5, + 0xb90464b6, + 0x74bd025b, +/* 0x0d7f: i2c_recv_not_rd08 */ + 0xb0430ef4, + 0x1bf401d6, + 0x0057f03d, + 0x0c0521f5, + 0xc73311f4, + 0x21f5e0c5, + 0x11f40baa, + 0x0057f029, + 0x0c0521f5, + 0xc71f11f4, + 0x21f5e0b5, + 0x11f40baa, + 0x9d21f515, + 0xc774bd0a, + 0x1bf408c5, + 0x0232f409, +/* 0x0dbf: i2c_recv_not_wr08 */ +/* 0x0dbf: i2c_recv_done */ + 0xc7030ef4, + 0x21f5f8ce, + 0xe0fc0c6a, + 0x12f4d0fc, + 0x027cb90a, + 0x033621f5, +/* 0x0dd4: i2c_recv_exit */ +/* 0x0dd6: i2c_init */ 0x00f800f8, -/* 0x0dc4: idle */ - 0xf10031f4, - 0xb605d417, - 0x11cf0614, - 0x0110b600, - 0x05d407f1, - 0xd00604b6, - 0x04bd0001, -/* 0x0de0: idle_loop */ - 0xf45817f0, -/* 0x0de6: idle_proc */ -/* 0x0de6: idle_proc_exec */ - 0x10f90232, - 0xf5021eb9, - 0xfc033f21, - 0x0911f410, - 0xf40231f4, -/* 0x0dfa: idle_proc_next */ - 0x10b6ef0e, - 0x061fb858, - 0xf4e61bf4, - 0x28f4dd02, - 0xbb0ef400, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, +/* 0x0dd8: test_recv */ + 0x05d817f1, + 0xcf0614b6, + 0x10b60011, + 0xd807f101, + 0x0604b605, + 0xbd0001d0, + 0x00e7f104, + 0x4fe3f1d9, + 0x5621f513, +/* 0x0dff: test_init */ + 0xf100f802, + 0xf50800e7, + 0xf8025621, +/* 0x0e09: idle_recv */ +/* 0x0e0b: idle */ + 0xf400f800, + 0x17f10031, + 0x14b605d4, + 0x0011cf06, + 0xf10110b6, + 0xb605d407, + 0x01d00604, +/* 0x0e27: idle_loop */ + 0xf004bd00, + 0x32f45817, +/* 0x0e2d: idle_proc */ +/* 0x0e2d: idle_proc_exec */ + 0xb910f902, + 0x21f5021e, + 0x10fc033f, + 0xf40911f4, + 0x0ef40231, +/* 0x0e41: idle_proc_next */ + 0x5810b6ef, + 0xf4061fb8, + 0x02f4e61b, + 0x0028f4dd, + 0x00bb0ef4, 0x00000000, 0x00000000, 0x00000000, diff --git a/drm/nouveau/nvkm/subdev/pmu/fuc/os.h b/drm/nouveau/nvkm/subdev/pmu/fuc/os.h index c8b06cb7..153d3e77 100644 --- a/drm/nouveau/nvkm/subdev/pmu/fuc/os.h +++ b/drm/nouveau/nvkm/subdev/pmu/fuc/os.h @@ -49,4 +49,16 @@ #define I2C__MSG_DATA0_WR08_REG 0:7 #define I2C__MSG_DATA1_WR08_VAL 0:7 +/* PERF: message identifiers */ +#define PERF_MSG_GET_SLOTS 1 + +#define PERF_MSG_DATA0_GET_SLOTS_SLOT0 0:7 +#define PERF_MSG_DATA0_GET_SLOTS_SLOT1 8:15 +#define PERF_MSG_DATA0_GET_SLOTS_SLOT2 16:23 +#define PERF_MSG_DATA0_GET_SLOTS_SLOT3 24:31 +#define PERF_MSG_DATA1_GET_SLOTS_SLOT4 0:7 +#define PERF_MSG_DATA1_GET_SLOTS_SLOT5 8:15 +#define PERF_MSG_DATA1_GET_SLOTS_SLOT6 16:23 +#define PERF_MSG_DATA1_GET_SLOTS_SLOT7 24:31 + #endif diff --git a/drm/nouveau/nvkm/subdev/pmu/fuc/perf.fuc b/drm/nouveau/nvkm/subdev/pmu/fuc/perf.fuc index 4d28b41c..01fc51bd 100644 --- a/drm/nouveau/nvkm/subdev/pmu/fuc/perf.fuc +++ b/drm/nouveau/nvkm/subdev/pmu/fuc/perf.fuc @@ -61,12 +61,39 @@ perf_recv: imm32($r10, PROC_HOST) cmp b32 $r14 $r10 bra ne #perf_recv_not_host - bra #perf_recv_exit + imm32($r10, PERF_MSG_GET_SLOTS) + cmp b32 $r13 $r10 + bra e #perf_recv_get_slots + bra #perf_recv_host + +perf_recv_get_slots: + ld(b8, $r12, #perf_slot3) + shl b32 $r12 8 + ld(b8, $r12, #perf_slot2) + shl b32 $r12 8 + ld(b8, $r12, #perf_slot1) + shl b32 $r12 8 + or $r12 0xff +#if NVKM_PPWR_CHIPSET >= GF100 + ld(b8, $r11, #perf_slot7) + shl b32 $r11 8 + ld(b8, $r11, #perf_slot6) + shl b32 $r11 8 + ld(b8, $r11, #perf_slot5) + shl b32 $r11 8 + ld(b8, $r11, #perf_slot4) +#endif + bra #perf_recv_host + perf_recv_not_host: call(perf_counter_readout) ld(b32, $r14, #perf_polling_period_us) call(ticks_from_us) call(timer) + bra #perf_recv_exit + +perf_recv_host: + call(send) perf_recv_exit: ret -- 2.13.0
Interface to set the PMU counter mask of a specific slot. v3: Add macros documenting the command. Signed-off-by: Karol Herbst <karolherbst at gmail.com> --- drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h | 889 ++++++++++++++------------- drm/nouveau/nvkm/subdev/pmu/fuc/gf119.fuc4.h | 825 ++++++++++++------------- drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h | 245 ++++---- drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h | 763 +++++++++++------------ drm/nouveau/nvkm/subdev/pmu/fuc/os.h | 4 + drm/nouveau/nvkm/subdev/pmu/fuc/perf.fuc | 9 + 6 files changed, 1376 insertions(+), 1359 deletions(-) diff --git a/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h b/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h index 2cbdcdff..0838d503 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, - 0x0000094b, + 0x00000965, 0x00000758, 0x00000000, 0x00000000, @@ -90,8 +90,8 @@ uint32_t gf100_pmu_data[] = { 0x00000000, 0x00000000, 0x5f433249, - 0x00000e01, - 0x00000ca4, + 0x00000e1b, + 0x00000cbe, 0x00000000, 0x00000000, 0x00000000, @@ -112,8 +112,8 @@ uint32_t gf100_pmu_data[] = { 0x00000000, 0x00000000, 0x54534554, - 0x00000e2a, - 0x00000e03, + 0x00000e44, + 0x00000e1d, 0x00000000, 0x00000000, 0x00000000, @@ -134,8 +134,8 @@ uint32_t gf100_pmu_data[] = { 0x00000000, 0x00000000, 0x454c4449, - 0x00000e36, - 0x00000e34, + 0x00000e50, + 0x00000e4e, 0x00000000, 0x00000000, 0x00000000, @@ -1463,518 +1463,519 @@ uint32_t gf100_pmu_code[] = { 0x4f48a7f1, 0x5453a3f1, 0xf506eab8, - 0xf100811b, + 0xf1009b1b, 0xf00001a7, 0xdab800a3, - 0x070bf406, - 0x008b0ef5, -/* 0x0778: perf_recv_get_slots */ - 0x0cd207f1, + 0x140bf406, + 0x0002a7f1, + 0xb800a3f0, + 0x0bf406da, + 0x980ef573, +/* 0x0785: perf_recv_get_slots */ + 0xd207f100, + 0x0003f00c, + 0xbd000c18, + 0x08c4b604, + 0x0cd107f1, 0x180003f0, 0x04bd000c, 0xf108c4b6, - 0xf00cd107, + 0xf00cd007, 0x0c180003, 0xb604bd00, - 0x07f108c4, - 0x03f00cd0, - 0x000c1800, - 0xc4b604bd, - 0xffc5f008, - 0x0cd607f1, + 0xc5f008c4, + 0xd607f1ff, + 0x0003f00c, + 0xbd000b18, + 0x08b4b604, + 0x0cd507f1, 0x180003f0, 0x04bd000b, 0xf108b4b6, - 0xf00cd507, + 0xf00cd407, 0x0b180003, 0xb604bd00, 0x07f108b4, - 0x03f00cd4, + 0x03f00cd3, 0x000b1800, - 0xb4b604bd, - 0xd307f108, - 0x0003f00c, - 0xbd000b18, - 0x1e0ef404, -/* 0x07e4: perf_recv_not_host */ - 0x080521f5, - 0x0ccc07f1, - 0x980003f0, + 0x0ef404bd, +/* 0x07f1: perf_recv_set_slot */ + 0x10c0f02b, + 0x0504c0b7, + 0xf400cbd0, +/* 0x07fe: perf_recv_not_host */ + 0x21f5220e, + 0x07f1081f, + 0x03f00ccc, + 0x000e9800, + 0x21f504bd, + 0x21f5022a, + 0x0ef40256, +/* 0x0819: perf_recv_host */ + 0x3621f507, +/* 0x081d: perf_recv_exit */ +/* 0x081f: perf_counter_readout */ + 0xf900f803, + 0xf920f910, + 0xf940f930, + 0xf960f950, + 0xf180f970, + 0xb6050817, + 0x11cf0614, + 0x1827f100, + 0x0624b605, + 0xf10022cf, + 0xb6052837, + 0x33cf0634, + 0x3847f100, + 0x0644b605, + 0xf10044cf, + 0xb6054857, + 0x55cf0654, + 0x5867f100, + 0x0664b605, + 0xf10066cf, + 0xb6056877, + 0x77cf0674, + 0x7887f100, + 0x0684b605, + 0xf10088cf, + 0xf10000e7, + 0xf18000e3, + 0xb6050807, + 0x0ed00604, + 0xf104bd00, + 0xb6051807, + 0x0ed00604, + 0xf104bd00, + 0xb6052807, + 0x0ed00604, + 0xf104bd00, + 0xb6053807, + 0x0ed00604, + 0xf104bd00, + 0xb6054807, + 0x0ed00604, + 0xf104bd00, + 0xb6055807, + 0x0ed00604, + 0xf104bd00, + 0xb6056807, + 0x0ed00604, + 0xf104bd00, + 0xb6057807, + 0x0ed00604, + 0xcc04bd00, + 0x21ffff11, + 0x3c31ff2c, + 0xff4c41ff, + 0x61ff5c51, + 0x7c71ff6c, + 0xf18c81ff, + 0xf00cd007, + 0x02000003, + 0xf104bd00, + 0xf00cd107, + 0x03000003, + 0xf104bd00, + 0xf00cd207, + 0x04000003, + 0xf104bd00, + 0xf00cd307, + 0x05000003, + 0xf104bd00, + 0xf00cd407, + 0x06000003, + 0xf104bd00, + 0xf00cd507, + 0x07000003, + 0xf104bd00, + 0xf00cd607, + 0x08000003, + 0xfc04bd00, + 0xfc70fc80, + 0xfc50fc60, + 0xfc30fc40, + 0xf810fc20, +/* 0x0965: perf_init */ + 0x03e7f100, + 0x00e3f000, + 0x050c07f1, + 0xd00604b6, 0x04bd000e, - 0x022a21f5, - 0x025621f5, -/* 0x07ff: perf_recv_host */ - 0xf5070ef4, -/* 0x0803: perf_recv_exit */ - 0xf8033621, -/* 0x0805: perf_counter_readout */ - 0xf910f900, - 0xf930f920, - 0xf950f940, - 0xf970f960, - 0x0817f180, - 0x0614b605, - 0xf10011cf, - 0xb6051827, - 0x22cf0624, - 0x2837f100, - 0x0634b605, - 0xf10033cf, - 0xb6053847, - 0x44cf0644, - 0x4857f100, - 0x0654b605, - 0xf10055cf, - 0xb6055867, - 0x66cf0664, - 0x6877f100, - 0x0674b605, - 0xf10077cf, - 0xb6057887, - 0x88cf0684, - 0x00e7f100, - 0x00e3f100, - 0x0807f180, - 0x0604b605, - 0xbd000ed0, - 0x1807f104, - 0x0604b605, - 0xbd000ed0, - 0x2807f104, - 0x0604b605, - 0xbd000ed0, - 0x3807f104, - 0x0604b605, - 0xbd000ed0, - 0x4807f104, - 0x0604b605, - 0xbd000ed0, - 0x5807f104, - 0x0604b605, - 0xbd000ed0, - 0x6807f104, - 0x0604b605, - 0xbd000ed0, - 0x7807f104, - 0x0604b605, - 0xbd000ed0, - 0xff11cc04, - 0xff2c21ff, - 0x41ff3c31, - 0x5c51ff4c, - 0xff6c61ff, - 0x81ff7c71, - 0xd007f18c, - 0x0003f00c, - 0xbd000200, - 0xd107f104, - 0x0003f00c, - 0xbd000300, - 0xd207f104, - 0x0003f00c, - 0xbd000400, - 0xd307f104, - 0x0003f00c, - 0xbd000500, - 0xd407f104, - 0x0003f00c, - 0xbd000600, - 0xd507f104, - 0x0003f00c, - 0xbd000700, - 0xd607f104, - 0x0003f00c, - 0xbd000800, - 0xfc80fc04, - 0xfc60fc70, - 0xfc40fc50, - 0xfc20fc30, -/* 0x094b: perf_init */ - 0xf100f810, - 0xf00003e7, - 0x07f100e3, - 0x04b6050c, - 0x000ed006, - 0xe7f104bd, - 0xe3f00002, - 0x1c07f100, - 0x0604b605, - 0xbd000ed0, - 0x2c07f104, - 0x0604b605, - 0xbd000ed0, - 0x3c07f104, - 0x0604b605, - 0xbd000ed0, - 0x4c07f104, - 0x0604b605, - 0xbd000ed0, - 0x5c07f104, - 0x0604b605, - 0xbd000ed0, - 0x6c07f104, - 0x0604b605, - 0xbd000ed0, - 0x7c07f104, - 0x0604b605, - 0xbd000ed0, - 0x0521f504, - 0xcc07f108, - 0x0003f00c, - 0xbd000e98, - 0x2a21f504, - 0x5621f502, -/* 0x09d3: i2c_drive_scl */ - 0xb000f802, - 0x0bf40036, - 0xe007f111, - 0x0604b607, - 0xbd0001d0, -/* 0x09e7: i2c_drive_scl_lo */ - 0xf100f804, - 0xb607e407, - 0x01d00604, - 0xf804bd00, -/* 0x09f5: i2c_drive_sda */ + 0x0002e7f1, + 0xf100e3f0, + 0xb6051c07, + 0x0ed00604, + 0xf104bd00, + 0xb6052c07, + 0x0ed00604, + 0xf104bd00, + 0xb6053c07, + 0x0ed00604, + 0xf104bd00, + 0xb6054c07, + 0x0ed00604, + 0xf104bd00, + 0xb6055c07, + 0x0ed00604, + 0xf104bd00, + 0xb6056c07, + 0x0ed00604, + 0xf104bd00, + 0xb6057c07, + 0x0ed00604, + 0xf504bd00, + 0xf1081f21, + 0xf00ccc07, + 0x0e980003, + 0xf504bd00, + 0xf5022a21, + 0xf8025621, +/* 0x09ed: i2c_drive_scl */ 0x0036b000, 0xf1110bf4, 0xb607e007, - 0x02d00604, + 0x01d00604, 0xf804bd00, -/* 0x0a09: i2c_drive_sda_lo */ +/* 0x0a01: i2c_drive_scl_lo */ 0xe407f100, 0x0604b607, + 0xbd0001d0, +/* 0x0a0f: i2c_drive_sda */ + 0xb000f804, + 0x0bf40036, + 0xe007f111, + 0x0604b607, 0xbd0002d0, -/* 0x0a17: i2c_sense_scl */ - 0xf400f804, - 0x37f10132, - 0x34b607c4, - 0x0033cf06, - 0xf40431fd, - 0x31f4060b, -/* 0x0a2d: i2c_sense_scl_done */ -/* 0x0a2f: i2c_sense_sda */ - 0xf400f801, - 0x37f10132, - 0x34b607c4, - 0x0033cf06, - 0xf40432fd, - 0x31f4060b, -/* 0x0a45: i2c_sense_sda_done */ -/* 0x0a47: i2c_raise_scl */ - 0xf900f801, - 0x9847f140, - 0x0137f008, - 0x09d321f5, -/* 0x0a54: i2c_raise_scl_wait */ - 0x03e8e7f1, - 0xf57e21f4, - 0xf40a1721, - 0x42b60901, - 0xef1bf401, -/* 0x0a68: i2c_raise_scl_done */ - 0x00f840fc, -/* 0x0a6c: i2c_start */ - 0x0a1721f5, - 0xf50d11f4, - 0xf40a2f21, - 0x0ef40611, -/* 0x0a7d: i2c_start_rep */ - 0x0037f030, - 0x09d321f5, - 0xf50137f0, - 0xbb09f521, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x0a4721f5, - 0xf40464b6, -/* 0x0aaa: i2c_start_send */ - 0x37f01f11, - 0xf521f500, - 0x88e7f109, - 0x7e21f413, +/* 0x0a23: i2c_drive_sda_lo */ + 0xf100f804, + 0xb607e407, + 0x02d00604, + 0xf804bd00, +/* 0x0a31: i2c_sense_scl */ + 0x0132f400, + 0x07c437f1, + 0xcf0634b6, + 0x31fd0033, + 0x060bf404, +/* 0x0a47: i2c_sense_scl_done */ + 0xf80131f4, +/* 0x0a49: i2c_sense_sda */ + 0x0132f400, + 0x07c437f1, + 0xcf0634b6, + 0x32fd0033, + 0x060bf404, +/* 0x0a5f: i2c_sense_sda_done */ + 0xf80131f4, +/* 0x0a61: i2c_raise_scl */ + 0xf140f900, + 0xf0089847, + 0x21f50137, +/* 0x0a6e: i2c_raise_scl_wait */ + 0xe7f109ed, + 0x21f403e8, + 0x3121f57e, + 0x0901f40a, + 0xf40142b6, +/* 0x0a82: i2c_raise_scl_done */ + 0x40fcef1b, +/* 0x0a86: i2c_start */ + 0x21f500f8, + 0x11f40a31, + 0x4921f50d, + 0x0611f40a, +/* 0x0a97: i2c_start_rep */ + 0xf0300ef4, + 0x21f50037, + 0x37f009ed, + 0x0f21f501, + 0x0076bb0a, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b60a61, + 0x1f11f404, +/* 0x0ac4: i2c_start_send */ 0xf50037f0, - 0xf109d321, + 0xf10a0f21, 0xf41388e7, -/* 0x0ac6: i2c_start_out */ - 0x00f87e21, -/* 0x0ac8: i2c_stop */ - 0xf50037f0, - 0xf009d321, - 0x21f50037, - 0xe7f109f5, - 0x21f403e8, - 0x0137f07e, - 0x09d321f5, - 0x1388e7f1, + 0x37f07e21, + 0xed21f500, + 0x88e7f109, + 0x7e21f413, +/* 0x0ae0: i2c_start_out */ +/* 0x0ae2: i2c_stop */ + 0x37f000f8, + 0xed21f500, + 0x0037f009, + 0x0a0f21f5, + 0x03e8e7f1, 0xf07e21f4, 0x21f50137, - 0xe7f109f5, + 0xe7f109ed, 0x21f41388, -/* 0x0afb: i2c_bitw */ - 0xf500f87e, - 0xf109f521, - 0xf403e8e7, - 0x76bb7e21, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0xf550fc04, - 0xb60a4721, - 0x11f40464, - 0x88e7f118, - 0x7e21f413, - 0xf50037f0, - 0xf109d321, + 0x0137f07e, + 0x0a0f21f5, + 0x1388e7f1, + 0xf87e21f4, +/* 0x0b15: i2c_bitw */ + 0x0f21f500, + 0xe8e7f10a, + 0x7e21f403, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x6121f550, + 0x0464b60a, + 0xf11811f4, 0xf41388e7, -/* 0x0b3a: i2c_bitw_out */ - 0x00f87e21, -/* 0x0b3c: i2c_bitr */ - 0xf50137f0, - 0xf109f521, - 0xf403e8e7, - 0x76bb7e21, + 0x37f07e21, + 0xed21f500, + 0x88e7f109, + 0x7e21f413, +/* 0x0b54: i2c_bitw_out */ +/* 0x0b56: i2c_bitr */ + 0x37f000f8, + 0x0f21f501, + 0xe8e7f10a, + 0x7e21f403, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x6121f550, + 0x0464b60a, + 0xf51b11f4, + 0xf00a4921, + 0x21f50037, + 0xe7f109ed, + 0x21f41388, + 0x013cf07e, +/* 0x0b9b: i2c_bitr_done */ + 0xf80131f4, +/* 0x0b9d: i2c_get_byte */ + 0x0057f000, +/* 0x0ba3: i2c_get_byte_next */ + 0xb60847f0, + 0x76bb0154, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb60a4721, + 0xb60b5621, 0x11f40464, - 0x2f21f51b, - 0x0037f00a, - 0x09d321f5, - 0x1388e7f1, - 0xf07e21f4, - 0x31f4013c, -/* 0x0b81: i2c_bitr_done */ -/* 0x0b83: i2c_get_byte */ - 0xf000f801, - 0x47f00057, -/* 0x0b89: i2c_get_byte_next */ - 0x0154b608, + 0x0553fd2b, + 0xf40142b6, + 0x37f0d81b, + 0x0076bb01, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b60b15, +/* 0x0bed: i2c_get_byte_done */ +/* 0x0bef: i2c_put_byte */ + 0xf000f804, +/* 0x0bf2: i2c_put_byte_next */ + 0x42b60847, + 0x3854ff01, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x3c21f550, + 0x1521f550, 0x0464b60b, - 0xfd2b11f4, - 0x42b60553, - 0xd81bf401, - 0xbb0137f0, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x0afb21f5, -/* 0x0bd3: i2c_get_byte_done */ - 0xf80464b6, -/* 0x0bd5: i2c_put_byte */ - 0x0847f000, -/* 0x0bd8: i2c_put_byte_next */ - 0xff0142b6, - 0x76bb3854, + 0xb03411f4, + 0x1bf40046, + 0x0076bbd8, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b60b56, + 0x0f11f404, + 0xb00076bb, + 0x1bf40136, + 0x0132f406, +/* 0x0c48: i2c_put_byte_done */ +/* 0x0c4a: i2c_addr */ + 0x76bb00f8, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb60afb21, + 0xb60a8621, 0x11f40464, - 0x0046b034, - 0xbbd81bf4, + 0x2ec3e729, + 0x0134b601, + 0xbb0553fd, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x0b3c21f5, - 0xf40464b6, - 0x76bb0f11, - 0x0136b000, - 0xf4061bf4, -/* 0x0c2e: i2c_put_byte_done */ - 0x00f80132, -/* 0x0c30: i2c_addr */ + 0x0bef21f5, +/* 0x0c8f: i2c_addr_done */ + 0xf80464b6, +/* 0x0c91: i2c_acquire_addr */ + 0xf8cec700, + 0xb702e4b6, + 0x980d28e0, + 0x00f800ee, +/* 0x0ca0: i2c_acquire */ + 0x0c9121f5, + 0xf00421f4, + 0x21f403d9, +/* 0x0caf: i2c_release */ + 0xf500f840, + 0xf40c9121, + 0xdaf00421, + 0x4021f403, +/* 0x0cbe: i2c_recv */ + 0x32f400f8, + 0xf8c1c701, + 0xb00214b6, + 0x1ff52816, + 0x13a0013a, + 0x32980d00, + 0xd813a000, + 0x0031980c, + 0xf90231f4, + 0xf9e0f9d0, + 0x0067f1d0, + 0x0063f100, + 0x01679210, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x6c21f550, - 0x0464b60a, - 0xe72911f4, - 0xb6012ec3, - 0x53fd0134, - 0x0076bb05, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b60bd5, -/* 0x0c75: i2c_addr_done */ -/* 0x0c77: i2c_acquire_addr */ - 0xc700f804, - 0xe4b6f8ce, - 0x28e0b702, - 0x00ee980d, -/* 0x0c86: i2c_acquire */ - 0x21f500f8, - 0x21f40c77, - 0x03d9f004, - 0xf84021f4, -/* 0x0c95: i2c_release */ - 0x7721f500, - 0x0421f40c, - 0xf403daf0, - 0x00f84021, -/* 0x0ca4: i2c_recv */ - 0xc70132f4, - 0x14b6f8c1, - 0x2816b002, - 0x013a1ff5, - 0x0d0013a0, - 0xa0003298, - 0x980cd813, - 0x31f40031, - 0xf9d0f902, - 0xf1d0f9e0, - 0xf1000067, - 0x92100063, - 0x76bb0167, + 0xa021f550, + 0x0464b60c, + 0xd6b0d0fc, + 0xb31bf500, + 0x0057f000, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x4a21f550, + 0x0464b60c, + 0x00d011f5, + 0xbbe0c5c7, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x0bef21f5, + 0xf50464b6, + 0xf000ad11, + 0x76bb0157, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb60c8621, - 0xd0fc0464, - 0xf500d6b0, - 0xf000b31b, - 0x76bb0057, + 0xb60c4a21, + 0x11f50464, + 0x76bb008a, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb60c3021, - 0x11f50464, - 0xc5c700d0, - 0x0076bbe0, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b60bd5, - 0xad11f504, - 0x0157f000, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0x3021f550, - 0x0464b60c, - 0x008a11f5, + 0xb60b9d21, + 0x11f40464, + 0xe05bcb6a, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x8321f550, - 0x0464b60b, - 0xcb6a11f4, - 0x76bbe05b, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0xf550fc04, - 0xb60ac821, - 0x5bb90464, - 0xf474bd02, -/* 0x0daa: i2c_recv_not_rd08 */ - 0xd6b0430e, - 0x3d1bf401, - 0xf50057f0, - 0xf40c3021, - 0xc5c73311, - 0xd521f5e0, - 0x2911f40b, - 0xf50057f0, - 0xf40c3021, - 0xb5c71f11, - 0xd521f5e0, - 0x1511f40b, - 0x0ac821f5, - 0xc5c774bd, - 0x091bf408, - 0xf40232f4, -/* 0x0dea: i2c_recv_not_wr08 */ -/* 0x0dea: i2c_recv_done */ - 0xcec7030e, - 0x9521f5f8, - 0xfce0fc0c, - 0x0a12f4d0, - 0xf5027cb9, -/* 0x0dff: i2c_recv_exit */ - 0xf8033621, -/* 0x0e01: i2c_init */ -/* 0x0e03: test_recv */ - 0xf100f800, - 0xb605d817, - 0x11cf0614, - 0x0110b600, - 0x05d807f1, - 0xd00604b6, - 0x04bd0001, - 0xd900e7f1, - 0x134fe3f1, - 0x025621f5, -/* 0x0e2a: test_init */ - 0xe7f100f8, - 0x21f50800, - 0x00f80256, -/* 0x0e34: idle_recv */ -/* 0x0e36: idle */ - 0x31f400f8, - 0xd417f100, + 0xe221f550, + 0x0464b60a, + 0xbd025bb9, + 0x430ef474, +/* 0x0dc4: i2c_recv_not_rd08 */ + 0xf401d6b0, + 0x57f03d1b, + 0x4a21f500, + 0x3311f40c, + 0xf5e0c5c7, + 0xf40bef21, + 0x57f02911, + 0x4a21f500, + 0x1f11f40c, + 0xf5e0b5c7, + 0xf40bef21, + 0x21f51511, + 0x74bd0ae2, + 0xf408c5c7, + 0x32f4091b, + 0x030ef402, +/* 0x0e04: i2c_recv_not_wr08 */ +/* 0x0e04: i2c_recv_done */ + 0xf5f8cec7, + 0xfc0caf21, + 0xf4d0fce0, + 0x7cb90a12, + 0x3621f502, +/* 0x0e19: i2c_recv_exit */ +/* 0x0e1b: i2c_init */ + 0xf800f803, +/* 0x0e1d: test_recv */ + 0xd817f100, 0x0614b605, 0xb60011cf, 0x07f10110, - 0x04b605d4, + 0x04b605d8, 0x0001d006, -/* 0x0e52: idle_loop */ - 0x17f004bd, - 0x0232f458, -/* 0x0e58: idle_proc */ -/* 0x0e58: idle_proc_exec */ - 0x1eb910f9, - 0x3f21f502, - 0xf410fc03, - 0x31f40911, - 0xef0ef402, -/* 0x0e6c: idle_proc_next */ - 0xb85810b6, - 0x1bf4061f, - 0xdd02f4e6, - 0xf40028f4, - 0x0000bb0e, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, + 0xe7f104bd, + 0xe3f1d900, + 0x21f5134f, + 0x00f80256, +/* 0x0e44: test_init */ + 0x0800e7f1, + 0x025621f5, +/* 0x0e4e: idle_recv */ + 0x00f800f8, +/* 0x0e50: idle */ + 0xf10031f4, + 0xb605d417, + 0x11cf0614, + 0x0110b600, + 0x05d407f1, + 0xd00604b6, + 0x04bd0001, +/* 0x0e6c: idle_loop */ + 0xf45817f0, +/* 0x0e72: idle_proc */ +/* 0x0e72: idle_proc_exec */ + 0x10f90232, + 0xf5021eb9, + 0xfc033f21, + 0x0911f410, + 0xf40231f4, +/* 0x0e86: idle_proc_next */ + 0x10b6ef0e, + 0x061fb858, + 0xf4e61bf4, + 0x28f4dd02, + 0xbb0ef400, 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 213a774d..86294b2f 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, - 0x00000848, + 0x00000862, 0x00000685, 0x00000000, 0x00000000, @@ -90,8 +90,8 @@ uint32_t gf119_pmu_data[] = { 0x00000000, 0x00000000, 0x5f433249, - 0x00000cd1, - 0x00000b74, + 0x00000ceb, + 0x00000b8e, 0x00000000, 0x00000000, 0x00000000, @@ -112,8 +112,8 @@ uint32_t gf119_pmu_data[] = { 0x00000000, 0x00000000, 0x54534554, - 0x00000cf4, - 0x00000cd3, + 0x00000d0e, + 0x00000ced, 0x00000000, 0x00000000, 0x00000000, @@ -134,8 +134,8 @@ uint32_t gf119_pmu_data[] = { 0x00000000, 0x00000000, 0x454c4449, - 0x00000d00, - 0x00000cfe, + 0x00000d1a, + 0x00000d18, 0x00000000, 0x00000000, 0x00000000, @@ -1404,492 +1404,493 @@ uint32_t gf119_pmu_code[] = { 0x48a7f100, 0x53a3f14f, 0x06eab854, - 0x00811bf5, + 0x009b1bf5, 0x0001a7f1, 0xb800a3f0, 0x0bf406da, - 0x8b0ef507, -/* 0x06a5: perf_recv_get_slots */ - 0xd207f100, + 0x02a7f114, + 0x00a3f000, + 0xf406dab8, + 0x0ef5730b, +/* 0x06b2: perf_recv_get_slots */ + 0x07f10098, + 0x03f00cd2, + 0x000c1800, + 0xc4b604bd, + 0xd107f108, 0x0003f00c, 0xbd000c18, 0x08c4b604, - 0x0cd107f1, + 0x0cd007f1, 0x180003f0, 0x04bd000c, - 0xf108c4b6, - 0xf00cd007, - 0x0c180003, - 0xb604bd00, - 0xc5f008c4, - 0xd607f1ff, + 0xf008c4b6, + 0x07f1ffc5, + 0x03f00cd6, + 0x000b1800, + 0xb4b604bd, + 0xd507f108, 0x0003f00c, 0xbd000b18, 0x08b4b604, - 0x0cd507f1, + 0x0cd407f1, 0x180003f0, 0x04bd000b, 0xf108b4b6, - 0xf00cd407, + 0xf00cd307, 0x0b180003, - 0xb604bd00, - 0x07f108b4, - 0x03f00cd3, - 0x000b1800, - 0x0ef404bd, -/* 0x0711: perf_recv_not_host */ - 0x3221f51e, - 0xcc07f107, - 0x0003f00c, - 0xbd000e98, - 0xeb21f504, - 0x1721f501, - 0x070ef402, -/* 0x072c: perf_recv_host */ - 0x02e521f5, -/* 0x0730: perf_recv_exit */ -/* 0x0732: perf_counter_readout */ - 0x10f900f8, - 0x30f920f9, - 0x50f940f9, - 0x70f960f9, - 0x17f180f9, - 0x11cf0508, - 0x1827f100, - 0x0022cf05, - 0x052837f1, - 0xf10033cf, - 0xcf053847, - 0x57f10044, - 0x55cf0548, - 0x5867f100, - 0x0066cf05, - 0x056877f1, - 0xf10077cf, - 0xcf057887, - 0xe7f10088, - 0xe3f10000, - 0x07f18000, - 0x0ed00508, - 0xf104bd00, - 0xd0051807, - 0x04bd000e, - 0x052807f1, + 0xf404bd00, +/* 0x071e: perf_recv_set_slot */ + 0xc0f02b0e, + 0x04c0b710, + 0x00cbd005, +/* 0x072b: perf_recv_not_host */ + 0xf5220ef4, + 0xf1074c21, + 0xf00ccc07, + 0x0e980003, + 0xf504bd00, + 0xf501eb21, + 0xf4021721, +/* 0x0746: perf_recv_host */ + 0x21f5070e, +/* 0x074a: perf_recv_exit */ + 0x00f802e5, +/* 0x074c: perf_counter_readout */ + 0x20f910f9, + 0x40f930f9, + 0x60f950f9, + 0x80f970f9, + 0x050817f1, + 0xf10011cf, + 0xcf051827, + 0x37f10022, + 0x33cf0528, + 0x3847f100, + 0x0044cf05, + 0x054857f1, + 0xf10055cf, + 0xcf055867, + 0x77f10066, + 0x77cf0568, + 0x7887f100, + 0x0088cf05, + 0x0000e7f1, + 0x8000e3f1, + 0x050807f1, 0xbd000ed0, - 0x3807f104, + 0x1807f104, 0x000ed005, 0x07f104bd, - 0x0ed00548, + 0x0ed00528, 0xf104bd00, - 0xd0055807, + 0xd0053807, 0x04bd000e, - 0x056807f1, + 0x054807f1, 0xbd000ed0, - 0x7807f104, + 0x5807f104, 0x000ed005, - 0x11cc04bd, - 0x2c21ffff, - 0xff3c31ff, - 0x51ff4c41, - 0x6c61ff5c, - 0xff7c71ff, - 0x07f18c81, - 0x03f00cd0, - 0x00020000, - 0x07f104bd, - 0x03f00cd1, - 0x00030000, - 0x07f104bd, - 0x03f00cd2, - 0x00040000, - 0x07f104bd, - 0x03f00cd3, - 0x00050000, - 0x07f104bd, - 0x03f00cd4, - 0x00060000, - 0x07f104bd, - 0x03f00cd5, - 0x00070000, 0x07f104bd, - 0x03f00cd6, - 0x00080000, - 0x80fc04bd, - 0x60fc70fc, - 0x40fc50fc, - 0x20fc30fc, - 0x00f810fc, -/* 0x0848: perf_init */ - 0x0003e7f1, - 0xf100e3f0, - 0xd0050c07, - 0x04bd000e, - 0x0002e7f1, - 0xf100e3f0, - 0xd0051c07, + 0x0ed00568, + 0xf104bd00, + 0xd0057807, 0x04bd000e, - 0x052c07f1, - 0xbd000ed0, - 0x3c07f104, + 0xffff11cc, + 0x31ff2c21, + 0x4c41ff3c, + 0xff5c51ff, + 0x71ff6c61, + 0x8c81ff7c, + 0x0cd007f1, + 0x000003f0, + 0x04bd0002, + 0x0cd107f1, + 0x000003f0, + 0x04bd0003, + 0x0cd207f1, + 0x000003f0, + 0x04bd0004, + 0x0cd307f1, + 0x000003f0, + 0x04bd0005, + 0x0cd407f1, + 0x000003f0, + 0x04bd0006, + 0x0cd507f1, + 0x000003f0, + 0x04bd0007, + 0x0cd607f1, + 0x000003f0, + 0x04bd0008, + 0x70fc80fc, + 0x50fc60fc, + 0x30fc40fc, + 0x10fc20fc, +/* 0x0862: perf_init */ + 0xe7f100f8, + 0xe3f00003, + 0x0c07f100, + 0x000ed005, + 0xe7f104bd, + 0xe3f00002, + 0x1c07f100, 0x000ed005, 0x07f104bd, - 0x0ed0054c, + 0x0ed0052c, 0xf104bd00, - 0xd0055c07, + 0xd0053c07, 0x04bd000e, - 0x056c07f1, + 0x054c07f1, 0xbd000ed0, - 0x7c07f104, + 0x5c07f104, 0x000ed005, - 0x21f504bd, - 0x07f10732, - 0x03f00ccc, - 0x000e9800, - 0x21f504bd, - 0x21f501eb, - 0x00f80217, -/* 0x08b8: i2c_drive_scl */ - 0xf40036b0, - 0x07f10e0b, - 0x01d007e0, - 0xf804bd00, -/* 0x08c9: i2c_drive_scl_lo */ - 0xe407f100, - 0x0001d007, - 0x00f804bd, -/* 0x08d4: i2c_drive_sda */ - 0xf40036b0, - 0x07f10e0b, - 0x02d007e0, - 0xf804bd00, -/* 0x08e5: i2c_drive_sda_lo */ - 0xe407f100, - 0x0002d007, - 0x00f804bd, -/* 0x08f0: i2c_sense_scl */ - 0xf10132f4, - 0xcf07c437, - 0x31fd0033, - 0x060bf404, -/* 0x0903: i2c_sense_scl_done */ - 0xf80131f4, -/* 0x0905: i2c_sense_sda */ - 0x0132f400, - 0x07c437f1, - 0xfd0033cf, - 0x0bf40432, - 0x0131f406, -/* 0x0918: i2c_sense_sda_done */ -/* 0x091a: i2c_raise_scl */ - 0x40f900f8, - 0x089847f1, - 0xf50137f0, -/* 0x0927: i2c_raise_scl_wait */ - 0xf108b821, - 0xf403e8e7, - 0x21f56621, - 0x01f408f0, - 0x0142b609, -/* 0x093b: i2c_raise_scl_done */ - 0xfcef1bf4, -/* 0x093f: i2c_start */ - 0xf500f840, - 0xf408f021, - 0x21f50d11, - 0x11f40905, - 0x300ef406, -/* 0x0950: i2c_start_rep */ - 0xf50037f0, - 0xf008b821, - 0x21f50137, - 0x76bb08d4, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0xf550fc04, - 0xb6091a21, - 0x11f40464, -/* 0x097d: i2c_start_send */ - 0x0037f01f, - 0x08d421f5, - 0x1388e7f1, - 0xf06621f4, - 0x21f50037, - 0xe7f108b8, - 0x21f41388, -/* 0x0999: i2c_start_out */ -/* 0x099b: i2c_stop */ - 0xf000f866, - 0x21f50037, - 0x37f008b8, - 0xd421f500, + 0x07f104bd, + 0x0ed0056c, + 0xf104bd00, + 0xd0057c07, + 0x04bd000e, + 0x074c21f5, + 0x0ccc07f1, + 0x980003f0, + 0x04bd000e, + 0x01eb21f5, + 0x021721f5, +/* 0x08d2: i2c_drive_scl */ + 0x36b000f8, + 0x0e0bf400, + 0x07e007f1, + 0xbd0001d0, +/* 0x08e3: i2c_drive_scl_lo */ + 0xf100f804, + 0xd007e407, + 0x04bd0001, +/* 0x08ee: i2c_drive_sda */ + 0x36b000f8, + 0x0e0bf400, + 0x07e007f1, + 0xbd0002d0, +/* 0x08ff: i2c_drive_sda_lo */ + 0xf100f804, + 0xd007e407, + 0x04bd0002, +/* 0x090a: i2c_sense_scl */ + 0x32f400f8, + 0xc437f101, + 0x0033cf07, + 0xf40431fd, + 0x31f4060b, +/* 0x091d: i2c_sense_scl_done */ +/* 0x091f: i2c_sense_sda */ + 0xf400f801, + 0x37f10132, + 0x33cf07c4, + 0x0432fd00, + 0xf4060bf4, +/* 0x0932: i2c_sense_sda_done */ + 0x00f80131, +/* 0x0934: i2c_raise_scl */ + 0x47f140f9, + 0x37f00898, + 0xd221f501, +/* 0x0941: i2c_raise_scl_wait */ 0xe8e7f108, 0x6621f403, - 0xf50137f0, - 0xf108b821, - 0xf41388e7, - 0x37f06621, - 0xd421f501, - 0x88e7f108, - 0x6621f413, -/* 0x09ce: i2c_bitw */ - 0x21f500f8, - 0xe7f108d4, - 0x21f403e8, - 0x0076bb66, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b6091a, - 0x1811f404, - 0x1388e7f1, - 0xf06621f4, + 0x090a21f5, + 0xb60901f4, + 0x1bf40142, +/* 0x0955: i2c_raise_scl_done */ + 0xf840fcef, +/* 0x0959: i2c_start */ + 0x0a21f500, + 0x0d11f409, + 0x091f21f5, + 0xf40611f4, +/* 0x096a: i2c_start_rep */ + 0x37f0300e, + 0xd221f500, + 0x0137f008, + 0x08ee21f5, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x3421f550, + 0x0464b609, +/* 0x0997: i2c_start_send */ + 0xf01f11f4, 0x21f50037, - 0xe7f108b8, + 0xe7f108ee, 0x21f41388, -/* 0x0a0d: i2c_bitw_out */ -/* 0x0a0f: i2c_bitr */ - 0xf000f866, - 0x21f50137, - 0xe7f108d4, - 0x21f403e8, - 0x0076bb66, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b6091a, - 0x1b11f404, - 0x090521f5, + 0x0037f066, + 0x08d221f5, + 0x1388e7f1, +/* 0x09b3: i2c_start_out */ + 0xf86621f4, +/* 0x09b5: i2c_stop */ + 0x0037f000, + 0x08d221f5, 0xf50037f0, - 0xf108b821, + 0xf108ee21, + 0xf403e8e7, + 0x37f06621, + 0xd221f501, + 0x88e7f108, + 0x6621f413, + 0xf50137f0, + 0xf108ee21, 0xf41388e7, - 0x3cf06621, - 0x0131f401, -/* 0x0a54: i2c_bitr_done */ -/* 0x0a56: i2c_get_byte */ - 0x57f000f8, - 0x0847f000, -/* 0x0a5c: i2c_get_byte_next */ - 0xbb0154b6, + 0x00f86621, +/* 0x09e8: i2c_bitw */ + 0x08ee21f5, + 0x03e8e7f1, + 0xbb6621f4, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x0a0f21f5, + 0x093421f5, 0xf40464b6, - 0x53fd2b11, - 0x0142b605, - 0xf0d81bf4, - 0x76bb0137, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0xf550fc04, - 0xb609ce21, -/* 0x0aa6: i2c_get_byte_done */ - 0x00f80464, -/* 0x0aa8: i2c_put_byte */ -/* 0x0aab: i2c_put_byte_next */ - 0xb60847f0, - 0x54ff0142, - 0x0076bb38, + 0xe7f11811, + 0x21f41388, + 0x0037f066, + 0x08d221f5, + 0x1388e7f1, +/* 0x0a27: i2c_bitw_out */ + 0xf86621f4, +/* 0x0a29: i2c_bitr */ + 0x0137f000, + 0x08ee21f5, + 0x03e8e7f1, + 0xbb6621f4, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x093421f5, + 0xf40464b6, + 0x21f51b11, + 0x37f0091f, + 0xd221f500, + 0x88e7f108, + 0x6621f413, + 0xf4013cf0, +/* 0x0a6e: i2c_bitr_done */ + 0x00f80131, +/* 0x0a70: i2c_get_byte */ + 0xf00057f0, +/* 0x0a76: i2c_get_byte_next */ + 0x54b60847, + 0x0076bb01, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b609ce, - 0x3411f404, - 0xf40046b0, - 0x76bbd81b, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0xf550fc04, - 0xb60a0f21, - 0x11f40464, - 0x0076bb0f, - 0xf40136b0, - 0x32f4061b, -/* 0x0b01: i2c_put_byte_done */ -/* 0x0b03: i2c_addr */ - 0xbb00f801, + 0x64b60a29, + 0x2b11f404, + 0xb60553fd, + 0x1bf40142, + 0x0137f0d8, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0xe821f550, + 0x0464b609, +/* 0x0ac0: i2c_get_byte_done */ +/* 0x0ac2: i2c_put_byte */ + 0x47f000f8, +/* 0x0ac5: i2c_put_byte_next */ + 0x0142b608, + 0xbb3854ff, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x093f21f5, + 0x09e821f5, 0xf40464b6, - 0xc3e72911, - 0x34b6012e, - 0x0553fd01, + 0x46b03411, + 0xd81bf400, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0xa821f550, + 0x2921f550, 0x0464b60a, -/* 0x0b48: i2c_addr_done */ -/* 0x0b4a: i2c_acquire_addr */ - 0xcec700f8, - 0x05e4b6f8, - 0xd014e0b7, -/* 0x0b56: i2c_acquire */ - 0x21f500f8, - 0x21f40b4a, - 0x03d9f004, - 0xf83421f4, -/* 0x0b65: i2c_release */ - 0x4a21f500, - 0x0421f40b, - 0xf403daf0, - 0x00f83421, -/* 0x0b74: i2c_recv */ - 0xc70132f4, - 0x14b6f8c1, - 0x2816b002, - 0x013a1ff5, - 0x0d0013a0, - 0xa0003298, - 0x980cd813, - 0x31f40031, - 0xf9d0f902, - 0xf1d0f9e0, - 0xf1000067, - 0x92100063, - 0x76bb0167, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0xf550fc04, - 0xb60b5621, - 0xd0fc0464, - 0xf500d6b0, - 0xf000b31b, - 0x76bb0057, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0xf550fc04, - 0xb60b0321, - 0x11f50464, - 0xc5c700d0, - 0x0076bbe0, + 0xbb0f11f4, + 0x36b00076, + 0x061bf401, +/* 0x0b1b: i2c_put_byte_done */ + 0xf80132f4, +/* 0x0b1d: i2c_addr */ + 0x0076bb00, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b60aa8, - 0xad11f504, - 0x0157f000, + 0x64b60959, + 0x2911f404, + 0x012ec3e7, + 0xfd0134b6, + 0x76bb0553, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb60ac221, +/* 0x0b62: i2c_addr_done */ + 0x00f80464, +/* 0x0b64: i2c_acquire_addr */ + 0xb6f8cec7, + 0xe0b705e4, + 0x00f8d014, +/* 0x0b70: i2c_acquire */ + 0x0b6421f5, + 0xf00421f4, + 0x21f403d9, +/* 0x0b7f: i2c_release */ + 0xf500f834, + 0xf40b6421, + 0xdaf00421, + 0x3421f403, +/* 0x0b8e: i2c_recv */ + 0x32f400f8, + 0xf8c1c701, + 0xb00214b6, + 0x1ff52816, + 0x13a0013a, + 0x32980d00, + 0xd813a000, + 0x0031980c, + 0xf90231f4, + 0xf9e0f9d0, + 0x0067f1d0, + 0x0063f100, + 0x01679210, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x0321f550, + 0x7021f550, 0x0464b60b, - 0x008a11f5, + 0xd6b0d0fc, + 0xb31bf500, + 0x0057f000, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x5621f550, - 0x0464b60a, - 0xcb6a11f4, - 0x76bbe05b, + 0x1d21f550, + 0x0464b60b, + 0x00d011f5, + 0xbbe0c5c7, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x0ac221f5, + 0xf50464b6, + 0xf000ad11, + 0x76bb0157, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb6099b21, - 0x5bb90464, - 0xf474bd02, -/* 0x0c7a: i2c_recv_not_rd08 */ - 0xd6b0430e, - 0x3d1bf401, - 0xf50057f0, - 0xf40b0321, - 0xc5c73311, - 0xa821f5e0, - 0x2911f40a, - 0xf50057f0, - 0xf40b0321, - 0xb5c71f11, - 0xa821f5e0, - 0x1511f40a, - 0x099b21f5, - 0xc5c774bd, - 0x091bf408, - 0xf40232f4, -/* 0x0cba: i2c_recv_not_wr08 */ -/* 0x0cba: i2c_recv_done */ - 0xcec7030e, - 0x6521f5f8, - 0xfce0fc0b, - 0x0a12f4d0, - 0xf5027cb9, -/* 0x0ccf: i2c_recv_exit */ - 0xf802e521, -/* 0x0cd1: i2c_init */ -/* 0x0cd3: test_recv */ - 0xf100f800, - 0xcf05d817, - 0x10b60011, - 0xd807f101, - 0x0001d005, - 0xe7f104bd, - 0xe3f1d900, - 0x21f5134f, - 0x00f80217, -/* 0x0cf4: test_init */ - 0x0800e7f1, + 0xb60b1d21, + 0x11f50464, + 0x76bb008a, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb60a7021, + 0x11f40464, + 0xe05bcb6a, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0xb521f550, + 0x0464b609, + 0xbd025bb9, + 0x430ef474, +/* 0x0c94: i2c_recv_not_rd08 */ + 0xf401d6b0, + 0x57f03d1b, + 0x1d21f500, + 0x3311f40b, + 0xf5e0c5c7, + 0xf40ac221, + 0x57f02911, + 0x1d21f500, + 0x1f11f40b, + 0xf5e0b5c7, + 0xf40ac221, + 0x21f51511, + 0x74bd09b5, + 0xf408c5c7, + 0x32f4091b, + 0x030ef402, +/* 0x0cd4: i2c_recv_not_wr08 */ +/* 0x0cd4: i2c_recv_done */ + 0xf5f8cec7, + 0xfc0b7f21, + 0xf4d0fce0, + 0x7cb90a12, + 0xe521f502, +/* 0x0ce9: i2c_recv_exit */ +/* 0x0ceb: i2c_init */ + 0xf800f802, +/* 0x0ced: test_recv */ + 0xd817f100, + 0x0011cf05, + 0xf10110b6, + 0xd005d807, + 0x04bd0001, + 0xd900e7f1, + 0x134fe3f1, 0x021721f5, -/* 0x0cfe: idle_recv */ - 0x00f800f8, -/* 0x0d00: idle */ - 0xf10031f4, - 0xcf05d417, - 0x10b60011, - 0xd407f101, - 0x0001d005, -/* 0x0d16: idle_loop */ - 0x17f004bd, - 0x0232f458, -/* 0x0d1c: idle_proc */ -/* 0x0d1c: idle_proc_exec */ - 0x1eb910f9, - 0xee21f502, - 0xf410fc02, - 0x31f40911, - 0xef0ef402, -/* 0x0d30: idle_proc_next */ - 0xb85810b6, - 0x1bf4061f, - 0xdd02f4e6, - 0xf40028f4, - 0x0000c10e, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, +/* 0x0d0e: test_init */ + 0xe7f100f8, + 0x21f50800, + 0x00f80217, +/* 0x0d18: idle_recv */ +/* 0x0d1a: idle */ + 0x31f400f8, + 0xd417f100, + 0x0011cf05, + 0xf10110b6, + 0xd005d407, + 0x04bd0001, +/* 0x0d30: idle_loop */ + 0xf45817f0, +/* 0x0d36: idle_proc */ +/* 0x0d36: idle_proc_exec */ + 0x10f90232, + 0xf5021eb9, + 0xfc02ee21, + 0x0911f410, + 0xf40231f4, +/* 0x0d4a: idle_proc_next */ + 0x10b6ef0e, + 0x061fb858, + 0xf4e61bf4, + 0x28f4dd02, + 0xc10ef400, 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 43dada42..a5f43b5d 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, - 0x00000756, + 0x0000076a, 0x000005f5, 0x00000000, 0x00000000, @@ -90,8 +90,8 @@ uint32_t gk208_pmu_data[] = { 0x00000000, 0x00000000, 0x5f433249, - 0x00000baf, - 0x00000a59, + 0x00000bc3, + 0x00000a6d, 0x00000000, 0x00000000, 0x00000000, @@ -112,8 +112,8 @@ uint32_t gk208_pmu_data[] = { 0x00000000, 0x00000000, 0x54534554, - 0x00000bcd, - 0x00000bb1, + 0x00000be1, + 0x00000bc5, 0x00000000, 0x00000000, 0x00000000, @@ -134,8 +134,8 @@ uint32_t gk208_pmu_data[] = { 0x00000000, 0x00000000, 0x454c4449, - 0x00000bd8, - 0x00000bd6, + 0x00000bec, + 0x00000bea, 0x00000000, 0x00000000, 0x00000000, @@ -1367,41 +1367,47 @@ uint32_t gk208_pmu_code[] = { /* 0x05f5: perf_recv */ 0x4f48da00, 0xeaa65453, - 0x0a5d1bf4, + 0x0a711bf4, 0xf4daa601, - 0x0ef4060b, -/* 0x0609: perf_recv_get_slots */ - 0x0cd2406a, - 0xbd000c18, - 0x08c4b604, - 0x180cd140, + 0x020a0d0b, + 0x0bf4daa6, + 0x770ef456, +/* 0x0610: perf_recv_get_slots */ + 0x180cd240, 0x04bd000c, 0x4008c4b6, - 0x0c180cd0, + 0x0c180cd1, 0xb604bd00, - 0xc5f008c4, - 0x0cd640ff, - 0xbd000b18, - 0x08b4b604, - 0x180cd540, + 0xd04008c4, + 0x000c180c, + 0xc4b604bd, + 0xffc5f008, + 0x180cd640, 0x04bd000b, 0x4008b4b6, - 0x0b180cd4, + 0x0b180cd5, 0xb604bd00, - 0xd34008b4, + 0xd44008b4, 0x000b180c, - 0x0ef404bd, -/* 0x0659: perf_recv_not_host */ - 0x06767e1a, + 0xb4b604bd, + 0x0cd34008, + 0xbd000b18, + 0x270ef404, +/* 0x0660: perf_recv_set_slot */ + 0xb710c0f0, + 0xf60504c0, + 0x0ef400cb, +/* 0x066d: perf_recv_not_host */ + 0x068a7e1e, 0x0ccc4000, 0xbd000e98, 0x01bb7e04, 0x01de7e00, 0x070ef400, -/* 0x0670: perf_recv_host */ +/* 0x0684: perf_recv_host */ 0x00029f7e, -/* 0x0674: perf_recv_exit */ -/* 0x0676: perf_counter_readout */ +/* 0x0688: perf_recv_exit */ +/* 0x068a: perf_counter_readout */ 0x10f900f8, 0x30f920f9, 0x50f940f9, @@ -1458,7 +1464,7 @@ uint32_t gk208_pmu_code[] = { 0x50fc60fc, 0x30fc40fc, 0x10fc20fc, -/* 0x0756: perf_init */ +/* 0x076a: perf_init */ 0x030e00f8, 0xf6050c40, 0x04bd000e, @@ -1476,95 +1482,95 @@ uint32_t gk208_pmu_code[] = { 0x000ef605, 0x7c4004bd, 0x000ef605, - 0x767e04bd, + 0x8a7e04bd, 0xcc400006, 0x000e980c, 0x21f504bd, 0xde7e01bb, 0x00f80001, -/* 0x07b0: i2c_drive_scl */ +/* 0x07c4: i2c_drive_scl */ 0xf40036b0, 0xe0400d0b, 0x0001f607, 0x00f804bd, -/* 0x07c0: i2c_drive_scl_lo */ +/* 0x07d4: i2c_drive_scl_lo */ 0xf607e440, 0x04bd0001, -/* 0x07ca: i2c_drive_sda */ +/* 0x07de: i2c_drive_sda */ 0x36b000f8, 0x0d0bf400, 0xf607e040, 0x04bd0002, -/* 0x07da: i2c_drive_sda_lo */ +/* 0x07ee: i2c_drive_sda_lo */ 0xe44000f8, 0x0002f607, 0x00f804bd, -/* 0x07e4: i2c_sense_scl */ +/* 0x07f8: i2c_sense_scl */ 0x430132f4, 0x33cf07c4, 0x0431fd00, 0xf4060bf4, -/* 0x07f6: i2c_sense_scl_done */ +/* 0x080a: i2c_sense_scl_done */ 0x00f80131, -/* 0x07f8: i2c_sense_sda */ +/* 0x080c: i2c_sense_sda */ 0x430132f4, 0x33cf07c4, 0x0432fd00, 0xf4060bf4, -/* 0x080a: i2c_sense_sda_done */ +/* 0x081e: i2c_sense_sda_done */ 0x00f80131, -/* 0x080c: i2c_raise_scl */ +/* 0x0820: i2c_raise_scl */ 0x984440f9, 0x7e010308, -/* 0x0817: i2c_raise_scl_wait */ - 0x4e0007b0, +/* 0x082b: i2c_raise_scl_wait */ + 0x4e0007c4, 0x587e03e8, - 0xe47e0000, + 0xf87e0000, 0x01f40007, 0x0142b609, -/* 0x082b: i2c_raise_scl_done */ +/* 0x083f: i2c_raise_scl_done */ 0xfcef1bf4, -/* 0x082f: i2c_start */ +/* 0x0843: i2c_start */ 0x7e00f840, - 0xf40007e4, - 0xf87e0d11, - 0x11f40007, + 0xf40007f8, + 0x0c7e0d11, + 0x11f40008, 0x2e0ef406, -/* 0x0840: i2c_start_rep */ - 0xb07e0003, +/* 0x0854: i2c_start_rep */ + 0xc47e0003, 0x01030007, - 0x0007ca7e, + 0x0007de7e, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x080c7e50, + 0x08207e50, 0x0464b600, -/* 0x086b: i2c_start_send */ +/* 0x087f: i2c_start_send */ 0x031d11f4, - 0x07ca7e00, + 0x07de7e00, 0x13884e00, 0x0000587e, - 0xb07e0003, + 0xc47e0003, 0x884e0007, 0x00587e13, -/* 0x0885: i2c_start_out */ -/* 0x0887: i2c_stop */ +/* 0x0899: i2c_start_out */ +/* 0x089b: i2c_stop */ 0x0300f800, - 0x07b07e00, + 0x07c47e00, 0x7e000300, - 0x4e0007ca, + 0x4e0007de, 0x587e03e8, 0x01030000, - 0x0007b07e, + 0x0007c47e, 0x7e13884e, 0x03000058, - 0x07ca7e01, + 0x07de7e01, 0x13884e00, 0x0000587e, -/* 0x08b6: i2c_bitw */ - 0xca7e00f8, +/* 0x08ca: i2c_bitw */ + 0xde7e00f8, 0xe84e0007, 0x00587e03, 0x0076bb00, @@ -1572,18 +1578,18 @@ uint32_t gk208_pmu_code[] = { 0x04659450, 0xbd0256bb, 0x0475fd50, - 0x0c7e50fc, + 0x207e50fc, 0x64b60008, 0x1711f404, 0x7e13884e, 0x03000058, - 0x07b07e00, + 0x07c47e00, 0x13884e00, 0x0000587e, -/* 0x08f4: i2c_bitw_out */ -/* 0x08f6: i2c_bitr */ +/* 0x0908: i2c_bitw_out */ +/* 0x090a: i2c_bitr */ 0x010300f8, - 0x0007ca7e, + 0x0007de7e, 0x7e03e84e, 0xbb000058, 0x65b60076, @@ -1591,18 +1597,18 @@ uint32_t gk208_pmu_code[] = { 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x00080c7e, + 0x0008207e, 0xf40464b6, - 0xf87e1a11, - 0x00030007, - 0x0007b07e, + 0x0c7e1a11, + 0x00030008, + 0x0007c47e, 0x7e13884e, 0xf0000058, 0x31f4013c, -/* 0x0939: i2c_bitr_done */ -/* 0x093b: i2c_get_byte */ +/* 0x094d: i2c_bitr_done */ +/* 0x094f: i2c_get_byte */ 0x0500f801, -/* 0x093f: i2c_get_byte_next */ +/* 0x0953: i2c_get_byte_next */ 0xb6080400, 0x76bb0154, 0x0465b600, @@ -1610,7 +1616,7 @@ uint32_t gk208_pmu_code[] = { 0x0256bb04, 0x75fd50bd, 0x7e50fc04, - 0xb60008f6, + 0xb600090a, 0x11f40464, 0x0553fd2a, 0xf40142b6, @@ -1620,12 +1626,12 @@ uint32_t gk208_pmu_code[] = { 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x08b67e50, + 0x08ca7e50, 0x0464b600, -/* 0x0988: i2c_get_byte_done */ -/* 0x098a: i2c_put_byte */ +/* 0x099c: i2c_get_byte_done */ +/* 0x099e: i2c_put_byte */ 0x080400f8, -/* 0x098c: i2c_put_byte_next */ +/* 0x09a0: i2c_put_byte_next */ 0xff0142b6, 0x76bb3854, 0x0465b600, @@ -1633,7 +1639,7 @@ uint32_t gk208_pmu_code[] = { 0x0256bb04, 0x75fd50bd, 0x7e50fc04, - 0xb60008b6, + 0xb60008ca, 0x11f40464, 0x0046b034, 0xbbd81bf4, @@ -1642,20 +1648,20 @@ uint32_t gk208_pmu_code[] = { 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x0008f67e, + 0x00090a7e, 0xf40464b6, 0x76bb0f11, 0x0136b000, 0xf4061bf4, -/* 0x09e2: i2c_put_byte_done */ +/* 0x09f6: i2c_put_byte_done */ 0x00f80132, -/* 0x09e4: i2c_addr */ +/* 0x09f8: i2c_addr */ 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x082f7e50, + 0x08437e50, 0x0464b600, 0xe72911f4, 0xb6012ec3, @@ -1665,25 +1671,25 @@ uint32_t gk208_pmu_code[] = { 0x04659450, 0xbd0256bb, 0x0475fd50, - 0x8a7e50fc, + 0x9e7e50fc, 0x64b60009, -/* 0x0a29: i2c_addr_done */ -/* 0x0a2b: i2c_acquire_addr */ +/* 0x0a3d: i2c_addr_done */ +/* 0x0a3f: i2c_acquire_addr */ 0xc700f804, 0xe4b6f8ce, 0x14e0b705, -/* 0x0a37: i2c_acquire */ +/* 0x0a4b: i2c_acquire */ 0x7e00f8d0, - 0x7e000a2b, + 0x7e000a3f, 0xf0000004, 0x2d7e03d9, 0x00f80000, -/* 0x0a48: i2c_release */ - 0x000a2b7e, +/* 0x0a5c: i2c_release */ + 0x000a3f7e, 0x0000047e, 0x7e03daf0, 0xf800002d, -/* 0x0a59: i2c_recv */ +/* 0x0a6d: i2c_recv */ 0x0132f400, 0xb6f8c1c7, 0x16b00214, @@ -1702,7 +1708,7 @@ uint32_t gk208_pmu_code[] = { 0x0256bb04, 0x75fd50bd, 0x7e50fc04, - 0xb6000a37, + 0xb6000a4b, 0xd0fc0464, 0xf500d6b0, 0x0500b01b, @@ -1711,7 +1717,7 @@ uint32_t gk208_pmu_code[] = { 0x04659450, 0xbd0256bb, 0x0475fd50, - 0xe47e50fc, + 0xf87e50fc, 0x64b60009, 0xcc11f504, 0xe0c5c700, @@ -1720,7 +1726,7 @@ uint32_t gk208_pmu_code[] = { 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x098a7e50, + 0x099e7e50, 0x0464b600, 0x00a911f5, 0x76bb0105, @@ -1729,7 +1735,7 @@ uint32_t gk208_pmu_code[] = { 0x0256bb04, 0x75fd50bd, 0x7e50fc04, - 0xb60009e4, + 0xb60009f8, 0x11f50464, 0x76bb0087, 0x0465b600, @@ -1737,7 +1743,7 @@ uint32_t gk208_pmu_code[] = { 0x0256bb04, 0x75fd50bd, 0x7e50fc04, - 0xb600093b, + 0xb600094f, 0x11f40464, 0xe05bcb67, 0xb60076bb, @@ -1745,37 +1751,37 @@ uint32_t gk208_pmu_code[] = { 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x08877e50, + 0x089b7e50, 0x0464b600, 0x74bd5bb2, -/* 0x0b5b: i2c_recv_not_rd08 */ +/* 0x0b6f: i2c_recv_not_rd08 */ 0xb0410ef4, 0x1bf401d6, 0x7e00053b, - 0xf40009e4, + 0xf40009f8, 0xc5c73211, - 0x098a7ee0, + 0x099e7ee0, 0x2811f400, - 0xe47e0005, + 0xf87e0005, 0x11f40009, 0xe0b5c71f, - 0x00098a7e, + 0x00099e7e, 0x7e1511f4, - 0xbd000887, + 0xbd00089b, 0x08c5c774, 0xf4091bf4, 0x0ef40232, -/* 0x0b99: i2c_recv_not_wr08 */ -/* 0x0b99: i2c_recv_done */ +/* 0x0bad: i2c_recv_not_wr08 */ +/* 0x0bad: i2c_recv_done */ 0xf8cec703, - 0x000a487e, + 0x000a5c7e, 0xd0fce0fc, 0xb20912f4, 0x029f7e7c, -/* 0x0bad: i2c_recv_exit */ -/* 0x0baf: i2c_init */ +/* 0x0bc1: i2c_recv_exit */ +/* 0x0bc3: i2c_init */ 0xf800f800, -/* 0x0bb1: test_recv */ +/* 0x0bc5: test_recv */ 0x04584100, 0xb60011cf, 0x58400110, @@ -1783,27 +1789,27 @@ uint32_t gk208_pmu_code[] = { 0x00de04bd, 0x7e134fd9, 0xf80001de, -/* 0x0bcd: test_init */ +/* 0x0be1: test_init */ 0x08004e00, 0x0001de7e, -/* 0x0bd6: idle_recv */ +/* 0x0bea: idle_recv */ 0x00f800f8, -/* 0x0bd8: idle */ +/* 0x0bec: idle */ 0x410031f4, 0x11cf0454, 0x0110b600, 0xf6045440, 0x04bd0001, -/* 0x0bec: idle_loop */ +/* 0x0c00: idle_loop */ 0x32f45801, -/* 0x0bf1: idle_proc */ -/* 0x0bf1: idle_proc_exec */ +/* 0x0c05: idle_proc */ +/* 0x0c05: idle_proc_exec */ 0xb210f902, 0x02a87e1e, 0xf410fc00, 0x31f40911, 0xf00ef402, -/* 0x0c04: idle_proc_next */ +/* 0x0c18: idle_proc_next */ 0xa65810b6, 0xe81bf41f, 0xf4e002f4, @@ -1862,9 +1868,4 @@ uint32_t gk208_pmu_code[] = { 0x00000000, 0x00000000, 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, }; diff --git a/drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h b/drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h index a86478e6..17be7cb9 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, - 0x00000950, + 0x0000096a, 0x0000083c, 0x00000000, 0x00000000, @@ -90,8 +90,8 @@ uint32_t gt215_pmu_data[] = { 0x00000000, 0x00000000, 0x5f433249, - 0x00000dd6, - 0x00000c79, + 0x00000df0, + 0x00000c93, 0x00000000, 0x00000000, 0x00000000, @@ -112,8 +112,8 @@ uint32_t gt215_pmu_data[] = { 0x00000000, 0x00000000, 0x54534554, - 0x00000dff, - 0x00000dd8, + 0x00000e19, + 0x00000df2, 0x00000000, 0x00000000, 0x00000000, @@ -134,8 +134,8 @@ uint32_t gt215_pmu_data[] = { 0x00000000, 0x00000000, 0x454c4449, - 0x00000e0b, - 0x00000e09, + 0x00000e25, + 0x00000e23, 0x00000000, 0x00000000, 0x00000000, @@ -1519,451 +1519,452 @@ uint32_t gt215_pmu_code[] = { 0x4f48a7f1, 0x5453a3f1, 0xf406eab8, - 0xa7f1461b, + 0xa7f1601b, 0xa3f00001, 0x06dab800, - 0xf4060bf4, -/* 0x085a: perf_recv_get_slots */ - 0x07f1510e, - 0x03f00cd2, + 0xf1130bf4, + 0xf00002a7, + 0xdab800a3, + 0x390bf406, +/* 0x0867: perf_recv_get_slots */ + 0xf15e0ef4, + 0xf00cd207, + 0x0c180003, + 0xb604bd00, + 0x07f108c4, + 0x03f00cd1, 0x000c1800, 0xc4b604bd, - 0xd107f108, + 0xd007f108, 0x0003f00c, 0xbd000c18, 0x08c4b604, + 0xf4ffc5f0, +/* 0x089a: perf_recv_set_slot */ + 0xc0f02b0e, + 0x04c0b710, + 0x00cbd005, +/* 0x08a7: perf_recv_not_host */ + 0xf5220ef4, + 0xf108c821, + 0xf00ccc07, + 0x0e980003, + 0xf504bd00, + 0xf5022a21, + 0xf4025621, +/* 0x08c2: perf_recv_host */ + 0x21f5070e, +/* 0x08c6: perf_recv_exit */ + 0x00f80336, +/* 0x08c8: perf_counter_readout */ + 0x20f910f9, + 0x40f930f9, + 0x050817f1, + 0xcf0614b6, + 0x27f10011, + 0x24b60518, + 0x0022cf06, + 0x052837f1, + 0xcf0634b6, + 0x47f10033, + 0x44b60538, + 0x0044cf06, + 0x0000e7f1, + 0x8000e3f1, + 0x050807f1, + 0xd00604b6, + 0x04bd000e, + 0x051807f1, + 0xd00604b6, + 0x04bd000e, + 0x052807f1, + 0xd00604b6, + 0x04bd000e, + 0x053807f1, + 0xd00604b6, + 0x04bd000e, + 0xffff11cc, + 0x31ff2c21, + 0x4c41ff3c, 0x0cd007f1, - 0x180003f0, - 0x04bd000c, - 0xf008c4b6, - 0x0ef4ffc5, -/* 0x088d: perf_recv_not_host */ - 0xae21f51e, - 0xcc07f108, - 0x0003f00c, - 0xbd000e98, - 0x2a21f504, - 0x5621f502, - 0x070ef402, -/* 0x08a8: perf_recv_host */ - 0x033621f5, -/* 0x08ac: perf_recv_exit */ -/* 0x08ae: perf_counter_readout */ - 0x10f900f8, - 0x30f920f9, - 0x17f140f9, - 0x14b60508, - 0x0011cf06, - 0x051827f1, - 0xcf0624b6, - 0x37f10022, - 0x34b60528, - 0x0033cf06, - 0x053847f1, - 0xcf0644b6, - 0xe7f10044, - 0xe3f10000, - 0x07f18000, - 0x04b60508, - 0x000ed006, - 0x07f104bd, - 0x04b60518, - 0x000ed006, - 0x07f104bd, - 0x04b60528, - 0x000ed006, - 0x07f104bd, - 0x04b60538, - 0x000ed006, - 0x11cc04bd, - 0x2c21ffff, - 0xff3c31ff, - 0x07f14c41, - 0x03f00cd0, - 0x00020000, - 0x07f104bd, - 0x03f00cd1, - 0x00030000, - 0x07f104bd, - 0x03f00cd2, - 0x00040000, - 0x40fc04bd, - 0x20fc30fc, - 0x00f810fc, -/* 0x0950: perf_init */ - 0x0003e7f1, - 0xf100e3f0, - 0xb6050c07, - 0x0ed00604, - 0xf104bd00, - 0xf00002e7, - 0x07f100e3, - 0x04b6051c, - 0x000ed006, - 0x07f104bd, - 0x04b6052c, - 0x000ed006, - 0x07f104bd, - 0x04b6053c, - 0x000ed006, - 0x21f504bd, - 0x07f108ae, - 0x03f00ccc, - 0x000e9800, - 0x21f504bd, - 0x21f5022a, - 0x00f80256, -/* 0x09a8: i2c_drive_scl */ - 0xf40036b0, - 0x07f1110b, - 0x04b607e0, - 0x0001d006, - 0x00f804bd, -/* 0x09bc: i2c_drive_scl_lo */ - 0x07e407f1, + 0x000003f0, + 0x04bd0002, + 0x0cd107f1, + 0x000003f0, + 0x04bd0003, + 0x0cd207f1, + 0x000003f0, + 0x04bd0004, + 0x30fc40fc, + 0x10fc20fc, +/* 0x096a: perf_init */ + 0xe7f100f8, + 0xe3f00003, + 0x0c07f100, + 0x0604b605, + 0xbd000ed0, + 0x02e7f104, + 0x00e3f000, + 0x051c07f1, 0xd00604b6, - 0x04bd0001, -/* 0x09ca: i2c_drive_sda */ + 0x04bd000e, + 0x052c07f1, + 0xd00604b6, + 0x04bd000e, + 0x053c07f1, + 0xd00604b6, + 0x04bd000e, + 0x08c821f5, + 0x0ccc07f1, + 0x980003f0, + 0x04bd000e, + 0x022a21f5, + 0x025621f5, +/* 0x09c2: i2c_drive_scl */ 0x36b000f8, 0x110bf400, 0x07e007f1, 0xd00604b6, - 0x04bd0002, -/* 0x09de: i2c_drive_sda_lo */ + 0x04bd0001, +/* 0x09d6: i2c_drive_scl_lo */ 0x07f100f8, 0x04b607e4, + 0x0001d006, + 0x00f804bd, +/* 0x09e4: i2c_drive_sda */ + 0xf40036b0, + 0x07f1110b, + 0x04b607e0, 0x0002d006, 0x00f804bd, -/* 0x09ec: i2c_sense_scl */ - 0xf10132f4, - 0xb607c437, - 0x33cf0634, - 0x0431fd00, - 0xf4060bf4, -/* 0x0a02: i2c_sense_scl_done */ - 0x00f80131, -/* 0x0a04: i2c_sense_sda */ - 0xf10132f4, - 0xb607c437, - 0x33cf0634, - 0x0432fd00, - 0xf4060bf4, -/* 0x0a1a: i2c_sense_sda_done */ - 0x00f80131, -/* 0x0a1c: i2c_raise_scl */ - 0x47f140f9, - 0x37f00898, - 0xa821f501, -/* 0x0a29: i2c_raise_scl_wait */ - 0xe8e7f109, - 0x7e21f403, - 0x09ec21f5, - 0xb60901f4, - 0x1bf40142, -/* 0x0a3d: i2c_raise_scl_done */ - 0xf840fcef, -/* 0x0a41: i2c_start */ - 0xec21f500, - 0x0d11f409, - 0x0a0421f5, - 0xf40611f4, -/* 0x0a52: i2c_start_rep */ - 0x37f0300e, - 0xa821f500, - 0x0137f009, - 0x09ca21f5, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0x1c21f550, - 0x0464b60a, -/* 0x0a7f: i2c_start_send */ - 0xf01f11f4, +/* 0x09f8: i2c_drive_sda_lo */ + 0x07e407f1, + 0xd00604b6, + 0x04bd0002, +/* 0x0a06: i2c_sense_scl */ + 0x32f400f8, + 0xc437f101, + 0x0634b607, + 0xfd0033cf, + 0x0bf40431, + 0x0131f406, +/* 0x0a1c: i2c_sense_scl_done */ +/* 0x0a1e: i2c_sense_sda */ + 0x32f400f8, + 0xc437f101, + 0x0634b607, + 0xfd0033cf, + 0x0bf40432, + 0x0131f406, +/* 0x0a34: i2c_sense_sda_done */ +/* 0x0a36: i2c_raise_scl */ + 0x40f900f8, + 0x089847f1, + 0xf50137f0, +/* 0x0a43: i2c_raise_scl_wait */ + 0xf109c221, + 0xf403e8e7, + 0x21f57e21, + 0x01f40a06, + 0x0142b609, +/* 0x0a57: i2c_raise_scl_done */ + 0xfcef1bf4, +/* 0x0a5b: i2c_start */ + 0xf500f840, + 0xf40a0621, + 0x21f50d11, + 0x11f40a1e, + 0x300ef406, +/* 0x0a6c: i2c_start_rep */ + 0xf50037f0, + 0xf009c221, + 0x21f50137, + 0x76bb09e4, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb60a3621, + 0x11f40464, +/* 0x0a99: i2c_start_send */ + 0x0037f01f, + 0x09e421f5, + 0x1388e7f1, + 0xf07e21f4, 0x21f50037, - 0xe7f109ca, + 0xe7f109c2, 0x21f41388, - 0x0037f07e, - 0x09a821f5, - 0x1388e7f1, -/* 0x0a9b: i2c_start_out */ - 0xf87e21f4, -/* 0x0a9d: i2c_stop */ - 0x0037f000, - 0x09a821f5, - 0xf50037f0, - 0xf109ca21, - 0xf403e8e7, +/* 0x0ab5: i2c_start_out */ +/* 0x0ab7: i2c_stop */ + 0xf000f87e, + 0x21f50037, + 0x37f009c2, + 0xe421f500, + 0xe8e7f109, + 0x7e21f403, + 0xf50137f0, + 0xf109c221, + 0xf41388e7, 0x37f07e21, - 0xa821f501, + 0xe421f501, 0x88e7f109, 0x7e21f413, - 0xf50137f0, - 0xf109ca21, - 0xf41388e7, - 0x00f87e21, -/* 0x0ad0: i2c_bitw */ - 0x09ca21f5, - 0x03e8e7f1, - 0xbb7e21f4, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x0a1c21f5, - 0xf40464b6, - 0xe7f11811, - 0x21f41388, - 0x0037f07e, - 0x09a821f5, +/* 0x0aea: i2c_bitw */ + 0x21f500f8, + 0xe7f109e4, + 0x21f403e8, + 0x0076bb7e, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b60a36, + 0x1811f404, 0x1388e7f1, -/* 0x0b0f: i2c_bitw_out */ - 0xf87e21f4, -/* 0x0b11: i2c_bitr */ - 0x0137f000, - 0x09ca21f5, - 0x03e8e7f1, - 0xbb7e21f4, + 0xf07e21f4, + 0x21f50037, + 0xe7f109c2, + 0x21f41388, +/* 0x0b29: i2c_bitw_out */ +/* 0x0b2b: i2c_bitr */ + 0xf000f87e, + 0x21f50137, + 0xe7f109e4, + 0x21f403e8, + 0x0076bb7e, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b60a36, + 0x1b11f404, + 0x0a1e21f5, + 0xf50037f0, + 0xf109c221, + 0xf41388e7, + 0x3cf07e21, + 0x0131f401, +/* 0x0b70: i2c_bitr_done */ +/* 0x0b72: i2c_get_byte */ + 0x57f000f8, + 0x0847f000, +/* 0x0b78: i2c_get_byte_next */ + 0xbb0154b6, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x0a1c21f5, + 0x0b2b21f5, 0xf40464b6, - 0x21f51b11, - 0x37f00a04, - 0xa821f500, - 0x88e7f109, - 0x7e21f413, - 0xf4013cf0, -/* 0x0b56: i2c_bitr_done */ - 0x00f80131, -/* 0x0b58: i2c_get_byte */ - 0xf00057f0, -/* 0x0b5e: i2c_get_byte_next */ - 0x54b60847, - 0x0076bb01, + 0x53fd2b11, + 0x0142b605, + 0xf0d81bf4, + 0x76bb0137, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb60aea21, +/* 0x0bc2: i2c_get_byte_done */ + 0x00f80464, +/* 0x0bc4: i2c_put_byte */ +/* 0x0bc7: i2c_put_byte_next */ + 0xb60847f0, + 0x54ff0142, + 0x0076bb38, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b60b11, - 0x2b11f404, - 0xb60553fd, - 0x1bf40142, - 0x0137f0d8, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0xd021f550, - 0x0464b60a, -/* 0x0ba8: i2c_get_byte_done */ -/* 0x0baa: i2c_put_byte */ - 0x47f000f8, -/* 0x0bad: i2c_put_byte_next */ - 0x0142b608, - 0xbb3854ff, + 0x64b60aea, + 0x3411f404, + 0xf40046b0, + 0x76bbd81b, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb60b2b21, + 0x11f40464, + 0x0076bb0f, + 0xf40136b0, + 0x32f4061b, +/* 0x0c1d: i2c_put_byte_done */ +/* 0x0c1f: i2c_addr */ + 0xbb00f801, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x0ad021f5, + 0x0a5b21f5, 0xf40464b6, - 0x46b03411, - 0xd81bf400, + 0xc3e72911, + 0x34b6012e, + 0x0553fd01, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x1121f550, + 0xc421f550, 0x0464b60b, - 0xbb0f11f4, - 0x36b00076, - 0x061bf401, -/* 0x0c03: i2c_put_byte_done */ - 0xf80132f4, -/* 0x0c05: i2c_addr */ +/* 0x0c64: i2c_addr_done */ +/* 0x0c66: i2c_acquire_addr */ + 0xcec700f8, + 0x02e4b6f8, + 0x0d24e0b7, + 0xf800ee98, +/* 0x0c75: i2c_acquire */ + 0x6621f500, + 0x0421f40c, + 0xf403d9f0, + 0x00f84021, +/* 0x0c84: i2c_release */ + 0x0c6621f5, + 0xf00421f4, + 0x21f403da, +/* 0x0c93: i2c_recv */ + 0xf400f840, + 0xc1c70132, + 0x0214b6f8, + 0xf52816b0, + 0xa0013a1f, + 0x980cfc13, + 0x13a00032, + 0x31980cd4, + 0x0231f400, + 0xe0f9d0f9, + 0x67f1d0f9, + 0x63f10000, + 0x67921000, + 0x0076bb01, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b60c75, + 0xb0d0fc04, + 0x1bf500d6, + 0x57f000b3, 0x0076bb00, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b60a41, - 0x2911f404, - 0x012ec3e7, - 0xfd0134b6, - 0x76bb0553, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0xf550fc04, - 0xb60baa21, -/* 0x0c4a: i2c_addr_done */ - 0x00f80464, -/* 0x0c4c: i2c_acquire_addr */ - 0xb6f8cec7, - 0xe0b702e4, - 0xee980d24, -/* 0x0c5b: i2c_acquire */ - 0xf500f800, - 0xf40c4c21, - 0xd9f00421, - 0x4021f403, -/* 0x0c6a: i2c_release */ - 0x21f500f8, - 0x21f40c4c, - 0x03daf004, - 0xf84021f4, -/* 0x0c79: i2c_recv */ - 0x0132f400, - 0xb6f8c1c7, - 0x16b00214, - 0x3a1ff528, - 0xfc13a001, - 0x0032980c, - 0x0cd413a0, - 0xf4003198, - 0xd0f90231, - 0xd0f9e0f9, - 0x000067f1, - 0x100063f1, - 0xbb016792, + 0x64b60c1f, + 0xd011f504, + 0xe0c5c700, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0xc421f550, + 0x0464b60b, + 0x00ad11f5, + 0xbb0157f0, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x0c5b21f5, - 0xfc0464b6, - 0x00d6b0d0, - 0x00b31bf5, - 0xbb0057f0, + 0x0c1f21f5, + 0xf50464b6, + 0xbb008a11, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x0c0521f5, - 0xf50464b6, - 0xc700d011, - 0x76bbe0c5, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0xf550fc04, - 0xb60baa21, - 0x11f50464, - 0x57f000ad, - 0x0076bb01, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b60c05, - 0x8a11f504, - 0x0076bb00, + 0x0b7221f5, + 0xf40464b6, + 0x5bcb6a11, + 0x0076bbe0, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b60b58, - 0x6a11f404, - 0xbbe05bcb, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x0a9d21f5, - 0xb90464b6, - 0x74bd025b, -/* 0x0d7f: i2c_recv_not_rd08 */ - 0xb0430ef4, - 0x1bf401d6, - 0x0057f03d, - 0x0c0521f5, - 0xc73311f4, - 0x21f5e0c5, - 0x11f40baa, - 0x0057f029, - 0x0c0521f5, - 0xc71f11f4, - 0x21f5e0b5, - 0x11f40baa, - 0x9d21f515, - 0xc774bd0a, - 0x1bf408c5, - 0x0232f409, -/* 0x0dbf: i2c_recv_not_wr08 */ -/* 0x0dbf: i2c_recv_done */ - 0xc7030ef4, - 0x21f5f8ce, - 0xe0fc0c6a, - 0x12f4d0fc, - 0x027cb90a, - 0x033621f5, -/* 0x0dd4: i2c_recv_exit */ -/* 0x0dd6: i2c_init */ - 0x00f800f8, -/* 0x0dd8: test_recv */ - 0x05d817f1, + 0x64b60ab7, + 0x025bb904, + 0x0ef474bd, +/* 0x0d99: i2c_recv_not_rd08 */ + 0x01d6b043, + 0xf03d1bf4, + 0x21f50057, + 0x11f40c1f, + 0xe0c5c733, + 0x0bc421f5, + 0xf02911f4, + 0x21f50057, + 0x11f40c1f, + 0xe0b5c71f, + 0x0bc421f5, + 0xf51511f4, + 0xbd0ab721, + 0x08c5c774, + 0xf4091bf4, + 0x0ef40232, +/* 0x0dd9: i2c_recv_not_wr08 */ +/* 0x0dd9: i2c_recv_done */ + 0xf8cec703, + 0x0c8421f5, + 0xd0fce0fc, + 0xb90a12f4, + 0x21f5027c, +/* 0x0dee: i2c_recv_exit */ + 0x00f80336, +/* 0x0df0: i2c_init */ +/* 0x0df2: test_recv */ + 0x17f100f8, + 0x14b605d8, + 0x0011cf06, + 0xf10110b6, + 0xb605d807, + 0x01d00604, + 0xf104bd00, + 0xf1d900e7, + 0xf5134fe3, + 0xf8025621, +/* 0x0e19: test_init */ + 0x00e7f100, + 0x5621f508, +/* 0x0e23: idle_recv */ + 0xf800f802, +/* 0x0e25: idle */ + 0x0031f400, + 0x05d417f1, 0xcf0614b6, 0x10b60011, - 0xd807f101, + 0xd407f101, 0x0604b605, 0xbd0001d0, - 0x00e7f104, - 0x4fe3f1d9, - 0x5621f513, -/* 0x0dff: test_init */ - 0xf100f802, - 0xf50800e7, - 0xf8025621, -/* 0x0e09: idle_recv */ -/* 0x0e0b: idle */ - 0xf400f800, - 0x17f10031, - 0x14b605d4, - 0x0011cf06, - 0xf10110b6, - 0xb605d407, - 0x01d00604, -/* 0x0e27: idle_loop */ - 0xf004bd00, - 0x32f45817, -/* 0x0e2d: idle_proc */ -/* 0x0e2d: idle_proc_exec */ - 0xb910f902, - 0x21f5021e, - 0x10fc033f, - 0xf40911f4, - 0x0ef40231, -/* 0x0e41: idle_proc_next */ - 0x5810b6ef, - 0xf4061fb8, - 0x02f4e61b, - 0x0028f4dd, - 0x00bb0ef4, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, +/* 0x0e41: idle_loop */ + 0x5817f004, +/* 0x0e47: idle_proc */ +/* 0x0e47: idle_proc_exec */ + 0xf90232f4, + 0x021eb910, + 0x033f21f5, + 0x11f410fc, + 0x0231f409, +/* 0x0e5b: idle_proc_next */ + 0xb6ef0ef4, + 0x1fb85810, + 0xe61bf406, + 0xf4dd02f4, + 0x0ef40028, + 0x000000bb, 0x00000000, 0x00000000, 0x00000000, diff --git a/drm/nouveau/nvkm/subdev/pmu/fuc/os.h b/drm/nouveau/nvkm/subdev/pmu/fuc/os.h index 153d3e77..6d80342c 100644 --- a/drm/nouveau/nvkm/subdev/pmu/fuc/os.h +++ b/drm/nouveau/nvkm/subdev/pmu/fuc/os.h @@ -51,6 +51,7 @@ /* PERF: message identifiers */ #define PERF_MSG_GET_SLOTS 1 +#define PERF_MSG_SET_SLOT 2 #define PERF_MSG_DATA0_GET_SLOTS_SLOT0 0:7 #define PERF_MSG_DATA0_GET_SLOTS_SLOT1 8:15 @@ -61,4 +62,7 @@ #define PERF_MSG_DATA1_GET_SLOTS_SLOT6 16:23 #define PERF_MSG_DATA1_GET_SLOTS_SLOT7 24:31 +#define PERF_MSG_DATA0_SET_SLOT_SLOT 0:31 +#define PERF_MSG_DATA1_SET_SLOT_MASK 0:31 + #endif diff --git a/drm/nouveau/nvkm/subdev/pmu/fuc/perf.fuc b/drm/nouveau/nvkm/subdev/pmu/fuc/perf.fuc index 01fc51bd..8bdfcc67 100644 --- a/drm/nouveau/nvkm/subdev/pmu/fuc/perf.fuc +++ b/drm/nouveau/nvkm/subdev/pmu/fuc/perf.fuc @@ -64,6 +64,9 @@ perf_recv: imm32($r10, PERF_MSG_GET_SLOTS) cmp b32 $r13 $r10 bra e #perf_recv_get_slots + imm32($r10, PERF_MSG_SET_SLOT) + cmp b32 $r13 $r10 + bra e #perf_recv_set_slot bra #perf_recv_host perf_recv_get_slots: @@ -85,6 +88,12 @@ perf_recv_get_slots: #endif bra #perf_recv_host +perf_recv_set_slot: + mulu $r12 16 + add b32 $r12 0x504 + iowr I[$r12] $r11 + bra #perf_recv_exit + perf_recv_not_host: call(perf_counter_readout) ld(b32, $r14, #perf_polling_period_us) -- 2.13.0
v3: seperated change into own commit Signed-off-by: Karol Herbst <karolherbst at gmail.com> --- drm/nouveau/nvkm/subdev/pmu/gf100.c | 1 + drm/nouveau/nvkm/subdev/pmu/gf119.c | 1 + drm/nouveau/nvkm/subdev/pmu/gk104.c | 1 + drm/nouveau/nvkm/subdev/pmu/gk110.c | 1 + drm/nouveau/nvkm/subdev/pmu/gk208.c | 1 + drm/nouveau/nvkm/subdev/pmu/gm107.c | 1 + drm/nouveau/nvkm/subdev/pmu/gt215.c | 1 + drm/nouveau/nvkm/subdev/pmu/priv.h | 2 ++ 8 files changed, 9 insertions(+) diff --git a/drm/nouveau/nvkm/subdev/pmu/gf100.c b/drm/nouveau/nvkm/subdev/pmu/gf100.c index 0e36d4cb..14c3dd26 100644 --- a/drm/nouveau/nvkm/subdev/pmu/gf100.c +++ b/drm/nouveau/nvkm/subdev/pmu/gf100.c @@ -30,6 +30,7 @@ gf100_pmu = { .code.size = sizeof(gf100_pmu_code), .data.data = gf100_pmu_data, .data.size = sizeof(gf100_pmu_data), + .counter_slots = 8, .reset = gt215_pmu_reset, .init = gt215_pmu_init, .fini = gt215_pmu_fini, diff --git a/drm/nouveau/nvkm/subdev/pmu/gf119.c b/drm/nouveau/nvkm/subdev/pmu/gf119.c index 0e4ba424..9cf0279c 100644 --- a/drm/nouveau/nvkm/subdev/pmu/gf119.c +++ b/drm/nouveau/nvkm/subdev/pmu/gf119.c @@ -30,6 +30,7 @@ gf119_pmu = { .code.size = sizeof(gf119_pmu_code), .data.data = gf119_pmu_data, .data.size = sizeof(gf119_pmu_data), + .counter_slots = 8, .reset = gt215_pmu_reset, .init = gt215_pmu_init, .fini = gt215_pmu_fini, diff --git a/drm/nouveau/nvkm/subdev/pmu/gk104.c b/drm/nouveau/nvkm/subdev/pmu/gk104.c index 2ad858d8..cbf1d30d 100644 --- a/drm/nouveau/nvkm/subdev/pmu/gk104.c +++ b/drm/nouveau/nvkm/subdev/pmu/gk104.c @@ -109,6 +109,7 @@ gk104_pmu = { .code.size = sizeof(gk104_pmu_code), .data.data = gk104_pmu_data, .data.size = sizeof(gk104_pmu_data), + .counter_slots = 8, .reset = gt215_pmu_reset, .init = gt215_pmu_init, .fini = gt215_pmu_fini, diff --git a/drm/nouveau/nvkm/subdev/pmu/gk110.c b/drm/nouveau/nvkm/subdev/pmu/gk110.c index fc4b8ecf..f7ea4975 100644 --- a/drm/nouveau/nvkm/subdev/pmu/gk110.c +++ b/drm/nouveau/nvkm/subdev/pmu/gk110.c @@ -88,6 +88,7 @@ gk110_pmu = { .code.size = sizeof(gk110_pmu_code), .data.data = gk110_pmu_data, .data.size = sizeof(gk110_pmu_data), + .counter_slots = 8, .reset = gt215_pmu_reset, .init = gt215_pmu_init, .fini = gt215_pmu_fini, diff --git a/drm/nouveau/nvkm/subdev/pmu/gk208.c b/drm/nouveau/nvkm/subdev/pmu/gk208.c index e9a91277..252c3c1f 100644 --- a/drm/nouveau/nvkm/subdev/pmu/gk208.c +++ b/drm/nouveau/nvkm/subdev/pmu/gk208.c @@ -30,6 +30,7 @@ gk208_pmu = { .code.size = sizeof(gk208_pmu_code), .data.data = gk208_pmu_data, .data.size = sizeof(gk208_pmu_data), + .counter_slots = 8, .reset = gt215_pmu_reset, .init = gt215_pmu_init, .fini = gt215_pmu_fini, diff --git a/drm/nouveau/nvkm/subdev/pmu/gm107.c b/drm/nouveau/nvkm/subdev/pmu/gm107.c index 9a248ed7..b2917ec9 100644 --- a/drm/nouveau/nvkm/subdev/pmu/gm107.c +++ b/drm/nouveau/nvkm/subdev/pmu/gm107.c @@ -32,6 +32,7 @@ gm107_pmu = { .code.size = sizeof(gm107_pmu_code), .data.data = gm107_pmu_data, .data.size = sizeof(gm107_pmu_data), + .counter_slots = 8, .reset = gt215_pmu_reset, .init = gt215_pmu_init, .fini = gt215_pmu_fini, diff --git a/drm/nouveau/nvkm/subdev/pmu/gt215.c b/drm/nouveau/nvkm/subdev/pmu/gt215.c index 90d428b3..4bead2b7 100644 --- a/drm/nouveau/nvkm/subdev/pmu/gt215.c +++ b/drm/nouveau/nvkm/subdev/pmu/gt215.c @@ -241,6 +241,7 @@ gt215_pmu = { .code.size = sizeof(gt215_pmu_code), .data.data = gt215_pmu_data, .data.size = sizeof(gt215_pmu_data), + .counter_slots = 4, .reset = gt215_pmu_reset, .init = gt215_pmu_init, .fini = gt215_pmu_fini, diff --git a/drm/nouveau/nvkm/subdev/pmu/priv.h b/drm/nouveau/nvkm/subdev/pmu/priv.h index 096cba06..b66629bc 100644 --- a/drm/nouveau/nvkm/subdev/pmu/priv.h +++ b/drm/nouveau/nvkm/subdev/pmu/priv.h @@ -20,6 +20,8 @@ struct nvkm_pmu_func { u32 size; } data; + uint8_t counter_slots; + void (*reset)(struct nvkm_pmu *); int (*init)(struct nvkm_pmu *); void (*fini)(struct nvkm_pmu *); -- 2.13.0
Generally following Nvidia here, but being more focused on the load groups. Signed-off-by: Karol Herbst <karolherbst at gmail.com> --- drm/nouveau/include/nvkm/subdev/pmu.h | 9 ++++++++ drm/nouveau/nvkm/subdev/pmu/gt215.c | 43 +++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/drm/nouveau/include/nvkm/subdev/pmu.h b/drm/nouveau/include/nvkm/subdev/pmu.h index e7f04732..b29570eb 100644 --- a/drm/nouveau/include/nvkm/subdev/pmu.h +++ b/drm/nouveau/include/nvkm/subdev/pmu.h @@ -26,6 +26,15 @@ struct nvkm_pmu { } recv; }; +enum nvkm_pmu_counter_slot { + NVKM_PMU_COUNTER_SLOT_TOTAL = 0, + NVKM_PMU_COUNTER_SLOT_CORE = 1, + NVKM_PMU_COUNTER_SLOT_MEMORY = 2, + NVKM_PMU_COUNTER_SLOT_VIDEO = 3, + NVKM_PMU_COUNTER_SLOT_PCIE = 4, + NVKM_PMU_COUNTER_SLOT_LAST = 8, // we support up to 8 slots for now +}; + int nvkm_pmu_send(struct nvkm_pmu *, u32 reply[2], u32 process, u32 message, u32 data0, u32 data1); void nvkm_pmu_pgob(struct nvkm_pmu *, bool enable); diff --git a/drm/nouveau/nvkm/subdev/pmu/gt215.c b/drm/nouveau/nvkm/subdev/pmu/gt215.c index 4bead2b7..b7053cf7 100644 --- a/drm/nouveau/nvkm/subdev/pmu/gt215.c +++ b/drm/nouveau/nvkm/subdev/pmu/gt215.c @@ -26,6 +26,48 @@ #include <subdev/timer.h> +static void +gt215_setup_pmu_counters(struct nvkm_pmu *pmu) +{ + struct nvkm_device *device = pmu->subdev.device; + u32 core_mask = 0; + u32 video_mask = 0; + u32 memory_mask = 0; + + if (nvkm_device_engine(device, NVKM_ENGINE_GR)) + core_mask |= 0x00000001; + if (nvkm_device_engine(device, NVKM_ENGINE_CE0)) + core_mask |= 0x00080000; + if (nvkm_device_engine(device, NVKM_ENGINE_CE1)) + core_mask |= 0x00100000; + if (nvkm_device_engine(device, NVKM_ENGINE_CE2)) + core_mask |= 0x00200000; + + if (nvkm_device_engine(device, NVKM_ENGINE_MSVLD)) + video_mask |= 0x00000010; + if (nvkm_device_engine(device, NVKM_ENGINE_MSPDEC)) + video_mask |= 0x00000020; + if (nvkm_device_engine(device, NVKM_ENGINE_MSPPP)) + video_mask |= 0x00000040; + if (nvkm_device_engine(device, NVKM_ENGINE_NVENC0)) + video_mask |= 0x00020000; + + if (device->chipset < 0xc0) + memory_mask = 0x100; + else + memory_mask = 0x80; + + nvkm_pmu_send(pmu, NULL, PROC_PERF, PERF_MSG_SET_SLOT, + NVKM_PMU_COUNTER_SLOT_CORE, core_mask); + nvkm_pmu_send(pmu, NULL, PROC_PERF, PERF_MSG_SET_SLOT, + NVKM_PMU_COUNTER_SLOT_VIDEO, video_mask); + nvkm_pmu_send(pmu, NULL, PROC_PERF, PERF_MSG_SET_SLOT, + NVKM_PMU_COUNTER_SLOT_MEMORY, memory_mask); + if (pmu->func->counter_slots >= NVKM_PMU_COUNTER_SLOT_PCIE) + nvkm_pmu_send(pmu, NULL, PROC_PERF, PERF_MSG_SET_SLOT, + NVKM_PMU_COUNTER_SLOT_PCIE, 0x20000000); +} + int gt215_pmu_send(struct nvkm_pmu *pmu, u32 reply[2], u32 process, u32 message, u32 data0, u32 data1) @@ -232,6 +274,7 @@ gt215_pmu_init(struct nvkm_pmu *pmu) pmu->recv.size = nvkm_rd32(device, 0x10a4dc) >> 16; nvkm_wr32(device, 0x10a010, 0x000000e0); + gt215_setup_pmu_counters(pmu); return 0; } -- 2.13.0
Karol Herbst
2017-Jun-05 20:35 UTC
[Nouveau] [PATCH v3 7/7] nouveau/debugfs: add interface for current load
output of the file will be something like that: core, mem, vid, pci 0xfd, 0x15, 0x00, 0xa2 v2: relayout the debugfs file v3: rework the struct holding load values Signed-off-by: Karol Herbst <karolherbst at gmail.com> --- drm/nouveau/include/nvif/device.h | 1 + drm/nouveau/include/nvkm/subdev/pmu.h | 8 ++++++++ drm/nouveau/nouveau_debugfs.c | 27 +++++++++++++++++++++++++++ drm/nouveau/nvkm/subdev/pmu/base.c | 8 ++++++++ drm/nouveau/nvkm/subdev/pmu/gf100.c | 1 + drm/nouveau/nvkm/subdev/pmu/gf119.c | 1 + drm/nouveau/nvkm/subdev/pmu/gk104.c | 1 + drm/nouveau/nvkm/subdev/pmu/gk110.c | 1 + drm/nouveau/nvkm/subdev/pmu/gk208.c | 1 + drm/nouveau/nvkm/subdev/pmu/gm107.c | 1 + drm/nouveau/nvkm/subdev/pmu/gt215.c | 18 ++++++++++++++++++ drm/nouveau/nvkm/subdev/pmu/priv.h | 3 +++ 12 files changed, 71 insertions(+) diff --git a/drm/nouveau/include/nvif/device.h b/drm/nouveau/include/nvif/device.h index bcb98171..2b9f725f 100644 --- a/drm/nouveau/include/nvif/device.h +++ b/drm/nouveau/include/nvif/device.h @@ -65,6 +65,7 @@ u64 nvif_device_time(struct nvif_device *); #define nvxx_iccsense(a) nvxx_device(a)->iccsense #define nvxx_therm(a) nvxx_device(a)->therm #define nvxx_volt(a) nvxx_device(a)->volt +#define nvxx_pmu(a) nvxx_device(a)->pmu #include <core/device.h> #include <engine/fifo.h> diff --git a/drm/nouveau/include/nvkm/subdev/pmu.h b/drm/nouveau/include/nvkm/subdev/pmu.h index b29570eb..d450b805 100644 --- a/drm/nouveau/include/nvkm/subdev/pmu.h +++ b/drm/nouveau/include/nvkm/subdev/pmu.h @@ -35,6 +35,10 @@ enum nvkm_pmu_counter_slot { NVKM_PMU_COUNTER_SLOT_LAST = 8, // we support up to 8 slots for now }; +struct nvkm_pmu_counter_data { + u8 data[NVKM_PMU_COUNTER_SLOT_LAST]; +}; + int nvkm_pmu_send(struct nvkm_pmu *, u32 reply[2], u32 process, u32 message, u32 data0, u32 data1); void nvkm_pmu_pgob(struct nvkm_pmu *, bool enable); @@ -63,4 +67,8 @@ void nvkm_memx_train(struct nvkm_memx *); int nvkm_memx_train_result(struct nvkm_pmu *, u32 *, int); void nvkm_memx_block(struct nvkm_memx *); void nvkm_memx_unblock(struct nvkm_memx *); + +/* interface to PERF process running on PMU */ +int nvkm_pmu_get_perf_data(struct nvkm_pmu *pmu, + struct nvkm_pmu_counter_data *data); #endif diff --git a/drm/nouveau/nouveau_debugfs.c b/drm/nouveau/nouveau_debugfs.c index fd64dfdc..24200abb 100644 --- a/drm/nouveau/nouveau_debugfs.c +++ b/drm/nouveau/nouveau_debugfs.c @@ -31,6 +31,8 @@ #include <linux/debugfs.h> #include <nvif/class.h> #include <nvif/if0001.h> +#include <nvkm/subdev/pmu.h> + #include "nouveau_debugfs.h" #include "nouveau_drv.h" @@ -180,8 +182,33 @@ static const struct file_operations nouveau_pstate_fops = { .write = nouveau_debugfs_pstate_set, }; +static int +nouveau_debugfs_current_load(struct seq_file *m, void *data) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct nouveau_drm *drm = nouveau_drm(node->minor->dev); + struct nvkm_pmu *pmu = nvxx_pmu(&drm->client.device); + struct nvkm_pmu_counter_data counter_data; + + if (!pm_runtime_suspended(drm->dev->dev)) { + int ret = nvkm_pmu_get_perf_data(pmu, &counter_data); + + if (ret < 0) + return ret; + } + + seq_puts(m, "core, mem, vid, pci\n"); + seq_printf(m, "0x%2.2x, 0x%2.2x, 0x%2.2x, 0x%2.2x\n", + counter_data.data[NVKM_PMU_COUNTER_SLOT_CORE], + counter_data.data[NVKM_PMU_COUNTER_SLOT_MEMORY], + counter_data.data[NVKM_PMU_COUNTER_SLOT_VIDEO], + counter_data.data[NVKM_PMU_COUNTER_SLOT_PCIE]); + return 0; +} + static struct drm_info_list nouveau_debugfs_list[] = { { "vbios.rom", nouveau_debugfs_vbios_image, 0, NULL }, + { "current_load", nouveau_debugfs_current_load, 0, NULL }, }; #define NOUVEAU_DEBUGFS_ENTRIES ARRAY_SIZE(nouveau_debugfs_list) diff --git a/drm/nouveau/nvkm/subdev/pmu/base.c b/drm/nouveau/nvkm/subdev/pmu/base.c index 3306f9fe..ed525f30 100644 --- a/drm/nouveau/nvkm/subdev/pmu/base.c +++ b/drm/nouveau/nvkm/subdev/pmu/base.c @@ -49,6 +49,14 @@ nvkm_pmu_send(struct nvkm_pmu *pmu, u32 reply[2], return pmu->func->send(pmu, reply, process, message, data0, data1); } +int +nvkm_pmu_get_perf_data(struct nvkm_pmu *pmu, struct nvkm_pmu_counter_data *data) +{ + if (!pmu || !pmu->func->get_perf_data) + return -ENODEV; + return pmu->func->get_perf_data(pmu, data); +} + static void nvkm_pmu_intr(struct nvkm_subdev *subdev) { diff --git a/drm/nouveau/nvkm/subdev/pmu/gf100.c b/drm/nouveau/nvkm/subdev/pmu/gf100.c index 14c3dd26..1c4986cb 100644 --- a/drm/nouveau/nvkm/subdev/pmu/gf100.c +++ b/drm/nouveau/nvkm/subdev/pmu/gf100.c @@ -37,6 +37,7 @@ gf100_pmu = { .intr = gt215_pmu_intr, .send = gt215_pmu_send, .recv = gt215_pmu_recv, + .get_perf_data = gt215_pmu_get_perf_data, }; int diff --git a/drm/nouveau/nvkm/subdev/pmu/gf119.c b/drm/nouveau/nvkm/subdev/pmu/gf119.c index 9cf0279c..49d8fb22 100644 --- a/drm/nouveau/nvkm/subdev/pmu/gf119.c +++ b/drm/nouveau/nvkm/subdev/pmu/gf119.c @@ -37,6 +37,7 @@ gf119_pmu = { .intr = gt215_pmu_intr, .send = gt215_pmu_send, .recv = gt215_pmu_recv, + .get_perf_data = gt215_pmu_get_perf_data, }; int diff --git a/drm/nouveau/nvkm/subdev/pmu/gk104.c b/drm/nouveau/nvkm/subdev/pmu/gk104.c index cbf1d30d..7ae36a78 100644 --- a/drm/nouveau/nvkm/subdev/pmu/gk104.c +++ b/drm/nouveau/nvkm/subdev/pmu/gk104.c @@ -117,6 +117,7 @@ gk104_pmu = { .send = gt215_pmu_send, .recv = gt215_pmu_recv, .pgob = gk104_pmu_pgob, + .get_perf_data = gt215_pmu_get_perf_data, }; int diff --git a/drm/nouveau/nvkm/subdev/pmu/gk110.c b/drm/nouveau/nvkm/subdev/pmu/gk110.c index f7ea4975..84001c27 100644 --- a/drm/nouveau/nvkm/subdev/pmu/gk110.c +++ b/drm/nouveau/nvkm/subdev/pmu/gk110.c @@ -96,6 +96,7 @@ gk110_pmu = { .send = gt215_pmu_send, .recv = gt215_pmu_recv, .pgob = gk110_pmu_pgob, + .get_perf_data = gt215_pmu_get_perf_data, }; int diff --git a/drm/nouveau/nvkm/subdev/pmu/gk208.c b/drm/nouveau/nvkm/subdev/pmu/gk208.c index 252c3c1f..f2d743e6 100644 --- a/drm/nouveau/nvkm/subdev/pmu/gk208.c +++ b/drm/nouveau/nvkm/subdev/pmu/gk208.c @@ -38,6 +38,7 @@ gk208_pmu = { .send = gt215_pmu_send, .recv = gt215_pmu_recv, .pgob = gk110_pmu_pgob, + .get_perf_data = gt215_pmu_get_perf_data, }; int diff --git a/drm/nouveau/nvkm/subdev/pmu/gm107.c b/drm/nouveau/nvkm/subdev/pmu/gm107.c index b2917ec9..f0a964ff 100644 --- a/drm/nouveau/nvkm/subdev/pmu/gm107.c +++ b/drm/nouveau/nvkm/subdev/pmu/gm107.c @@ -39,6 +39,7 @@ gm107_pmu = { .intr = gt215_pmu_intr, .send = gt215_pmu_send, .recv = gt215_pmu_recv, + .get_perf_data = gt215_pmu_get_perf_data, }; int diff --git a/drm/nouveau/nvkm/subdev/pmu/gt215.c b/drm/nouveau/nvkm/subdev/pmu/gt215.c index b7053cf7..6550e5e7 100644 --- a/drm/nouveau/nvkm/subdev/pmu/gt215.c +++ b/drm/nouveau/nvkm/subdev/pmu/gt215.c @@ -69,6 +69,23 @@ gt215_setup_pmu_counters(struct nvkm_pmu *pmu) } int +gt215_pmu_get_perf_data(struct nvkm_pmu *pmu, + struct nvkm_pmu_counter_data *data) +{ + int ret; + union { + u32 *raw; + u8 *slots; + } d; + + d.slots = data->data; + ret = nvkm_pmu_send(pmu, d.raw, PROC_PERF, PERF_MSG_GET_SLOTS, 0, 0); + if (ret < 0) + return ret; + return 0; +} + +int gt215_pmu_send(struct nvkm_pmu *pmu, u32 reply[2], u32 process, u32 message, u32 data0, u32 data1) { @@ -291,6 +308,7 @@ gt215_pmu = { .intr = gt215_pmu_intr, .send = gt215_pmu_send, .recv = gt215_pmu_recv, + .get_perf_data = gt215_pmu_get_perf_data, }; int diff --git a/drm/nouveau/nvkm/subdev/pmu/priv.h b/drm/nouveau/nvkm/subdev/pmu/priv.h index b66629bc..7bc15478 100644 --- a/drm/nouveau/nvkm/subdev/pmu/priv.h +++ b/drm/nouveau/nvkm/subdev/pmu/priv.h @@ -30,6 +30,7 @@ struct nvkm_pmu_func { u32 message, u32 data0, u32 data1); void (*recv)(struct nvkm_pmu *); void (*pgob)(struct nvkm_pmu *, bool); + int (*get_perf_data)(struct nvkm_pmu *, struct nvkm_pmu_counter_data *); }; void gt215_pmu_reset(struct nvkm_pmu *); @@ -38,6 +39,8 @@ void gt215_pmu_fini(struct nvkm_pmu *); void gt215_pmu_intr(struct nvkm_pmu *); void gt215_pmu_recv(struct nvkm_pmu *); int gt215_pmu_send(struct nvkm_pmu *, u32[2], u32, u32, u32, u32); +int gt215_pmu_get_perf_data(struct nvkm_pmu *pmu, + struct nvkm_pmu_counter_data *data); void gk110_pmu_pgob(struct nvkm_pmu *, bool); #endif -- 2.13.0