From: Karol Herbst <kher...@redhat.com>

[ Upstream commit fe9748b7b41cee11f8db57fb8b20bc540a33102a ]

Fixes failure to compile with recent envyas as a result of the 'movw'
alias being removed for v5.

A bit of history:

v3 only has a 16-bit sign-extended immediate mov op. In order to set
the high bits, there's a separate 'sethi' op. envyas validates that
the value passed to mov(imm) is between -0x8000 and 0x7fff. In order
to simplify macros that load both the low and high word, a 'movw'
alias was added which takes an unsigned 16-bit immediate. However the
actual hardware op still sign extends.

v5 has a full 32-bit immediate mov op. The v3 16-bit immediate mov op
is gone (loads 0 into the dst reg). However due to a bug in envyas,
the movw alias still existed, and selected the no-longer-present v3
16-bit immediate mov op. As a result usage of movw on v5 is the same
as mov with a 0x0 argument.

The proper fix throughout is to only ever use the 'movw' alias in
combination with 'sethi'. Anything else should get the sign-extended
validation to ensure that the intended value ends up in the
destination register.

Changes in fuc3 binaries is the result of a different encoding being
selected for a mov with an 8-bit value.

v2: added commit message written by Ilia, thanks for that!
v3: messed up rebasing, now it should apply

Signed-off-by: Karol Herbst <kher...@redhat.com>
Signed-off-by: Ben Skeggs <bske...@redhat.com>
Signed-off-by: Sasha Levin <alexander.le...@microsoft.com>
---
 .../drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h   |  746 +++++++--------
 .../drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h   |  802 ++++++++--------
 .../drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h   | 1006 ++++++++++----------
 .../gpu/drm/nouveau/nvkm/subdev/pmu/fuc/memx.fuc   |   30 +-
 4 files changed, 1292 insertions(+), 1292 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h 
b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h
index e2faccffee6f..d66e0e76faf4 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h
@@ -46,8 +46,8 @@ uint32_t gf100_pmu_data[] = {
        0x00000000,
        0x00000000,
        0x584d454d,
-       0x00000756,
-       0x00000748,
+       0x00000754,
+       0x00000746,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -68,8 +68,8 @@ uint32_t gf100_pmu_data[] = {
        0x00000000,
        0x00000000,
        0x46524550,
-       0x0000075a,
        0x00000758,
+       0x00000756,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -90,8 +90,8 @@ uint32_t gf100_pmu_data[] = {
        0x00000000,
        0x00000000,
        0x5f433249,
-       0x00000b8a,
-       0x00000a2d,
+       0x00000b88,
+       0x00000a2b,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -112,8 +112,8 @@ uint32_t gf100_pmu_data[] = {
        0x00000000,
        0x00000000,
        0x54534554,
-       0x00000bb3,
-       0x00000b8c,
+       0x00000bb1,
+       0x00000b8a,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -134,8 +134,8 @@ uint32_t gf100_pmu_data[] = {
        0x00000000,
        0x00000000,
        0x454c4449,
-       0x00000bbf,
        0x00000bbd,
+       0x00000bbb,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -236,19 +236,19 @@ uint32_t gf100_pmu_data[] = {
        0x000005d3,
        0x00000003,
        0x00000002,
-       0x0000069d,
+       0x0000069b,
        0x00040004,
        0x00000000,
-       0x000006b9,
+       0x000006b7,
        0x00010005,
        0x00000000,
-       0x000006d6,
+       0x000006d4,
        0x00010006,
        0x00000000,
        0x0000065b,
        0x00000007,
        0x00000000,
-       0x000006e1,
+       0x000006df,
 /* 0x03c4: memx_func_tail */
 /* 0x03c4: memx_ts_start */
        0x00000000,
@@ -1372,432 +1372,432 @@ uint32_t gf100_pmu_code[] = {
 /* 0x065b: memx_func_wait_vblank */
        0x9800f840,
        0x66b00016,
-       0x130bf400,
+       0x120bf400,
        0xf40166b0,
        0x0ef4060b,
 /* 0x066d: memx_func_wait_vblank_head1 */
-       0x2077f12e,
-       0x070ef400,
-/* 0x0674: memx_func_wait_vblank_head0 */
-       0x000877f1,
-/* 0x0678: memx_func_wait_vblank_0 */
-       0x07c467f1,
-       0xcf0664b6,
-       0x67fd0066,
-       0xf31bf404,
-/* 0x0688: memx_func_wait_vblank_1 */
-       0x07c467f1,
-       0xcf0664b6,
-       0x67fd0066,
-       0xf30bf404,
-/* 0x0698: memx_func_wait_vblank_fini */
-       0xf80410b6,
-/* 0x069d: memx_func_wr32 */
-       0x00169800,
-       0xb6011598,
-       0x60f90810,
-       0xd0fc50f9,
-       0x21f4e0fc,
-       0x0242b640,
-       0xf8e91bf4,
-/* 0x06b9: memx_func_wait */
-       0x2c87f000,
-       0xcf0684b6,
-       0x1e980088,
-       0x011d9800,
-       0x98021c98,
-       0x10b6031b,
-       0xa321f410,
-/* 0x06d6: memx_func_delay */
-       0x1e9800f8,
-       0x0410b600,
-       0xf87e21f4,
-/* 0x06e1: memx_func_train */
-/* 0x06e3: memx_exec */
-       0xf900f800,
-       0xb9d0f9e0,
-       0xb2b902c1,
-/* 0x06ed: memx_exec_next */
-       0x00139802,
-       0xe70410b6,
-       0xe701f034,
-       0xb601e033,
-       0x30f00132,
-       0xde35980c,
-       0x12b855f9,
-       0xe41ef406,
-       0x98f10b98,
-       0xcbbbf20c,
-       0xc4b7f102,
-       0x06b4b607,
-       0xfc00bbcf,
-       0xf5e0fcd0,
-       0xf8033621,
-/* 0x0729: memx_info */
-       0x01c67000,
-/* 0x072f: memx_info_data */
-       0xf10e0bf4,
-       0xf103ccc7,
-       0xf40800b7,
-/* 0x073a: memx_info_train */
-       0xc7f10b0e,
-       0xb7f10bcc,
-/* 0x0742: memx_info_send */
-       0x21f50100,
-       0x00f80336,
-/* 0x0748: memx_recv */
-       0xf401d6b0,
-       0xd6b0980b,
-       0xd80bf400,
-/* 0x0756: memx_init */
-       0x00f800f8,
-/* 0x0758: perf_recv */
-/* 0x075a: perf_init */
+       0x2077f02c,
+/* 0x0673: memx_func_wait_vblank_head0 */
+       0xf0060ef4,
+/* 0x0676: memx_func_wait_vblank_0 */
+       0x67f10877,
+       0x64b607c4,
+       0x0066cf06,
+       0xf40467fd,
+/* 0x0686: memx_func_wait_vblank_1 */
+       0x67f1f31b,
+       0x64b607c4,
+       0x0066cf06,
+       0xf40467fd,
+/* 0x0696: memx_func_wait_vblank_fini */
+       0x10b6f30b,
+/* 0x069b: memx_func_wr32 */
+       0x9800f804,
+       0x15980016,
+       0x0810b601,
+       0x50f960f9,
+       0xe0fcd0fc,
+       0xb64021f4,
+       0x1bf40242,
+/* 0x06b7: memx_func_wait */
+       0xf000f8e9,
+       0x84b62c87,
+       0x0088cf06,
+       0x98001e98,
+       0x1c98011d,
+       0x031b9802,
+       0xf41010b6,
+       0x00f8a321,
+/* 0x06d4: memx_func_delay */
+       0xb6001e98,
+       0x21f40410,
+/* 0x06df: memx_func_train */
+       0xf800f87e,
+/* 0x06e1: memx_exec */
+       0xf9e0f900,
+       0x02c1b9d0,
+/* 0x06eb: memx_exec_next */
+       0x9802b2b9,
+       0x10b60013,
+       0xf034e704,
+       0xe033e701,
+       0x0132b601,
+       0x980c30f0,
+       0x55f9de35,
+       0xf40612b8,
+       0x0b98e41e,
+       0xf20c98f1,
+       0xf102cbbb,
+       0xb607c4b7,
+       0xbbcf06b4,
+       0xfcd0fc00,
+       0x3621f5e0,
+/* 0x0727: memx_info */
+       0x7000f803,
+       0x0bf401c6,
+/* 0x072d: memx_info_data */
+       0xccc7f10e,
+       0x00b7f103,
+       0x0b0ef408,
+/* 0x0738: memx_info_train */
+       0x0bccc7f1,
+       0x0100b7f1,
+/* 0x0740: memx_info_send */
+       0x033621f5,
+/* 0x0746: memx_recv */
+       0xd6b000f8,
+       0x980bf401,
+       0xf400d6b0,
+       0x00f8d80b,
+/* 0x0754: memx_init */
+/* 0x0756: perf_recv */
        0x00f800f8,
-/* 0x075c: i2c_drive_scl */
-       0xf40036b0,
-       0x07f1110b,
-       0x04b607e0,
-       0x0001d006,
-       0x00f804bd,
-/* 0x0770: i2c_drive_scl_lo */
-       0x07e407f1,
-       0xd00604b6,
-       0x04bd0001,
-/* 0x077e: i2c_drive_sda */
+/* 0x0758: perf_init */
+/* 0x075a: i2c_drive_scl */
        0x36b000f8,
        0x110bf400,
        0x07e007f1,
        0xd00604b6,
-       0x04bd0002,
-/* 0x0792: i2c_drive_sda_lo */
+       0x04bd0001,
+/* 0x076e: i2c_drive_scl_lo */
        0x07f100f8,
        0x04b607e4,
+       0x0001d006,
+       0x00f804bd,
+/* 0x077c: i2c_drive_sda */
+       0xf40036b0,
+       0x07f1110b,
+       0x04b607e0,
        0x0002d006,
        0x00f804bd,
-/* 0x07a0: i2c_sense_scl */
-       0xf10132f4,
-       0xb607c437,
-       0x33cf0634,
-       0x0431fd00,
-       0xf4060bf4,
-/* 0x07b6: i2c_sense_scl_done */
-       0x00f80131,
-/* 0x07b8: i2c_sense_sda */
-       0xf10132f4,
-       0xb607c437,
-       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,
+/* 0x0790: i2c_drive_sda_lo */
+       0x07e407f1,
+       0xd00604b6,
+       0x04bd0002,
+/* 0x079e: i2c_sense_scl */
+       0x32f400f8,
+       0xc437f101,
+       0x0634b607,
+       0xfd0033cf,
+       0x0bf40431,
+       0x0131f406,
+/* 0x07b4: i2c_sense_scl_done */
+/* 0x07b6: i2c_sense_sda */
+       0x32f400f8,
+       0xc437f101,
+       0x0634b607,
+       0xfd0033cf,
+       0x0bf40432,
+       0x0131f406,
+/* 0x07cc: i2c_sense_sda_done */
+/* 0x07ce: i2c_raise_scl */
+       0x40f900f8,
+       0x089847f1,
+       0xf50137f0,
+/* 0x07db: i2c_raise_scl_wait */
+       0xf1075a21,
+       0xf403e8e7,
+       0x21f57e21,
+       0x01f4079e,
+       0x0142b609,
+/* 0x07ef: i2c_raise_scl_done */
+       0xfcef1bf4,
+/* 0x07f3: i2c_start */
+       0xf500f840,
+       0xf4079e21,
+       0x21f50d11,
+       0x11f407b6,
+       0x300ef406,
+/* 0x0804: i2c_start_rep */
+       0xf50037f0,
+       0xf0075a21,
+       0x21f50137,
+       0x76bb077c,
+       0x0465b600,
+       0x659450f9,
+       0x0256bb04,
+       0x75fd50bd,
+       0xf550fc04,
+       0xb607ce21,
+       0x11f40464,
+/* 0x0831: i2c_start_send */
+       0x0037f01f,
+       0x077c21f5,
+       0x1388e7f1,
+       0xf07e21f4,
        0x21f50037,
-       0xe7f1077e,
+       0xe7f1075a,
        0x21f41388,
-       0x0037f07e,
-       0x075c21f5,
-       0x1388e7f1,
-/* 0x084f: i2c_start_out */
-       0xf87e21f4,
-/* 0x0851: i2c_stop */
-       0x0037f000,
-       0x075c21f5,
-       0xf50037f0,
-       0xf1077e21,
-       0xf403e8e7,
-       0x37f07e21,
-       0x5c21f501,
-       0x88e7f107,
-       0x7e21f413,
+/* 0x084d: i2c_start_out */
+/* 0x084f: i2c_stop */
+       0xf000f87e,
+       0x21f50037,
+       0x37f0075a,
+       0x7c21f500,
+       0xe8e7f107,
+       0x7e21f403,
        0xf50137f0,
-       0xf1077e21,
+       0xf1075a21,
        0xf41388e7,
-       0x00f87e21,
-/* 0x0884: i2c_bitw */
-       0x077e21f5,
-       0x03e8e7f1,
-       0xbb7e21f4,
-       0x65b60076,
-       0x9450f904,
-       0x56bb0465,
-       0xfd50bd02,
-       0x50fc0475,
-       0x07d021f5,
-       0xf40464b6,
-       0xe7f11811,
-       0x21f41388,
-       0x0037f07e,
-       0x075c21f5,
-       0x1388e7f1,
-/* 0x08c3: i2c_bitw_out */
-       0xf87e21f4,
-/* 0x08c5: i2c_bitr */
-       0x0137f000,
-       0x077e21f5,
-       0x03e8e7f1,
-       0xbb7e21f4,
-       0x65b60076,
-       0x9450f904,
-       0x56bb0465,
-       0xfd50bd02,
-       0x50fc0475,
-       0x07d021f5,
-       0xf40464b6,
-       0x21f51b11,
-       0x37f007b8,
-       0x5c21f500,
+       0x37f07e21,
+       0x7c21f501,
        0x88e7f107,
        0x7e21f413,
-       0xf4013cf0,
-/* 0x090a: i2c_bitr_done */
-       0x00f80131,
-/* 0x090c: i2c_get_byte */
-       0xf00057f0,
-/* 0x0912: i2c_get_byte_next */
-       0x54b60847,
-       0x0076bb01,
+/* 0x0882: i2c_bitw */
+       0x21f500f8,
+       0xe7f1077c,
+       0x21f403e8,
+       0x0076bb7e,
        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,
+       0x64b607ce,
+       0x1811f404,
+       0x1388e7f1,
+       0xf07e21f4,
+       0x21f50037,
+       0xe7f1075a,
+       0x21f41388,
+/* 0x08c1: i2c_bitw_out */
+/* 0x08c3: i2c_bitr */
+       0xf000f87e,
+       0x21f50137,
+       0xe7f1077c,
+       0x21f403e8,
+       0x0076bb7e,
+       0xf90465b6,
+       0x04659450,
+       0xbd0256bb,
+       0x0475fd50,
+       0x21f550fc,
+       0x64b607ce,
+       0x1b11f404,
+       0x07b621f5,
+       0xf50037f0,
+       0xf1075a21,
+       0xf41388e7,
+       0x3cf07e21,
+       0x0131f401,
+/* 0x0908: i2c_bitr_done */
+/* 0x090a: i2c_get_byte */
+       0x57f000f8,
+       0x0847f000,
+/* 0x0910: i2c_get_byte_next */
+       0xbb0154b6,
        0x65b60076,
        0x9450f904,
        0x56bb0465,
        0xfd50bd02,
        0x50fc0475,
-       0x088421f5,
+       0x08c321f5,
        0xf40464b6,
-       0x46b03411,
-       0xd81bf400,
-       0xb60076bb,
-       0x50f90465,
-       0xbb046594,
-       0x50bd0256,
-       0xfc0475fd,
-       0xc521f550,
-       0x0464b608,
-       0xbb0f11f4,
-       0x36b00076,
-       0x061bf401,
-/* 0x09b7: i2c_put_byte_done */
-       0xf80132f4,
-/* 0x09b9: i2c_addr */
-       0x0076bb00,
+       0x53fd2b11,
+       0x0142b605,
+       0xf0d81bf4,
+       0x76bb0137,
+       0x0465b600,
+       0x659450f9,
+       0x0256bb04,
+       0x75fd50bd,
+       0xf550fc04,
+       0xb6088221,
+/* 0x095a: i2c_get_byte_done */
+       0x00f80464,
+/* 0x095c: i2c_put_byte */
+/* 0x095f: i2c_put_byte_next */
+       0xb60847f0,
+       0x54ff0142,
+       0x0076bb38,
        0xf90465b6,
        0x04659450,
        0xbd0256bb,
        0x0475fd50,
        0x21f550fc,
-       0x64b607f5,
-       0x2911f404,
-       0x012ec3e7,
-       0xfd0134b6,
-       0x76bb0553,
+       0x64b60882,
+       0x3411f404,
+       0xf40046b0,
+       0x76bbd81b,
        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,
+       0xb608c321,
+       0x11f40464,
+       0x0076bb0f,
+       0xf40136b0,
+       0x32f4061b,
+/* 0x09b5: i2c_put_byte_done */
+/* 0x09b7: i2c_addr */
+       0xbb00f801,
        0x65b60076,
        0x9450f904,
        0x56bb0465,
        0xfd50bd02,
        0x50fc0475,
-       0x0a0f21f5,
-       0xfc0464b6,
-       0x00d6b0d0,
-       0x00b31bf5,
-       0xbb0057f0,
-       0x65b60076,
-       0x9450f904,
-       0x56bb0465,
-       0xfd50bd02,
-       0x50fc0475,
-       0x09b921f5,
-       0xf50464b6,
-       0xc700d011,
-       0x76bbe0c5,
-       0x0465b600,
-       0x659450f9,
-       0x0256bb04,
-       0x75fd50bd,
-       0xf550fc04,
-       0xb6095e21,
-       0x11f50464,
-       0x57f000ad,
+       0x07f321f5,
+       0xf40464b6,
+       0xc3e72911,
+       0x34b6012e,
+       0x0553fd01,
+       0xb60076bb,
+       0x50f90465,
+       0xbb046594,
+       0x50bd0256,
+       0xfc0475fd,
+       0x5c21f550,
+       0x0464b609,
+/* 0x09fc: i2c_addr_done */
+/* 0x09fe: i2c_acquire_addr */
+       0xcec700f8,
+       0x02e4b6f8,
+       0x0d1ce0b7,
+       0xf800ee98,
+/* 0x0a0d: i2c_acquire */
+       0xfe21f500,
+       0x0421f409,
+       0xf403d9f0,
+       0x00f84021,
+/* 0x0a1c: i2c_release */
+       0x09fe21f5,
+       0xf00421f4,
+       0x21f403da,
+/* 0x0a2b: i2c_recv */
+       0xf400f840,
+       0xc1c70132,
+       0x0214b6f8,
+       0xf52816b0,
+       0xa0013a1f,
+       0x980cf413,
+       0x13a00032,
+       0x31980ccc,
+       0x0231f400,
+       0xe0f9d0f9,
+       0x67f1d0f9,
+       0x63f10000,
+       0x67921000,
        0x0076bb01,
        0xf90465b6,
        0x04659450,
        0xbd0256bb,
        0x0475fd50,
        0x21f550fc,
-       0x64b609b9,
-       0x8a11f504,
+       0x64b60a0d,
+       0xb0d0fc04,
+       0x1bf500d6,
+       0x57f000b3,
        0x0076bb00,
        0xf90465b6,
        0x04659450,
        0xbd0256bb,
        0x0475fd50,
        0x21f550fc,
-       0x64b6090c,
-       0x6a11f404,
-       0xbbe05bcb,
+       0x64b609b7,
+       0xd011f504,
+       0xe0c5c700,
+       0xb60076bb,
+       0x50f90465,
+       0xbb046594,
+       0x50bd0256,
+       0xfc0475fd,
+       0x5c21f550,
+       0x0464b609,
+       0x00ad11f5,
+       0xbb0157f0,
        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 */
-       0x00f800f8,
-/* 0x0b8c: test_recv */
-       0x05d817f1,
+       0x09b721f5,
+       0xf50464b6,
+       0xbb008a11,
+       0x65b60076,
+       0x9450f904,
+       0x56bb0465,
+       0xfd50bd02,
+       0x50fc0475,
+       0x090a21f5,
+       0xf40464b6,
+       0x5bcb6a11,
+       0x0076bbe0,
+       0xf90465b6,
+       0x04659450,
+       0xbd0256bb,
+       0x0475fd50,
+       0x21f550fc,
+       0x64b6084f,
+       0x025bb904,
+       0x0ef474bd,
+/* 0x0b31: i2c_recv_not_rd08 */
+       0x01d6b043,
+       0xf03d1bf4,
+       0x21f50057,
+       0x11f409b7,
+       0xe0c5c733,
+       0x095c21f5,
+       0xf02911f4,
+       0x21f50057,
+       0x11f409b7,
+       0xe0b5c71f,
+       0x095c21f5,
+       0xf51511f4,
+       0xbd084f21,
+       0x08c5c774,
+       0xf4091bf4,
+       0x0ef40232,
+/* 0x0b71: i2c_recv_not_wr08 */
+/* 0x0b71: i2c_recv_done */
+       0xf8cec703,
+       0x0a1c21f5,
+       0xd0fce0fc,
+       0xb90a12f4,
+       0x21f5027c,
+/* 0x0b86: i2c_recv_exit */
+       0x00f80336,
+/* 0x0b88: i2c_init */
+/* 0x0b8a: test_recv */
+       0x17f100f8,
+       0x14b605d8,
+       0x0011cf06,
+       0xf10110b6,
+       0xb605d807,
+       0x01d00604,
+       0xf104bd00,
+       0xf1d900e7,
+       0xf5134fe3,
+       0xf8025621,
+/* 0x0bb1: test_init */
+       0x00e7f100,
+       0x5621f508,
+/* 0x0bbb: idle_recv */
+       0xf800f802,
+/* 0x0bbd: idle */
+       0x0031f400,
+       0x05d417f1,
        0xcf0614b6,
        0x10b60011,
-       0xd807f101,
+       0xd407f101,
        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,
+/* 0x0bd9: idle_loop */
+       0x5817f004,
+/* 0x0bdf: idle_proc */
+/* 0x0bdf: idle_proc_exec */
+       0xf90232f4,
+       0x021eb910,
+       0x033f21f5,
+       0x11f410fc,
+       0x0231f409,
+/* 0x0bf3: idle_proc_next */
+       0xb6ef0ef4,
+       0x1fb85810,
+       0xe61bf406,
+       0xf4dd02f4,
+       0x0ef40028,
+       0x000000bb,
        0x00000000,
        0x00000000,
        0x00000000,
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h 
b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h
index 3c731ff12871..958222415a34 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h
@@ -46,8 +46,8 @@ uint32_t gk208_pmu_data[] = {
        0x00000000,
        0x00000000,
        0x584d454d,
-       0x000005f3,
-       0x000005e5,
+       0x000005ee,
+       0x000005e0,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -68,8 +68,8 @@ uint32_t gk208_pmu_data[] = {
        0x00000000,
        0x00000000,
        0x46524550,
-       0x000005f7,
-       0x000005f5,
+       0x000005f2,
+       0x000005f0,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -90,8 +90,8 @@ uint32_t gk208_pmu_data[] = {
        0x00000000,
        0x00000000,
        0x5f433249,
-       0x000009f8,
-       0x000008a2,
+       0x000009f3,
+       0x0000089d,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -112,8 +112,8 @@ uint32_t gk208_pmu_data[] = {
        0x00000000,
        0x00000000,
        0x54534554,
-       0x00000a16,
-       0x000009fa,
+       0x00000a11,
+       0x000009f5,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -134,8 +134,8 @@ uint32_t gk208_pmu_data[] = {
        0x00000000,
        0x00000000,
        0x454c4449,
-       0x00000a21,
-       0x00000a1f,
+       0x00000a1c,
+       0x00000a1a,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -233,22 +233,22 @@ uint32_t gk208_pmu_data[] = {
 /* 0x037c: memx_func_next */
        0x00000002,
        0x00000000,
-       0x000004cf,
+       0x000004cc,
        0x00000003,
        0x00000002,
-       0x00000546,
+       0x00000541,
        0x00040004,
        0x00000000,
-       0x00000563,
+       0x0000055e,
        0x00010005,
        0x00000000,
-       0x0000057d,
+       0x00000578,
        0x00010006,
        0x00000000,
-       0x00000541,
+       0x0000053c,
        0x00000007,
        0x00000000,
-       0x00000589,
+       0x00000584,
 /* 0x03c4: memx_func_tail */
 /* 0x03c4: memx_ts_start */
        0x00000000,
@@ -1238,454 +1238,454 @@ uint32_t gk208_pmu_code[] = {
        0x0001f604,
        0x00f804bd,
 /* 0x045c: memx_func_enter */
-       0x162067f1,
-       0xf55d77f1,
-       0x047e6eb2,
-       0xd8b20000,
-       0xf90487fd,
-       0xfc80f960,
-       0x7ee0fcd0,
-       0x0700002d,
-       0x7e6eb2fe,
+       0x47162046,
+       0x6eb2f55d,
+       0x0000047e,
+       0x87fdd8b2,
+       0xf960f904,
+       0xfcd0fc80,
+       0x002d7ee0,
+       0xb2fe0700,
+       0x00047e6e,
+       0xfdd8b200,
+       0x60f90487,
+       0xd0fc80f9,
+       0x2d7ee0fc,
+       0xf0460000,
+       0x7e6eb226,
        0xb2000004,
        0x0487fdd8,
        0x80f960f9,
        0xe0fcd0fc,
        0x00002d7e,
-       0x26f067f1,
-       0x047e6eb2,
-       0xd8b20000,
-       0xf90487fd,
-       0xfc80f960,
-       0x7ee0fcd0,
-       0x0600002d,
-       0x07e04004,
-       0xbd0006f6,
-/* 0x04b9: memx_func_enter_wait */
-       0x07c04604,
-       0xf00066cf,
-       0x0bf40464,
-       0xcf2c06f7,
-       0x06b50066,
-/* 0x04cf: memx_func_leave */
-       0x0600f8f1,
-       0x0066cf2c,
-       0x06f206b5,
-       0x07e44004,
-       0xbd0006f6,
-/* 0x04e1: memx_func_leave_wait */
-       0x07c04604,
-       0xf00066cf,
-       0x1bf40464,
-       0xf067f1f7,
+       0xe0400406,
+       0x0006f607,
+/* 0x04b6: memx_func_enter_wait */
+       0xc04604bd,
+       0x0066cf07,
+       0xf40464f0,
+       0x2c06f70b,
+       0xb50066cf,
+       0x00f8f106,
+/* 0x04cc: memx_func_leave */
+       0x66cf2c06,
+       0xf206b500,
+       0xe4400406,
+       0x0006f607,
+/* 0x04de: memx_func_leave_wait */
+       0xc04604bd,
+       0x0066cf07,
+       0xf40464f0,
+       0xf046f71b,
        0xb2010726,
        0x00047e6e,
        0xfdd8b200,
        0x60f90587,
        0xd0fc80f9,
        0x2d7ee0fc,
-       0x67f10000,
-       0x6eb21620,
-       0x0000047e,
-       0x87fdd8b2,
-       0xf960f905,
-       0xfcd0fc80,
-       0x002d7ee0,
-       0x0aa24700,
-       0x047e6eb2,
-       0xd8b20000,
-       0xf90587fd,
-       0xfc80f960,
-       0x7ee0fcd0,
-       0xf800002d,
-/* 0x0541: memx_func_wait_vblank */
+       0x20460000,
+       0x7e6eb216,
+       0xb2000004,
+       0x0587fdd8,
+       0x80f960f9,
+       0xe0fcd0fc,
+       0x00002d7e,
+       0xb20aa247,
+       0x00047e6e,
+       0xfdd8b200,
+       0x60f90587,
+       0xd0fc80f9,
+       0x2d7ee0fc,
+       0x00f80000,
+/* 0x053c: memx_func_wait_vblank */
+       0xf80410b6,
+/* 0x0541: memx_func_wr32 */
+       0x00169800,
+       0xb6011598,
+       0x60f90810,
+       0xd0fc50f9,
+       0x2d7ee0fc,
+       0x42b60000,
+       0xe81bf402,
+/* 0x055e: memx_func_wait */
+       0x2c0800f8,
+       0x980088cf,
+       0x1d98001e,
+       0x021c9801,
+       0xb6031b98,
+       0x747e1010,
+       0x00f80000,
+/* 0x0578: memx_func_delay */
+       0xb6001e98,
+       0x587e0410,
+       0x00f80000,
+/* 0x0584: memx_func_train */
+/* 0x0586: memx_exec */
+       0xe0f900f8,
+       0xc1b2d0f9,
+/* 0x058e: memx_exec_next */
+       0x1398b2b2,
        0x0410b600,
-/* 0x0546: memx_func_wr32 */
-       0x169800f8,
-       0x01159800,
-       0xf90810b6,
-       0xfc50f960,
+       0x01f034e7,
+       0x01e033e7,
+       0xf00132b6,
+       0x35980c30,
+       0xa655f9de,
+       0xe51ef412,
+       0x98f10b98,
+       0xcbbbf20c,
+       0x07c44b02,
+       0xfc00bbcf,
        0x7ee0fcd0,
-       0xb600002d,
-       0x1bf40242,
-/* 0x0563: memx_func_wait */
-       0x0800f8e8,
-       0x0088cf2c,
-       0x98001e98,
-       0x1c98011d,
-       0x031b9802,
-       0x7e1010b6,
-       0xf8000074,
-/* 0x057d: memx_func_delay */
-       0x001e9800,
-       0x7e0410b6,
-       0xf8000058,
-/* 0x0589: memx_func_train */
-/* 0x058b: memx_exec */
-       0xf900f800,
-       0xb2d0f9e0,
-/* 0x0593: memx_exec_next */
-       0x98b2b2c1,
-       0x10b60013,
-       0xf034e704,
-       0xe033e701,
-       0x0132b601,
-       0x980c30f0,
-       0x55f9de35,
-       0x1ef412a6,
-       0xf10b98e5,
-       0xbbf20c98,
-       0xc44b02cb,
-       0x00bbcf07,
-       0xe0fcd0fc,
-       0x00029f7e,
-/* 0x05ca: memx_info */
-       0xc67000f8,
-       0x0c0bf401,
-/* 0x05d0: memx_info_data */
-       0x4b03cc4c,
-       0x0ef40800,
-/* 0x05d9: memx_info_train */
-       0x0bcc4c09,
-/* 0x05df: memx_info_send */
-       0x7e01004b,
        0xf800029f,
-/* 0x05e5: memx_recv */
-       0x01d6b000,
-       0xb0a30bf4,
-       0x0bf400d6,
-/* 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,
+/* 0x05c5: memx_info */
+       0x01c67000,
+/* 0x05cb: memx_info_data */
+       0x4c0c0bf4,
+       0x004b03cc,
+       0x090ef408,
+/* 0x05d4: memx_info_train */
+       0x4b0bcc4c,
+/* 0x05da: memx_info_send */
+       0x9f7e0100,
+       0x00f80002,
+/* 0x05e0: memx_recv */
+       0xf401d6b0,
+       0xd6b0a30b,
+       0xdc0bf400,
+/* 0x05ee: memx_init */
+       0x00f800f8,
+/* 0x05f0: perf_recv */
+/* 0x05f2: perf_init */
+       0x00f800f8,
+/* 0x05f4: i2c_drive_scl */
+       0xf40036b0,
+       0xe0400d0b,
+       0x0001f607,
+       0x00f804bd,
+/* 0x0604: i2c_drive_scl_lo */
+       0xf607e440,
+       0x04bd0001,
+/* 0x060e: i2c_drive_sda */
+       0x36b000f8,
+       0x0d0bf400,
+       0xf607e040,
+       0x04bd0002,
+/* 0x061e: i2c_drive_sda_lo */
+       0xe44000f8,
+       0x0002f607,
+       0x00f804bd,
+/* 0x0628: i2c_sense_scl */
+       0x430132f4,
+       0x33cf07c4,
+       0x0431fd00,
+       0xf4060bf4,
+/* 0x063a: i2c_sense_scl_done */
+       0x00f80131,
+/* 0x063c: i2c_sense_sda */
+       0x430132f4,
+       0x33cf07c4,
+       0x0432fd00,
+       0xf4060bf4,
+/* 0x064e: i2c_sense_sda_done */
+       0x00f80131,
+/* 0x0650: i2c_raise_scl */
+       0x984440f9,
+       0x7e010308,
+/* 0x065b: i2c_raise_scl_wait */
+       0x4e0005f4,
+       0x587e03e8,
+       0x287e0000,
+       0x01f40006,
+       0x0142b609,
+/* 0x066f: i2c_raise_scl_done */
+       0xfcef1bf4,
+/* 0x0673: i2c_start */
+       0x7e00f840,
+       0xf4000628,
+       0x3c7e0d11,
+       0x11f40006,
+       0x2e0ef406,
+/* 0x0684: i2c_start_rep */
+       0xf47e0003,
+       0x01030005,
+       0x00060e7e,
+       0xb60076bb,
+       0x50f90465,
+       0xbb046594,
+       0x50bd0256,
+       0xfc0475fd,
+       0x06507e50,
+       0x0464b600,
+/* 0x06af: i2c_start_send */
+       0x031d11f4,
+       0x060e7e00,
+       0x13884e00,
+       0x0000587e,
+       0xf47e0003,
+       0x884e0005,
+       0x00587e13,
+/* 0x06c9: i2c_start_out */
+/* 0x06cb: i2c_stop */
+       0x0300f800,
+       0x05f47e00,
+       0x7e000300,
+       0x4e00060e,
+       0x587e03e8,
+       0x01030000,
+       0x0005f47e,
+       0x7e13884e,
+       0x03000058,
+       0x060e7e01,
+       0x13884e00,
+       0x0000587e,
+/* 0x06fa: i2c_bitw */
+       0x0e7e00f8,
+       0xe84e0006,
+       0x00587e03,
        0x0076bb00,
        0xf90465b6,
        0x04659450,
        0xbd0256bb,
        0x0475fd50,
-       0x557e50fc,
+       0x507e50fc,
        0x64b60006,
-       0x1d11f404,
-/* 0x06b4: i2c_start_send */
-       0x137e0003,
-       0x884e0006,
-       0x00587e13,
-       0x7e000300,
-       0x4e0005f9,
-       0x587e1388,
-/* 0x06ce: i2c_start_out */
-       0x00f80000,
-/* 0x06d0: i2c_stop */
-       0xf97e0003,
-       0x00030005,
-       0x0006137e,
-       0x7e03e84e,
+       0x1711f404,
+       0x7e13884e,
        0x03000058,
-       0x05f97e01,
+       0x05f47e00,
        0x13884e00,
        0x0000587e,
-       0x137e0103,
-       0x884e0006,
-       0x00587e13,
-/* 0x06ff: i2c_bitw */
-       0x7e00f800,
-       0x4e000613,
-       0x587e03e8,
-       0x76bb0000,
+/* 0x0738: i2c_bitw_out */
+/* 0x073a: i2c_bitr */
+       0x010300f8,
+       0x00060e7e,
+       0x7e03e84e,
+       0xbb000058,
+       0x65b60076,
+       0x9450f904,
+       0x56bb0465,
+       0xfd50bd02,
+       0x50fc0475,
+       0x0006507e,
+       0xf40464b6,
+       0x3c7e1a11,
+       0x00030006,
+       0x0005f47e,
+       0x7e13884e,
+       0xf0000058,
+       0x31f4013c,
+/* 0x077d: i2c_bitr_done */
+/* 0x077f: i2c_get_byte */
+       0x0500f801,
+/* 0x0783: i2c_get_byte_next */
+       0xb6080400,
+       0x76bb0154,
        0x0465b600,
        0x659450f9,
        0x0256bb04,
        0x75fd50bd,
        0x7e50fc04,
-       0xb6000655,
+       0xb600073a,
        0x11f40464,
-       0x13884e17,
-       0x0000587e,
-       0xf97e0003,
-       0x884e0005,
-       0x00587e13,
-/* 0x073d: i2c_bitw_out */
-/* 0x073f: i2c_bitr */
-       0x0300f800,
-       0x06137e01,
-       0x03e84e00,
-       0x0000587e,
+       0x0553fd2a,
+       0xf40142b6,
+       0x0103d81b,
        0xb60076bb,
        0x50f90465,
        0xbb046594,
        0x50bd0256,
        0xfc0475fd,
-       0x06557e50,
+       0x06fa7e50,
        0x0464b600,
-       0x7e1a11f4,
-       0x03000641,
-       0x05f97e00,
-       0x13884e00,
-       0x0000587e,
-       0xf4013cf0,
-/* 0x0782: i2c_bitr_done */
-       0x00f80131,
-/* 0x0784: i2c_get_byte */
-       0x08040005,
-/* 0x0788: i2c_get_byte_next */
-       0xbb0154b6,
-       0x65b60076,
-       0x9450f904,
-       0x56bb0465,
-       0xfd50bd02,
-       0x50fc0475,
-       0x00073f7e,
-       0xf40464b6,
-       0x53fd2a11,
-       0x0142b605,
-       0x03d81bf4,
-       0x0076bb01,
-       0xf90465b6,
-       0x04659450,
-       0xbd0256bb,
-       0x0475fd50,
-       0xff7e50fc,
-       0x64b60006,
-/* 0x07d1: i2c_get_byte_done */
-/* 0x07d3: i2c_put_byte */
-       0x0400f804,
-/* 0x07d5: i2c_put_byte_next */
-       0x0142b608,
-       0xbb3854ff,
+/* 0x07cc: i2c_get_byte_done */
+/* 0x07ce: i2c_put_byte */
+       0x080400f8,
+/* 0x07d0: i2c_put_byte_next */
+       0xff0142b6,
+       0x76bb3854,
+       0x0465b600,
+       0x659450f9,
+       0x0256bb04,
+       0x75fd50bd,
+       0x7e50fc04,
+       0xb60006fa,
+       0x11f40464,
+       0x0046b034,
+       0xbbd81bf4,
        0x65b60076,
        0x9450f904,
        0x56bb0465,
        0xfd50bd02,
        0x50fc0475,
-       0x0006ff7e,
+       0x00073a7e,
        0xf40464b6,
-       0x46b03411,
-       0xd81bf400,
+       0x76bb0f11,
+       0x0136b000,
+       0xf4061bf4,
+/* 0x0826: i2c_put_byte_done */
+       0x00f80132,
+/* 0x0828: i2c_addr */
        0xb60076bb,
        0x50f90465,
        0xbb046594,
        0x50bd0256,
        0xfc0475fd,
-       0x073f7e50,
+       0x06737e50,
        0x0464b600,
-       0xbb0f11f4,
-       0x36b00076,
-       0x061bf401,
-/* 0x082b: i2c_put_byte_done */
-       0xf80132f4,
-/* 0x082d: i2c_addr */
-       0x0076bb00,
+       0xe72911f4,
+       0xb6012ec3,
+       0x53fd0134,
+       0x0076bb05,
        0xf90465b6,
        0x04659450,
        0xbd0256bb,
        0x0475fd50,
-       0x787e50fc,
-       0x64b60006,
-       0x2911f404,
-       0x012ec3e7,
-       0xfd0134b6,
-       0x76bb0553,
-       0x0465b600,
-       0x659450f9,
-       0x0256bb04,
-       0x75fd50bd,
-       0x7e50fc04,
-       0xb60007d3,
-/* 0x0872: i2c_addr_done */
-       0x00f80464,
-/* 0x0874: i2c_acquire_addr */
-       0xb6f8cec7,
-       0xe0b705e4,
-       0x00f8d014,
-/* 0x0880: i2c_acquire */
-       0x0008747e,
+       0xce7e50fc,
+       0x64b60007,
+/* 0x086d: i2c_addr_done */
+/* 0x086f: i2c_acquire_addr */
+       0xc700f804,
+       0xe4b6f8ce,
+       0x14e0b705,
+/* 0x087b: i2c_acquire */
+       0x7e00f8d0,
+       0x7e00086f,
+       0xf0000004,
+       0x2d7e03d9,
+       0x00f80000,
+/* 0x088c: i2c_release */
+       0x00086f7e,
        0x0000047e,
-       0x7e03d9f0,
+       0x7e03daf0,
        0xf800002d,
-/* 0x0891: i2c_release */
-       0x08747e00,
-       0x00047e00,
-       0x03daf000,
-       0x00002d7e,
-/* 0x08a2: i2c_recv */
-       0x32f400f8,
-       0xf8c1c701,
-       0xb00214b6,
-       0x1ff52816,
-       0x13b80134,
-       0x98000cf4,
-       0x13b80032,
-       0x98000ccc,
-       0x31f40031,
-       0xf9d0f902,
-       0xd6d0f9e0,
-       0x10000000,
-       0xbb016792,
-       0x65b60076,
-       0x9450f904,
-       0x56bb0465,
-       0xfd50bd02,
-       0x50fc0475,
-       0x0008807e,
-       0xfc0464b6,
-       0x00d6b0d0,
-       0x00b01bf5,
-       0x76bb0005,
+/* 0x089d: i2c_recv */
+       0x0132f400,
+       0xb6f8c1c7,
+       0x16b00214,
+       0x341ff528,
+       0xf413b801,
+       0x3298000c,
+       0xcc13b800,
+       0x3198000c,
+       0x0231f400,
+       0xe0f9d0f9,
+       0x00d6d0f9,
+       0x92100000,
+       0x76bb0167,
        0x0465b600,
        0x659450f9,
        0x0256bb04,
        0x75fd50bd,
        0x7e50fc04,
-       0xb600082d,
-       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,
+       0xb600087b,
+       0xd0fc0464,
+       0xf500d6b0,
+       0x0500b01b,
+       0x0076bb00,
        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 */
+       0x287e50fc,
+       0x64b60008,
+       0xcc11f504,
+       0xe0c5c700,
+       0xb60076bb,
+       0x50f90465,
+       0xbb046594,
+       0x50bd0256,
+       0xfc0475fd,
+       0x07ce7e50,
+       0x0464b600,
+       0x00a911f5,
+       0x76bb0105,
+       0x0465b600,
+       0x659450f9,
+       0x0256bb04,
+       0x75fd50bd,
+       0x7e50fc04,
+       0xb6000828,
+       0x11f50464,
+       0x76bb0087,
+       0x0465b600,
+       0x659450f9,
+       0x0256bb04,
+       0x75fd50bd,
+       0x7e50fc04,
+       0xb600077f,
+       0x11f40464,
+       0xe05bcb67,
+       0xb60076bb,
+       0x50f90465,
+       0xbb046594,
+       0x50bd0256,
+       0xfc0475fd,
+       0x06cb7e50,
+       0x0464b600,
+       0x74bd5bb2,
+/* 0x099f: i2c_recv_not_rd08 */
+       0xb0410ef4,
+       0x1bf401d6,
+       0x7e00053b,
+       0xf4000828,
+       0xc5c73211,
+       0x07ce7ee0,
+       0x2811f400,
+       0x287e0005,
+       0x11f40008,
+       0xe0b5c71f,
+       0x0007ce7e,
+       0x7e1511f4,
+       0xbd0006cb,
+       0x08c5c774,
+       0xf4091bf4,
+       0x0ef40232,
+/* 0x09dd: i2c_recv_not_wr08 */
+/* 0x09dd: i2c_recv_done */
+       0xf8cec703,
+       0x00088c7e,
+       0xd0fce0fc,
+       0xb20912f4,
+       0x029f7e7c,
+/* 0x09f1: i2c_recv_exit */
+/* 0x09f3: i2c_init */
        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,
+/* 0x09f5: test_recv */
+       0x04584100,
+       0xb60011cf,
+       0x58400110,
+       0x0001f604,
+       0x00de04bd,
+       0x7e134fd9,
+       0xf80001de,
+/* 0x0a11: test_init */
+       0x08004e00,
+       0x0001de7e,
+/* 0x0a1a: idle_recv */
+       0x00f800f8,
+/* 0x0a1c: idle */
+       0x410031f4,
+       0x11cf0454,
+       0x0110b600,
+       0xf6045440,
+       0x04bd0001,
+/* 0x0a30: idle_loop */
+       0x32f45801,
+/* 0x0a35: idle_proc */
+/* 0x0a35: idle_proc_exec */
+       0xb210f902,
+       0x02a87e1e,
+       0xf410fc00,
+       0x31f40911,
+       0xf00ef402,
+/* 0x0a48: idle_proc_next */
+       0xa65810b6,
+       0xe81bf41f,
+       0xf4e002f4,
+       0x0ef40028,
+       0x000000c6,
+       0x00000000,
        0x00000000,
        0x00000000,
        0x00000000,
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h 
b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h
index e83341815ec6..e29b785d9f22 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h
@@ -46,8 +46,8 @@ uint32_t gt215_pmu_data[] = {
        0x00000000,
        0x00000000,
        0x584d454d,
-       0x0000083a,
-       0x0000082c,
+       0x00000833,
+       0x00000825,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -68,8 +68,8 @@ uint32_t gt215_pmu_data[] = {
        0x00000000,
        0x00000000,
        0x46524550,
-       0x0000083e,
-       0x0000083c,
+       0x00000837,
+       0x00000835,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -90,8 +90,8 @@ uint32_t gt215_pmu_data[] = {
        0x00000000,
        0x00000000,
        0x5f433249,
-       0x00000c6e,
-       0x00000b11,
+       0x00000c67,
+       0x00000b0a,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -112,8 +112,8 @@ uint32_t gt215_pmu_data[] = {
        0x00000000,
        0x00000000,
        0x54534554,
-       0x00000c97,
-       0x00000c70,
+       0x00000c90,
+       0x00000c69,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -134,8 +134,8 @@ uint32_t gt215_pmu_data[] = {
        0x00000000,
        0x00000000,
        0x454c4449,
-       0x00000ca3,
-       0x00000ca1,
+       0x00000c9c,
+       0x00000c9a,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -233,22 +233,22 @@ uint32_t gt215_pmu_data[] = {
 /* 0x037c: memx_func_next */
        0x00000002,
        0x00000000,
-       0x000005a0,
+       0x0000059f,
        0x00000003,
        0x00000002,
-       0x00000632,
+       0x0000062f,
        0x00040004,
        0x00000000,
-       0x0000064e,
+       0x0000064b,
        0x00010005,
        0x00000000,
-       0x0000066b,
+       0x00000668,
        0x00010006,
        0x00000000,
-       0x000005f0,
+       0x000005ef,
        0x00000007,
        0x00000000,
-       0x00000676,
+       0x00000673,
 /* 0x03c4: memx_func_tail */
 /* 0x03c4: memx_ts_start */
        0x00000000,
@@ -1304,560 +1304,560 @@ uint32_t gt215_pmu_code[] = {
        0x67f102d7,
        0x63f1fffc,
        0x76fdffff,
-       0x0267f104,
-       0x0576fd00,
-       0x70f980f9,
-       0xe0fcd0fc,
-       0xf04021f4,
+       0x0267f004,
+       0xf90576fd,
+       0xfc70f980,
+       0xf4e0fcd0,
+       0x67f04021,
+       0xe007f104,
+       0x0604b607,
+       0xbd0006d0,
+/* 0x0581: memx_func_enter_wait */
+       0xc067f104,
+       0x0664b607,
+       0xf00066cf,
+       0x0bf40464,
+       0x2c67f0f3,
+       0xcf0664b6,
+       0x06800066,
+/* 0x059f: memx_func_leave */
+       0xf000f8f1,
+       0x64b62c67,
+       0x0066cf06,
+       0xf0f20680,
        0x07f10467,
-       0x04b607e0,
+       0x04b607e4,
        0x0006d006,
-/* 0x0582: memx_func_enter_wait */
+/* 0x05ba: memx_func_leave_wait */
        0x67f104bd,
        0x64b607c0,
        0x0066cf06,
        0xf40464f0,
-       0x67f0f30b,
-       0x0664b62c,
-       0x800066cf,
-       0x00f8f106,
-/* 0x05a0: memx_func_leave */
-       0xb62c67f0,
-       0x66cf0664,
-       0xf2068000,
-       0xf10467f0,
-       0xb607e407,
-       0x06d00604,
-/* 0x05bb: memx_func_leave_wait */
-       0xf104bd00,
-       0xb607c067,
-       0x66cf0664,
-       0x0464f000,
-       0xf1f31bf4,
-       0xb9161087,
-       0x21f4028e,
-       0x02d7b904,
-       0xffcc67f1,
-       0xffff63f1,
-       0xf90476fd,
-       0xfc70f980,
-       0xf4e0fcd0,
-       0x00f84021,
-/* 0x05f0: memx_func_wait_vblank */
-       0xb0001698,
-       0x0bf40066,
-       0x0166b013,
-       0xf4060bf4,
-/* 0x0602: memx_func_wait_vblank_head1 */
-       0x77f12e0e,
-       0x0ef40020,
-/* 0x0609: memx_func_wait_vblank_head0 */
-       0x0877f107,
-/* 0x060d: memx_func_wait_vblank_0 */
-       0xc467f100,
-       0x0664b607,
-       0xfd0066cf,
-       0x1bf40467,
-/* 0x061d: memx_func_wait_vblank_1 */
-       0xc467f1f3,
-       0x0664b607,
-       0xfd0066cf,
-       0x0bf40467,
-/* 0x062d: memx_func_wait_vblank_fini */
-       0x0410b6f3,
-/* 0x0632: memx_func_wr32 */
-       0x169800f8,
-       0x01159800,
-       0xf90810b6,
-       0xfc50f960,
-       0xf4e0fcd0,
-       0x42b64021,
-       0xe91bf402,
-/* 0x064e: memx_func_wait */
-       0x87f000f8,
-       0x0684b62c,
-       0x980088cf,
-       0x1d98001e,
-       0x021c9801,
-       0xb6031b98,
-       0x21f41010,
-/* 0x066b: memx_func_delay */
-       0x9800f8a3,
-       0x10b6001e,
-       0x7e21f404,
-/* 0x0676: memx_func_train */
-       0x57f100f8,
-       0x77f10003,
-       0x97f10000,
-       0x93f00000,
-       0x029eb970,
-       0xb90421f4,
-       0xe7f102d8,
-       0x21f42710,
-/* 0x0695: memx_func_train_loop_outer */
-       0x0158e07e,
-       0x0083f101,
-       0xe097f102,
-       0x1193f011,
-       0x80f990f9,
+       0x87f1f31b,
+       0x8eb91610,
+       0x0421f402,
+       0xf102d7b9,
+       0xf1ffcc67,
+       0xfdffff63,
+       0x80f90476,
+       0xd0fc70f9,
+       0x21f4e0fc,
+/* 0x05ef: memx_func_wait_vblank */
+       0x9800f840,
+       0x66b00016,
+       0x120bf400,
+       0xf40166b0,
+       0x0ef4060b,
+/* 0x0601: memx_func_wait_vblank_head1 */
+       0x2077f02c,
+/* 0x0607: memx_func_wait_vblank_head0 */
+       0xf0060ef4,
+/* 0x060a: memx_func_wait_vblank_0 */
+       0x67f10877,
+       0x64b607c4,
+       0x0066cf06,
+       0xf40467fd,
+/* 0x061a: memx_func_wait_vblank_1 */
+       0x67f1f31b,
+       0x64b607c4,
+       0x0066cf06,
+       0xf40467fd,
+/* 0x062a: memx_func_wait_vblank_fini */
+       0x10b6f30b,
+/* 0x062f: memx_func_wr32 */
+       0x9800f804,
+       0x15980016,
+       0x0810b601,
+       0x50f960f9,
        0xe0fcd0fc,
-       0xf94021f4,
-       0x0067f150,
-/* 0x06b5: memx_func_train_loop_inner */
-       0x1187f100,
-       0x9068ff11,
-       0xfd109894,
-       0x97f10589,
-       0x93f00720,
-       0xf990f910,
-       0xfcd0fc80,
-       0x4021f4e0,
-       0x008097f1,
-       0xb91093f0,
-       0x21f4029e,
-       0x02d8b904,
-       0xf92088c5,
+       0xb64021f4,
+       0x1bf40242,
+/* 0x064b: memx_func_wait */
+       0xf000f8e9,
+       0x84b62c87,
+       0x0088cf06,
+       0x98001e98,
+       0x1c98011d,
+       0x031b9802,
+       0xf41010b6,
+       0x00f8a321,
+/* 0x0668: memx_func_delay */
+       0xb6001e98,
+       0x21f40410,
+/* 0x0673: memx_func_train */
+       0xf000f87e,
+       0x77f00357,
+       0x0097f100,
+       0x7093f000,
+       0xf4029eb9,
+       0xd8b90421,
+       0x10e7f102,
+       0x7e21f427,
+/* 0x0690: memx_func_train_loop_outer */
+       0x010158e0,
+       0x020083f1,
+       0x11e097f1,
+       0xf91193f0,
+       0xfc80f990,
+       0xf4e0fcd0,
+       0x50f94021,
+/* 0x06af: memx_func_train_loop_inner */
+       0xf10067f0,
+       0xff111187,
+       0x98949068,
+       0x0589fd10,
+       0x072097f1,
+       0xf91093f0,
        0xfc80f990,
        0xf4e0fcd0,
        0x97f14021,
-       0x93f0053c,
-       0x0287f110,
-       0x0083f130,
-       0xf990f980,
+       0x93f00080,
+       0x029eb910,
+       0xb90421f4,
+       0x88c502d8,
+       0xf990f920,
        0xfcd0fc80,
        0x4021f4e0,
-       0x0560e7f1,
-       0xf110e3f0,
-       0xf10000d7,
-       0x908000d3,
-       0xb7f100dc,
-       0xb3f08480,
-       0xa321f41e,
-       0x000057f1,
-       0xffff97f1,
-       0x830093f1,
-/* 0x0734: memx_func_train_loop_4x */
-       0x0080a7f1,
-       0xb910a3f0,
-       0x21f402ae,
-       0x02d8b904,
-       0xffdfb7f1,
-       0xffffb3f1,
-       0xf9048bfd,
-       0xfc80f9a0,
+       0x053c97f1,
+       0xf11093f0,
+       0xf1300287,
+       0xf9800083,
+       0xfc80f990,
        0xf4e0fcd0,
-       0xa7f14021,
-       0xa3f0053c,
-       0x0287f110,
-       0x0083f130,
-       0xf9a0f980,
-       0xfcd0fc80,
-       0x4021f4e0,
-       0x0560e7f1,
-       0xf110e3f0,
-       0xf10000d7,
-       0xb98000d3,
-       0xb7f102dc,
-       0xb3f02710,
-       0xa321f400,
-       0xf402eeb9,
-       0xddb90421,
-       0x949dff02,
+       0xe7f14021,
+       0xe3f00560,
+       0x00d7f110,
+       0x00d3f100,
+       0x00dc9080,
+       0x8480b7f1,
+       0xf41eb3f0,
+       0x57f0a321,
+       0xff97f100,
+       0x0093f1ff,
+/* 0x072d: memx_func_train_loop_4x */
+       0x80a7f183,
+       0x10a3f000,
+       0xf402aeb9,
+       0xd8b90421,
+       0xdfb7f102,
+       0xffb3f1ff,
+       0x048bfdff,
+       0x80f9a0f9,
+       0xe0fcd0fc,
+       0xf14021f4,
+       0xf0053ca7,
+       0x87f110a3,
+       0x83f13002,
+       0xa0f98000,
+       0xd0fc80f9,
+       0x21f4e0fc,
+       0x60e7f140,
+       0x10e3f005,
+       0x0000d7f1,
+       0x8000d3f1,
+       0xf102dcb9,
+       0xf02710b7,
+       0x21f400b3,
+       0x02eeb9a3,
+       0xb90421f4,
+       0x9dff02dd,
+       0x0150b694,
+       0xf4045670,
+       0x7aa0921e,
+       0xa9800bcc,
+       0x0160b600,
+       0x700470b6,
+       0x1ef51066,
+       0x50fcff01,
        0x700150b6,
-       0x1ef40456,
-       0xcc7aa092,
-       0x00a9800b,
-       0xb60160b6,
-       0x66700470,
-       0x001ef510,
-       0xb650fcff,
-       0x56700150,
-       0xd41ef507,
-/* 0x07c7: memx_exec */
-       0xf900f8fe,
-       0xb9d0f9e0,
-       0xb2b902c1,
-/* 0x07d1: memx_exec_next */
-       0x00139802,
-       0xe70410b6,
-       0xe701f034,
-       0xb601e033,
-       0x30f00132,
-       0xde35980c,
-       0x12b855f9,
-       0xe41ef406,
-       0x98f10b98,
-       0xcbbbf20c,
-       0xc4b7f102,
-       0x06b4b607,
-       0xfc00bbcf,
-       0xf5e0fcd0,
+       0x1ef50756,
+       0x00f8fed6,
+/* 0x07c0: memx_exec */
+       0xd0f9e0f9,
+       0xb902c1b9,
+/* 0x07ca: memx_exec_next */
+       0x139802b2,
+       0x0410b600,
+       0x01f034e7,
+       0x01e033e7,
+       0xf00132b6,
+       0x35980c30,
+       0xb855f9de,
+       0x1ef40612,
+       0xf10b98e4,
+       0xbbf20c98,
+       0xb7f102cb,
+       0xb4b607c4,
+       0x00bbcf06,
+       0xe0fcd0fc,
+       0x033621f5,
+/* 0x0806: memx_info */
+       0xc67000f8,
+       0x0e0bf401,
+/* 0x080c: memx_info_data */
+       0x03ccc7f1,
+       0x0800b7f1,
+/* 0x0817: memx_info_train */
+       0xf10b0ef4,
+       0xf10bccc7,
+/* 0x081f: memx_info_send */
+       0xf50100b7,
        0xf8033621,
-/* 0x080d: memx_info */
-       0x01c67000,
-/* 0x0813: memx_info_data */
-       0xf10e0bf4,
-       0xf103ccc7,
-       0xf40800b7,
-/* 0x081e: memx_info_train */
-       0xc7f10b0e,
-       0xb7f10bcc,
-/* 0x0826: memx_info_send */
-       0x21f50100,
-       0x00f80336,
-/* 0x082c: memx_recv */
-       0xf401d6b0,
-       0xd6b0980b,
-       0xd80bf400,
-/* 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,
-       0x33cf0634,
-       0x0432fd00,
-       0xf4060bf4,
-/* 0x08b2: i2c_sense_sda_done */
-       0x00f80131,
-/* 0x08b4: i2c_raise_scl */
-       0x47f140f9,
-       0x37f00898,
-       0x4021f501,
-/* 0x08c1: i2c_raise_scl_wait */
+/* 0x0825: memx_recv */
+       0x01d6b000,
+       0xb0980bf4,
+       0x0bf400d6,
+/* 0x0833: memx_init */
+       0xf800f8d8,
+/* 0x0835: perf_recv */
+/* 0x0837: perf_init */
+       0xf800f800,
+/* 0x0839: i2c_drive_scl */
+       0x0036b000,
+       0xf1110bf4,
+       0xb607e007,
+       0x01d00604,
+       0xf804bd00,
+/* 0x084d: i2c_drive_scl_lo */
+       0xe407f100,
+       0x0604b607,
+       0xbd0001d0,
+/* 0x085b: i2c_drive_sda */
+       0xb000f804,
+       0x0bf40036,
+       0xe007f111,
+       0x0604b607,
+       0xbd0002d0,
+/* 0x086f: i2c_drive_sda_lo */
+       0xf100f804,
+       0xb607e407,
+       0x02d00604,
+       0xf804bd00,
+/* 0x087d: i2c_sense_scl */
+       0x0132f400,
+       0x07c437f1,
+       0xcf0634b6,
+       0x31fd0033,
+       0x060bf404,
+/* 0x0893: i2c_sense_scl_done */
+       0xf80131f4,
+/* 0x0895: i2c_sense_sda */
+       0x0132f400,
+       0x07c437f1,
+       0xcf0634b6,
+       0x32fd0033,
+       0x060bf404,
+/* 0x08ab: i2c_sense_sda_done */
+       0xf80131f4,
+/* 0x08ad: i2c_raise_scl */
+       0xf140f900,
+       0xf0089847,
+       0x21f50137,
+/* 0x08ba: i2c_raise_scl_wait */
+       0xe7f10839,
+       0x21f403e8,
+       0x7d21f57e,
+       0x0901f408,
+       0xf40142b6,
+/* 0x08ce: i2c_raise_scl_done */
+       0x40fcef1b,
+/* 0x08d2: i2c_start */
+       0x21f500f8,
+       0x11f4087d,
+       0x9521f50d,
+       0x0611f408,
+/* 0x08e3: i2c_start_rep */
+       0xf0300ef4,
+       0x21f50037,
+       0x37f00839,
+       0x5b21f501,
+       0x0076bb08,
+       0xf90465b6,
+       0x04659450,
+       0xbd0256bb,
+       0x0475fd50,
+       0x21f550fc,
+       0x64b608ad,
+       0x1f11f404,
+/* 0x0910: i2c_start_send */
+       0xf50037f0,
+       0xf1085b21,
+       0xf41388e7,
+       0x37f07e21,
+       0x3921f500,
+       0x88e7f108,
+       0x7e21f413,
+/* 0x092c: i2c_start_out */
+/* 0x092e: i2c_stop */
+       0x37f000f8,
+       0x3921f500,
+       0x0037f008,
+       0x085b21f5,
+       0x03e8e7f1,
+       0xf07e21f4,
+       0x21f50137,
+       0xe7f10839,
+       0x21f41388,
+       0x0137f07e,
+       0x085b21f5,
+       0x1388e7f1,
+       0xf87e21f4,
+/* 0x0961: i2c_bitw */
+       0x5b21f500,
        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,
+       0xad21f550,
        0x0464b608,
-/* 0x0917: i2c_start_send */
-       0xf01f11f4,
-       0x21f50037,
-       0xe7f10862,
-       0x21f41388,
-       0x0037f07e,
-       0x084021f5,
-       0x1388e7f1,
-/* 0x0933: i2c_start_out */
-       0xf87e21f4,
-/* 0x0935: i2c_stop */
-       0x0037f000,
-       0x084021f5,
-       0xf50037f0,
-       0xf1086221,
-       0xf403e8e7,
+       0xf11811f4,
+       0xf41388e7,
        0x37f07e21,
-       0x4021f501,
+       0x3921f500,
        0x88e7f108,
        0x7e21f413,
-       0xf50137f0,
-       0xf1086221,
-       0xf41388e7,
-       0x00f87e21,
-/* 0x0968: i2c_bitw */
-       0x086221f5,
-       0x03e8e7f1,
-       0xbb7e21f4,
-       0x65b60076,
-       0x9450f904,
-       0x56bb0465,
-       0xfd50bd02,
-       0x50fc0475,
-       0x08b421f5,
-       0xf40464b6,
-       0xe7f11811,
+/* 0x09a0: i2c_bitw_out */
+/* 0x09a2: i2c_bitr */
+       0x37f000f8,
+       0x5b21f501,
+       0xe8e7f108,
+       0x7e21f403,
+       0xb60076bb,
+       0x50f90465,
+       0xbb046594,
+       0x50bd0256,
+       0xfc0475fd,
+       0xad21f550,
+       0x0464b608,
+       0xf51b11f4,
+       0xf0089521,
+       0x21f50037,
+       0xe7f10839,
        0x21f41388,
-       0x0037f07e,
-       0x084021f5,
-       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,
+       0x013cf07e,
+/* 0x09e7: i2c_bitr_done */
+       0xf80131f4,
+/* 0x09e9: i2c_get_byte */
+       0x0057f000,
+/* 0x09ef: i2c_get_byte_next */
+       0xb60847f0,
+       0x76bb0154,
+       0x0465b600,
+       0x659450f9,
+       0x0256bb04,
+       0x75fd50bd,
+       0xf550fc04,
+       0xb609a221,
+       0x11f40464,
+       0x0553fd2b,
+       0xf40142b6,
+       0x37f0d81b,
        0x0076bb01,
        0xf90465b6,
        0x04659450,
        0xbd0256bb,
        0x0475fd50,
        0x21f550fc,
-       0x64b609a9,
-       0x2b11f404,
-       0xb60553fd,
-       0x1bf40142,
-       0x0137f0d8,
-       0xb60076bb,
-       0x50f90465,
-       0xbb046594,
-       0x50bd0256,
-       0xfc0475fd,
-       0x6821f550,
-       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,
+       0x64b60961,
+/* 0x0a39: i2c_get_byte_done */
+/* 0x0a3b: i2c_put_byte */
+       0xf000f804,
+/* 0x0a3e: i2c_put_byte_next */
+       0x42b60847,
+       0x3854ff01,
        0xb60076bb,
        0x50f90465,
        0xbb046594,
        0x50bd0256,
        0xfc0475fd,
-       0xa921f550,
+       0x6121f550,
        0x0464b609,
-       0xbb0f11f4,
-       0x36b00076,
-       0x061bf401,
-/* 0x0a9b: i2c_put_byte_done */
-       0xf80132f4,
-/* 0x0a9d: i2c_addr */
-       0x0076bb00,
+       0xb03411f4,
+       0x1bf40046,
+       0x0076bbd8,
        0xf90465b6,
        0x04659450,
        0xbd0256bb,
        0x0475fd50,
        0x21f550fc,
-       0x64b608d9,
-       0x2911f404,
-       0x012ec3e7,
-       0xfd0134b6,
-       0x76bb0553,
+       0x64b609a2,
+       0x0f11f404,
+       0xb00076bb,
+       0x1bf40136,
+       0x0132f406,
+/* 0x0a94: i2c_put_byte_done */
+/* 0x0a96: 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,
+       0xb608d221,
+       0x11f40464,
+       0x2ec3e729,
+       0x0134b601,
+       0xbb0553fd,
        0x65b60076,
        0x9450f904,
        0x56bb0465,
        0xfd50bd02,
        0x50fc0475,
-       0x0af321f5,
-       0xfc0464b6,
-       0x00d6b0d0,
-       0x00b31bf5,
-       0xbb0057f0,
+       0x0a3b21f5,
+/* 0x0adb: i2c_addr_done */
+       0xf80464b6,
+/* 0x0add: i2c_acquire_addr */
+       0xf8cec700,
+       0xb702e4b6,
+       0x980d1ce0,
+       0x00f800ee,
+/* 0x0aec: i2c_acquire */
+       0x0add21f5,
+       0xf00421f4,
+       0x21f403d9,
+/* 0x0afb: i2c_release */
+       0xf500f840,
+       0xf40add21,
+       0xdaf00421,
+       0x4021f403,
+/* 0x0b0a: i2c_recv */
+       0x32f400f8,
+       0xf8c1c701,
+       0xb00214b6,
+       0x1ff52816,
+       0x13a0013a,
+       0x32980cf4,
+       0xcc13a000,
+       0x0031980c,
+       0xf90231f4,
+       0xf9e0f9d0,
+       0x0067f1d0,
+       0x0063f100,
+       0x01679210,
+       0xb60076bb,
+       0x50f90465,
+       0xbb046594,
+       0x50bd0256,
+       0xfc0475fd,
+       0xec21f550,
+       0x0464b60a,
+       0xd6b0d0fc,
+       0xb31bf500,
+       0x0057f000,
+       0xb60076bb,
+       0x50f90465,
+       0xbb046594,
+       0x50bd0256,
+       0xfc0475fd,
+       0x9621f550,
+       0x0464b60a,
+       0x00d011f5,
+       0xbbe0c5c7,
        0x65b60076,
        0x9450f904,
        0x56bb0465,
        0xfd50bd02,
        0x50fc0475,
-       0x0a9d21f5,
+       0x0a3b21f5,
        0xf50464b6,
-       0xc700d011,
-       0x76bbe0c5,
+       0xf000ad11,
+       0x76bb0157,
        0x0465b600,
        0x659450f9,
        0x0256bb04,
        0x75fd50bd,
        0xf550fc04,
-       0xb60a4221,
+       0xb60a9621,
        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,
+       0xb609e921,
+       0x11f40464,
+       0xe05bcb6a,
+       0xb60076bb,
+       0x50f90465,
+       0xbb046594,
+       0x50bd0256,
+       0xfc0475fd,
+       0x2e21f550,
+       0x0464b609,
+       0xbd025bb9,
+       0x430ef474,
+/* 0x0c10: i2c_recv_not_rd08 */
+       0xf401d6b0,
+       0x57f03d1b,
+       0x9621f500,
+       0x3311f40a,
+       0xf5e0c5c7,
+       0xf40a3b21,
+       0x57f02911,
+       0x9621f500,
+       0x1f11f40a,
+       0xf5e0b5c7,
+       0xf40a3b21,
+       0x21f51511,
+       0x74bd092e,
+       0xf408c5c7,
+       0x32f4091b,
+       0x030ef402,
+/* 0x0c50: i2c_recv_not_wr08 */
+/* 0x0c50: i2c_recv_done */
+       0xf5f8cec7,
+       0xfc0afb21,
+       0xf4d0fce0,
+       0x7cb90a12,
+       0x3621f502,
+/* 0x0c65: i2c_recv_exit */
+/* 0x0c67: i2c_init */
+       0xf800f803,
+/* 0x0c69: test_recv */
+       0xd817f100,
+       0x0614b605,
+       0xb60011cf,
+       0x07f10110,
+       0x04b605d8,
+       0x0001d006,
+       0xe7f104bd,
+       0xe3f1d900,
+       0x21f5134f,
+       0x00f80256,
+/* 0x0c90: test_init */
+       0x0800e7f1,
+       0x025621f5,
+/* 0x0c9a: 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,
+/* 0x0c9c: idle */
+       0xf10031f4,
+       0xb605d417,
+       0x11cf0614,
+       0x0110b600,
+       0x05d407f1,
+       0xd00604b6,
+       0x04bd0001,
+/* 0x0cb8: idle_loop */
+       0xf45817f0,
+/* 0x0cbe: idle_proc */
+/* 0x0cbe: idle_proc_exec */
+       0x10f90232,
+       0xf5021eb9,
+       0xfc033f21,
+       0x0911f410,
+       0xf40231f4,
+/* 0x0cd2: idle_proc_next */
+       0x10b6ef0e,
+       0x061fb858,
+       0xf4e61bf4,
+       0x28f4dd02,
+       0xbb0ef400,
+       0x00000000,
+       0x00000000,
        0x00000000,
        0x00000000,
        0x00000000,
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/memx.fuc 
b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/memx.fuc
index ec03f9a4290b..1663bf943d77 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/memx.fuc
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/memx.fuc
@@ -82,15 +82,15 @@ memx_train_tail:
 // $r0  - zero
 memx_func_enter:
 #if NVKM_PPWR_CHIPSET == GT215
-       movw $r8 0x1610
+       mov $r8 0x1610
        nv_rd32($r7, $r8)
        imm32($r6, 0xfffffffc)
        and $r7 $r6
-       movw $r6 0x2
+       mov $r6 0x2
        or $r7 $r6
        nv_wr32($r8, $r7)
 #else
-       movw $r6 0x001620
+       mov $r6 0x001620
        imm32($r7, ~0x00000aa2);
        nv_rd32($r8, $r6)
        and $r8 $r7
@@ -101,7 +101,7 @@ memx_func_enter:
        and $r8 $r7
        nv_wr32($r6, $r8)
 
-       movw $r6 0x0026f0
+       mov $r6 0x0026f0
        nv_rd32($r8, $r6)
        and $r8 $r7
        nv_wr32($r6, $r8)
@@ -136,19 +136,19 @@ memx_func_leave:
                bra nz #memx_func_leave_wait
 
 #if NVKM_PPWR_CHIPSET == GT215
-       movw $r8 0x1610
+       mov $r8 0x1610
        nv_rd32($r7, $r8)
        imm32($r6, 0xffffffcc)
        and $r7 $r6
        nv_wr32($r8, $r7)
 #else
-       movw $r6 0x0026f0
+       mov $r6 0x0026f0
        imm32($r7, 0x00000001)
        nv_rd32($r8, $r6)
        or $r8 $r7
        nv_wr32($r6, $r8)
 
-       movw $r6 0x001620
+       mov $r6 0x001620
        nv_rd32($r8, $r6)
        or $r8 $r7
        nv_wr32($r6, $r8)
@@ -177,11 +177,11 @@ memx_func_wait_vblank:
        bra #memx_func_wait_vblank_fini
 
        memx_func_wait_vblank_head1:
-       movw $r7 0x20
+       mov $r7 0x20
        bra #memx_func_wait_vblank_0
 
        memx_func_wait_vblank_head0:
-       movw $r7 0x8
+       mov $r7 0x8
 
        memx_func_wait_vblank_0:
                nv_iord($r6, NV_PPWR_INPUT)
@@ -273,13 +273,13 @@ memx_func_train:
 // $r5 - outer loop counter
 // $r6 - inner loop counter
 // $r7 - entry counter (#memx_train_head + $r7)
-       movw $r5 0x3
-       movw $r7 0x0
+       mov $r5 0x3
+       mov $r7 0x0
 
 // Read random memory to wake up... things
        imm32($r9, 0x700000)
        nv_rd32($r8,$r9)
-       movw $r14 0x2710
+       mov $r14 0x2710
        call(nsec)
 
        memx_func_train_loop_outer:
@@ -289,9 +289,9 @@ memx_func_train:
                nv_wr32($r9, $r8)
                push $r5
 
-               movw $r6 0x0
+               mov $r6 0x0
                memx_func_train_loop_inner:
-                       movw $r8 0x1111
+                       mov $r8 0x1111
                        mulu $r9 $r6 $r8
                        shl b32 $r8 $r9 0x10
                        or $r8 $r9
@@ -315,7 +315,7 @@ memx_func_train:
 
                        // $r5 - inner inner loop counter
                        // $r9 - result
-                       movw $r5 0
+                       mov $r5 0
                        imm32($r9, 0x8300ffff)
                        memx_func_train_loop_4x:
                                imm32($r10, 0x100080)
-- 
2.15.1

Reply via email to