Loading drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/arith.fuc 0 → 100644 +94 −0 Original line number Diff line number Diff line /* * Copyright 2014 Martin Peres <martin.peres@free.fr> * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the folloing conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. * * Authors: Martin Peres */ /****************************************************************************** * arith data segment *****************************************************************************/ #ifdef INCLUDE_PROC #endif #ifdef INCLUDE_DATA #endif /****************************************************************************** * arith code segment *****************************************************************************/ #ifdef INCLUDE_CODE // does a 32x32 -> 64 multiplication // // A * B = A_lo * B_lo // + ( A_hi * B_lo ) << 16 // + ( A_lo * B_hi ) << 16 // + ( A_hi * B_hi ) << 32 // // $r15 - current // $r14 - A // $r13 - B // $r12 - mul_lo (return) // $r11 - mul_hi (return) // $r0 - zero mulu32_32_64: push $r1 // A_hi push $r2 // B_hi push $r3 // tmp0 push $r4 // tmp1 shr b32 $r1 $r14 16 shr b32 $r2 $r13 16 clear b32 $r12 clear b32 $r11 // A_lo * B_lo mulu $r12 $r14 $r13 // ( A_hi * B_lo ) << 16 mulu $r3 $r1 $r13 // tmp0 = A_hi * B_lo mov b32 $r4 $r3 and $r3 0xffff // tmp0 = tmp0_lo shl b32 $r3 16 shr b32 $r4 16 // tmp1 = tmp0_hi add b32 $r12 $r3 adc b32 $r11 $r4 // ( A_lo * B_hi ) << 16 mulu $r3 $r14 $r2 // tmp0 = A_lo * B_hi mov b32 $r4 $r3 and $r3 0xffff // tmp0 = tmp0_lo shl b32 $r3 16 shr b32 $r4 16 // tmp1 = tmp0_hi add b32 $r12 $r3 adc b32 $r11 $r4 // ( A_hi * B_hi ) << 32 mulu $r3 $r1 $r2 // tmp0 = A_hi * B_hi add b32 $r11 $r3 pop $r4 pop $r3 pop $r2 pop $r1 ret #endif drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/macros.fuc +10 −0 Original line number Diff line number Diff line Loading @@ -250,3 +250,13 @@ */ st b32 D[$r0] reg /* */ clear b32 $r0 #endif // does a 64+64 -> 64 unsigned addition (C = A + B) #define addu64(reg_a_c_hi, reg_a_c_lo, b_hi, b_lo) /* */ add b32 reg_a_c_lo b_lo /* */ adc b32 reg_a_c_hi b_hi // does a 64+64 -> 64 substraction (C = A - B) #define subu64(reg_a_c_hi, reg_a_c_lo, b_hi, b_lo) /* */ sub b32 reg_a_c_lo b_lo /* */ sbb b32 reg_a_c_hi b_hi drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nv108.fuc +3 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ .section #nv108_pwr_data #define INCLUDE_PROC #include "kernel.fuc" #include "arith.fuc" #include "host.fuc" #include "memx.fuc" #include "perf.fuc" Loading @@ -44,6 +45,7 @@ #define INCLUDE_DATA #include "kernel.fuc" #include "arith.fuc" #include "host.fuc" #include "memx.fuc" #include "perf.fuc" Loading @@ -56,6 +58,7 @@ .section #nv108_pwr_code #define INCLUDE_CODE #include "kernel.fuc" #include "arith.fuc" #include "host.fuc" #include "memx.fuc" #include "perf.fuc" Loading drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nv108.fuc.h +470 −405 Original line number Diff line number Diff line Loading @@ -24,8 +24,8 @@ uint32_t nv108_pwr_data[] = { 0x00000000, /* 0x0058: proc_list_head */ 0x54534f48, 0x000003e0, 0x00000391, 0x00000342, 0x00000000, 0x00000000, 0x00000000, Loading @@ -46,8 +46,8 @@ uint32_t nv108_pwr_data[] = { 0x00000000, 0x00000000, 0x584d454d, 0x0000047c, 0x0000046e, 0x000004cb, 0x000004bd, 0x00000000, 0x00000000, 0x00000000, Loading @@ -68,8 +68,8 @@ uint32_t nv108_pwr_data[] = { 0x00000000, 0x00000000, 0x46524550, 0x00000480, 0x0000047e, 0x000004cf, 0x000004cd, 0x00000000, 0x00000000, 0x00000000, Loading @@ -90,8 +90,8 @@ uint32_t nv108_pwr_data[] = { 0x00000000, 0x00000000, 0x5f433249, 0x00000884, 0x0000072b, 0x000008d3, 0x0000077a, 0x00000000, 0x00000000, 0x00000000, Loading @@ -112,8 +112,8 @@ uint32_t nv108_pwr_data[] = { 0x00000000, 0x00000000, 0x54534554, 0x000008a5, 0x00000886, 0x000008f4, 0x000008d5, 0x00000000, 0x00000000, 0x00000000, Loading @@ -134,8 +134,8 @@ uint32_t nv108_pwr_data[] = { 0x00000000, 0x00000000, 0x454c4449, 0x000008b0, 0x000008ae, 0x000008ff, 0x000008fd, 0x00000000, 0x00000000, 0x00000000, Loading Loading @@ -229,20 +229,20 @@ uint32_t nv108_pwr_data[] = { /* 0x0370: memx_func_head */ 0x00010000, 0x00000000, 0x000003c1, 0x00000410, /* 0x037c: memx_func_next */ 0x00000001, 0x00000000, 0x000003df, 0x0000042e, 0x00000002, 0x00000002, 0x000003f7, 0x00000446, 0x00040003, 0x00000000, 0x00000414, 0x00000463, 0x00010004, 0x00000000, 0x0000042e, 0x0000047d, /* 0x03ac: memx_func_tail */ /* 0x03ac: memx_data_head */ 0x00000000, Loading Loading @@ -1010,449 +1010,514 @@ uint32_t nv108_pwr_code[] = { 0xfa0bf400, 0xf0b615f9, 0xf20ef458, /* 0x0304: host_send */ 0xcf04b041, 0xa0420011, 0x0022cf04, /* 0x0304: mulu32_32_64 */ 0x20f910f9, 0x40f930f9, 0x9510e195, 0xc4bd10d2, 0xedffb4bd, 0x301dffc0, 0x34f134b2, 0x34b6ffff, 0x1045b610, 0xbb00c3bb, 0xe2ff01b4, 0xf134b230, 0xb6ffff34, 0x45b61034, 0x00c3bb10, 0xff01b4bb, 0xb3bb3012, 0xfc40fc00, 0xfc20fc30, /* 0x0353: host_send */ 0x4100f810, 0x11cf04b0, 0x04a04200, 0xa60022cf, 0x2e0bf412, 0x94071ec4, 0xe0b704ee, 0xeb980270, 0x02ec9803, 0x9801ed98, 0x577e00ee, 0x10b60002, 0x0f1ec401, 0xf604b040, 0x04bd000e, /* 0x038f: host_send_done */ 0xf8c70ef4, /* 0x0391: host_recv */ 0x4e494100, 0x525413f1, 0x0bf4e1a6, /* 0x039d: host_recv_wait */ 0x04cc41b9, 0x420011cf, 0x22cf04c8, 0x0816f000, 0x0bf412a6, 0x071ec42e, 0xb704ee94, 0x980270e0, 0xec9803eb, 0x01ed9802, 0x7e00ee98, 0xb6000257, 0x1ec40110, 0x04b0400f, 0xbd000ef6, 0xc70ef404, /* 0x0340: host_send_done */ /* 0x0342: host_recv */ 0x494100f8, 0x5413f14e, 0xf4e1a652, /* 0x034e: host_recv_wait */ 0xcc41b90b, 0x0011cf04, 0xcf04c842, 0x16f00022, 0xf412a608, 0x23c4ef0b, 0x0434b607, 0x02f030b7, 0xb5033bb5, 0x3db5023c, 0x003eb501, 0xf00120b6, 0xc8400f24, 0x0002f604, 0x400204bd, 0x02f60000, 0xf804bd00, /* 0x0391: host_init */ 0x00804100, 0xf11014b6, 0x40027015, 0x01f604d0, 0x4104bd00, 0x14b60080, 0xf015f110, 0x04dc4002, 0xbd0001f6, 0x40010104, 0x01f604c4, 0xf804bd00, /* 0x03c1: memx_func_enter */ 0x40040600, 0x06f607e0, /* 0x03cb: memx_func_enter_wait */ 0x4604bd00, 0x66cf07c0, 0x0464f000, 0x98f70bf4, 0x10b60016, /* 0x03df: memx_func_leave */ 0x0600f804, 0x07e44004, 0xbd0006f6, /* 0x03e9: memx_func_leave_wait */ 0x07c04604, 0xf00066cf, 0x1bf40464, /* 0x03f7: memx_func_wr32 */ 0x9800f8f7, 0x15980016, 0x0810b601, 0x50f960f9, 0xe0fcd0fc, 0x00002e7e, 0xf40242b6, 0x00f8e81b, /* 0x0414: memx_func_wait */ 0x88cf2c08, 0x001e9800, 0x98011d98, 0x1b98021c, 0x1010b603, 0x0000717e, /* 0x042e: memx_func_delay */ 0x1e9800f8, 0x0410b600, 0x00005d7e, /* 0x043a: memx_exec */ 0xe0f900f8, 0xc1b2d0f9, /* 0x0442: memx_exec_next */ 0x1398b2b2, 0x0410b600, 0xf0103495, 0x35980c30, 0xa655f9de, 0xed1ef412, 0xe0fcd0fc, 0x0002577e, /* 0x0462: memx_info */ 0xac4c00f8, 0x08004b03, 0x0002577e, /* 0x046e: memx_recv */ 0xd6b000f8, 0xc90bf401, 0xf400d6b0, 0x00f8eb0b, /* 0x047c: memx_init */ /* 0x047e: perf_recv */ 0x00f800f8, /* 0x0480: perf_init */ /* 0x0482: i2c_drive_scl */ 0x36b000f8, 0x0d0bf400, 0xf607e040, 0x04bd0001, /* 0x0492: i2c_drive_scl_lo */ 0xe44000f8, 0x0001f607, 0x0723c4ef, 0xb70434b6, 0xb502f030, 0x3cb5033b, 0x013db502, 0xb6003eb5, 0x24f00120, 0x04c8400f, 0xbd0002f6, 0x00400204, 0x0002f600, 0x00f804bd, /* 0x049c: i2c_drive_sda */ 0xf40036b0, 0xe0400d0b, 0x0002f607, /* 0x03e0: host_init */ 0xb6008041, 0x15f11014, 0xd0400270, 0x0001f604, 0x804104bd, 0x1014b600, 0x02f015f1, 0xf604dc40, 0x04bd0001, 0xc4400101, 0x0001f604, 0x00f804bd, /* 0x04ac: i2c_drive_sda_lo */ /* 0x0410: memx_func_enter */ 0xe0400406, 0x0006f607, /* 0x041a: memx_func_enter_wait */ 0xc04604bd, 0x0066cf07, 0xf40464f0, 0x1698f70b, 0x0410b600, /* 0x042e: memx_func_leave */ 0x040600f8, 0xf607e440, 0x04bd0002, /* 0x04b6: i2c_sense_scl */ 0x32f400f8, 0x07c44301, 0xfd0033cf, 0x0bf40431, 0x0131f406, /* 0x04c8: i2c_sense_scl_done */ /* 0x04ca: i2c_sense_sda */ 0x32f400f8, 0x07c44301, 0xfd0033cf, 0x0bf40432, 0x0131f406, /* 0x04dc: i2c_sense_sda_done */ /* 0x04de: i2c_raise_scl */ 0x40f900f8, 0x03089844, 0x04827e01, /* 0x04e9: i2c_raise_scl_wait */ 0x03e84e00, 0x04bd0006, /* 0x0438: memx_func_leave_wait */ 0xcf07c046, 0x64f00066, 0xf71bf404, /* 0x0446: memx_func_wr32 */ 0x169800f8, 0x01159800, 0xf90810b6, 0xfc50f960, 0x7ee0fcd0, 0xb600002e, 0x1bf40242, /* 0x0463: memx_func_wait */ 0x0800f8e8, 0x0088cf2c, 0x98001e98, 0x1c98011d, 0x031b9802, 0x7e1010b6, 0xf8000071, /* 0x047d: memx_func_delay */ 0x001e9800, 0x7e0410b6, 0xf800005d, /* 0x0489: memx_exec */ 0xf9e0f900, 0xb2c1b2d0, /* 0x0491: memx_exec_next */ 0x001398b2, 0x950410b6, 0x30f01034, 0xde35980c, 0x12a655f9, 0xfced1ef4, 0x7ee0fcd0, 0xf8000257, /* 0x04b1: memx_info */ 0x03ac4c00, 0x7e08004b, 0xf8000257, /* 0x04bd: memx_recv */ 0x01d6b000, 0xb0c90bf4, 0x0bf400d6, /* 0x04cb: memx_init */ 0xf800f8eb, /* 0x04cd: perf_recv */ /* 0x04cf: perf_init */ 0xf800f800, /* 0x04d1: i2c_drive_scl */ 0x0036b000, 0x400d0bf4, 0x01f607e0, 0xf804bd00, /* 0x04e1: i2c_drive_scl_lo */ 0x07e44000, 0xbd0001f6, /* 0x04eb: i2c_drive_sda */ 0xb000f804, 0x0bf40036, 0x07e0400d, 0xbd0002f6, /* 0x04fb: i2c_drive_sda_lo */ 0x4000f804, 0x02f607e4, 0xf804bd00, /* 0x0505: i2c_sense_scl */ 0x0132f400, 0xcf07c443, 0x31fd0033, 0x060bf404, /* 0x0517: i2c_sense_scl_done */ 0xf80131f4, /* 0x0519: i2c_sense_sda */ 0x0132f400, 0xcf07c443, 0x32fd0033, 0x060bf404, /* 0x052b: i2c_sense_sda_done */ 0xf80131f4, /* 0x052d: i2c_raise_scl */ 0x4440f900, 0x01030898, 0x0004d17e, /* 0x0538: i2c_raise_scl_wait */ 0x7e03e84e, 0x7e00005d, 0xf4000505, 0x42b60901, 0xef1bf401, /* 0x054c: i2c_raise_scl_done */ 0x00f840fc, /* 0x0550: i2c_start */ 0x0005057e, 0x7e0d11f4, 0xf4000519, 0x0ef40611, /* 0x0561: i2c_start_rep */ 0x7e00032e, 0x030004d1, 0x04eb7e01, 0x0076bb00, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x2d7e50fc, 0x64b60005, 0x1d11f404, /* 0x058c: i2c_start_send */ 0xeb7e0003, 0x884e0004, 0x005d7e13, 0x7e000300, 0x4e0004d1, 0x5d7e1388, /* 0x05a6: i2c_start_out */ 0x00f80000, /* 0x05a8: i2c_stop */ 0xd17e0003, 0x00030004, 0x0004eb7e, 0x7e03e84e, 0x0300005d, 0x04d17e01, 0x13884e00, 0x00005d7e, 0x0004b67e, 0xb60901f4, 0x1bf40142, /* 0x04fd: i2c_raise_scl_done */ 0xf840fcef, /* 0x0501: i2c_start */ 0x04b67e00, 0x0d11f400, 0x0004ca7e, 0xf40611f4, /* 0x0512: i2c_start_rep */ 0x00032e0e, 0x0004827e, 0x9c7e0103, 0x76bb0004, 0xeb7e0103, 0x884e0004, 0x005d7e13, /* 0x05d7: i2c_bitw */ 0x7e00f800, 0x4e0004eb, 0x5d7e03e8, 0x76bb0000, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0x7e50fc04, 0xb60004de, 0xb600052d, 0x11f40464, /* 0x053d: i2c_start_send */ 0x7e00031d, 0x4e00049c, 0x5d7e1388, 0x00030000, 0x0004827e, 0x7e13884e, /* 0x0557: i2c_start_out */ 0xf800005d, /* 0x0559: i2c_stop */ 0x7e000300, 0x03000482, 0x049c7e00, 0x03e84e00, 0x13884e17, 0x00005d7e, 0x827e0103, 0xd17e0003, 0x884e0004, 0x005d7e13, 0x7e010300, 0x4e00049c, 0x5d7e1388, 0x00f80000, /* 0x0588: i2c_bitw */ 0x00049c7e, 0x7e03e84e, 0xbb00005d, /* 0x0615: i2c_bitw_out */ /* 0x0617: i2c_bitr */ 0x0300f800, 0x04eb7e01, 0x03e84e00, 0x00005d7e, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, 0x052d7e50, 0x0464b600, 0x7e1a11f4, 0x03000519, 0x04d17e00, 0x13884e00, 0x00005d7e, 0xf4013cf0, /* 0x065a: i2c_bitr_done */ 0x00f80131, /* 0x065c: i2c_get_byte */ 0x08040005, /* 0x0660: i2c_get_byte_next */ 0xbb0154b6, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, 0x0004de7e, 0x0006177e, 0xf40464b6, 0x884e1711, 0x005d7e13, 0x7e000300, 0x4e000482, 0x5d7e1388, /* 0x05c6: i2c_bitw_out */ 0x00f80000, /* 0x05c8: i2c_bitr */ 0x9c7e0103, 0xe84e0004, 0x005d7e03, 0x0076bb00, 0x53fd2a11, 0x0142b605, 0x03d81bf4, 0x0076bb01, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0xde7e50fc, 0x64b60004, 0x1a11f404, 0x0004ca7e, 0x827e0003, 0x884e0004, 0x005d7e13, 0x013cf000, /* 0x060b: i2c_bitr_done */ 0xf80131f4, /* 0x060d: i2c_get_byte */ 0x04000500, /* 0x0611: i2c_get_byte_next */ 0x0154b608, 0xd77e50fc, 0x64b60005, /* 0x06a9: i2c_get_byte_done */ /* 0x06ab: i2c_put_byte */ 0x0400f804, /* 0x06ad: i2c_put_byte_next */ 0x0142b608, 0xbb3854ff, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, 0x0005d77e, 0xf40464b6, 0x46b03411, 0xd81bf400, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, 0x05c87e50, 0x06177e50, 0x0464b600, 0xfd2a11f4, 0x42b60553, 0xd81bf401, 0x76bb0103, 0xbb0f11f4, 0x36b00076, 0x061bf401, /* 0x0703: i2c_put_byte_done */ 0xf80132f4, /* 0x0705: i2c_addr */ 0x0076bb00, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x507e50fc, 0x64b60005, 0x2911f404, 0x012ec3e7, 0xfd0134b6, 0x76bb0553, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0x7e50fc04, 0xb6000588, /* 0x065a: i2c_get_byte_done */ 0xb60006ab, /* 0x074a: i2c_addr_done */ 0x00f80464, /* 0x065c: i2c_put_byte */ /* 0x065e: i2c_put_byte_next */ 0x42b60804, 0x3854ff01, /* 0x074c: i2c_acquire_addr */ 0xb6f8cec7, 0xe0b705e4, 0x00f8d014, /* 0x0758: i2c_acquire */ 0x00074c7e, 0x0000047e, 0x7e03d9f0, 0xf800002e, /* 0x0769: i2c_release */ 0x074c7e00, 0x00047e00, 0x03daf000, 0x00002e7e, /* 0x077a: i2c_recv */ 0x32f400f8, 0xf8c1c701, 0xb00214b6, 0x1ff52816, 0x13b80137, 0x98000bd4, 0x13b80032, 0x98000bac, 0x31f40031, 0xf9d0f902, 0xf1d0f9e0, 0xf1000067, 0x92100063, 0x76bb0167, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0x7e50fc04, 0xb6000758, 0xd0fc0464, 0xf500d6b0, 0x0500b01b, 0x0076bb00, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x057e50fc, 0x64b60007, 0xcc11f504, 0xe0c5c700, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, 0x05887e50, 0x06ab7e50, 0x0464b600, 0xb03411f4, 0x1bf40046, 0x0076bbd8, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0xc87e50fc, 0x64b60005, 0x0f11f404, 0xb00076bb, 0x1bf40136, 0x0132f406, /* 0x06b4: i2c_put_byte_done */ /* 0x06b6: i2c_addr */ 0x76bb00f8, 0x00a911f5, 0x76bb0105, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0x7e50fc04, 0xb6000501, 0x11f40464, 0x2ec3e729, 0x0134b601, 0xbb0553fd, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, 0x00065c7e, /* 0x06fb: i2c_addr_done */ 0xf80464b6, /* 0x06fd: i2c_acquire_addr */ 0xf8cec700, 0xb705e4b6, 0xf8d014e0, /* 0x0709: i2c_acquire */ 0x06fd7e00, 0x00047e00, 0x03d9f000, 0x00002e7e, /* 0x071a: i2c_release */ 0xfd7e00f8, 0x047e0006, 0xdaf00000, 0x002e7e03, /* 0x072b: i2c_recv */ 0xf400f800, 0xc1c70132, 0x0214b6f8, 0xf52816b0, 0xb801371f, 0x000bd413, 0xb8003298, 0x000bac13, 0xf4003198, 0xd0f90231, 0xd0f9e0f9, 0x000067f1, 0x100063f1, 0xbb016792, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, 0x0007097e, 0xfc0464b6, 0x00d6b0d0, 0x00b01bf5, 0x76bb0005, 0xb6000705, 0x11f50464, 0x76bb0087, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0x7e50fc04, 0xb60006b6, 0x11f50464, 0xc5c700cc, 0x0076bbe0, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x5c7e50fc, 0x64b60006, 0xa911f504, 0xbb010500, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, 0x0006b67e, 0xf50464b6, 0xbb008711, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, 0x00060d7e, 0xf40464b6, 0x5bcb6711, 0x0076bbe0, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x597e50fc, 0x64b60005, 0xbd5bb204, 0x410ef474, /* 0x0830: i2c_recv_not_rd08 */ 0xf401d6b0, 0x00053b1b, 0x0006b67e, 0xc73211f4, 0x5c7ee0c5, 0x11f40006, 0x7e000528, 0xf40006b6, 0xb5c71f11, 0x065c7ee0, 0x1511f400, 0x0005597e, 0xc5c774bd, 0x091bf408, 0xf40232f4, /* 0x086e: i2c_recv_not_wr08 */ /* 0x086e: i2c_recv_done */ 0xcec7030e, 0x071a7ef8, 0xfce0fc00, 0x0912f4d0, 0x577e7cb2, /* 0x0882: i2c_recv_exit */ 0x00f80002, /* 0x0884: i2c_init */ /* 0x0886: test_recv */ 0x584100f8, 0xb600065c, 0x11f40464, 0xe05bcb67, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, 0x05a87e50, 0x0464b600, 0x74bd5bb2, /* 0x087f: i2c_recv_not_rd08 */ 0xb0410ef4, 0x1bf401d6, 0x7e00053b, 0xf4000705, 0xc5c73211, 0x06ab7ee0, 0x2811f400, 0x057e0005, 0x11f40007, 0xe0b5c71f, 0x0006ab7e, 0x7e1511f4, 0xbd0005a8, 0x08c5c774, 0xf4091bf4, 0x0ef40232, /* 0x08bd: i2c_recv_not_wr08 */ /* 0x08bd: i2c_recv_done */ 0xf8cec703, 0x0007697e, 0xd0fce0fc, 0xb20912f4, 0x02577e7c, /* 0x08d1: i2c_recv_exit */ /* 0x08d3: i2c_init */ 0xf800f800, /* 0x08d5: test_recv */ 0x04584100, 0xb60011cf, 0x58400110, 0x0001f604, 0xe7f104bd, 0xe3f1d900, 0x967e134f, 0x00f80001, /* 0x08f4: test_init */ 0x7e08004e, 0xf8000196, /* 0x08fd: idle_recv */ /* 0x08ff: idle */ 0xf400f800, 0x54410031, 0x0011cf04, 0x400110b6, 0x01f60458, 0xf104bd00, 0xf1d900e7, 0x7e134fe3, 0xf8000196, /* 0x08a5: test_init */ 0x08004e00, 0x0001967e, /* 0x08ae: idle_recv */ 0x00f800f8, /* 0x08b0: idle */ 0x410031f4, 0x11cf0454, 0x0110b600, 0xf6045440, 0x04bd0001, /* 0x08c4: idle_loop */ 0x32f45801, /* 0x08c9: idle_proc */ /* 0x08c9: idle_proc_exec */ 0xb210f902, 0x02607e1e, 0xf410fc00, 0x31f40911, 0xf00ef402, /* 0x08dc: idle_proc_next */ 0xa65810b6, 0xe81bf41f, 0xf4e002f4, 0x0ef40028, 0x000000c6, 0x01f60454, /* 0x0913: idle_loop */ 0x0104bd00, 0x0232f458, /* 0x0918: idle_proc */ /* 0x0918: idle_proc_exec */ 0x1eb210f9, 0x0002607e, 0x11f410fc, 0x0231f409, /* 0x092b: idle_proc_next */ 0xb6f00ef4, 0x1fa65810, 0xf4e81bf4, 0x28f4e002, 0xc60ef400, 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, Loading drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nva3.fuc +3 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ .section #nva3_pwr_data #define INCLUDE_PROC #include "kernel.fuc" #include "arith.fuc" #include "host.fuc" #include "memx.fuc" #include "perf.fuc" Loading @@ -44,6 +45,7 @@ #define INCLUDE_DATA #include "kernel.fuc" #include "arith.fuc" #include "host.fuc" #include "memx.fuc" #include "perf.fuc" Loading @@ -56,6 +58,7 @@ .section #nva3_pwr_code #define INCLUDE_CODE #include "kernel.fuc" #include "arith.fuc" #include "host.fuc" #include "memx.fuc" #include "perf.fuc" Loading Loading
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/arith.fuc 0 → 100644 +94 −0 Original line number Diff line number Diff line /* * Copyright 2014 Martin Peres <martin.peres@free.fr> * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the folloing conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. * * Authors: Martin Peres */ /****************************************************************************** * arith data segment *****************************************************************************/ #ifdef INCLUDE_PROC #endif #ifdef INCLUDE_DATA #endif /****************************************************************************** * arith code segment *****************************************************************************/ #ifdef INCLUDE_CODE // does a 32x32 -> 64 multiplication // // A * B = A_lo * B_lo // + ( A_hi * B_lo ) << 16 // + ( A_lo * B_hi ) << 16 // + ( A_hi * B_hi ) << 32 // // $r15 - current // $r14 - A // $r13 - B // $r12 - mul_lo (return) // $r11 - mul_hi (return) // $r0 - zero mulu32_32_64: push $r1 // A_hi push $r2 // B_hi push $r3 // tmp0 push $r4 // tmp1 shr b32 $r1 $r14 16 shr b32 $r2 $r13 16 clear b32 $r12 clear b32 $r11 // A_lo * B_lo mulu $r12 $r14 $r13 // ( A_hi * B_lo ) << 16 mulu $r3 $r1 $r13 // tmp0 = A_hi * B_lo mov b32 $r4 $r3 and $r3 0xffff // tmp0 = tmp0_lo shl b32 $r3 16 shr b32 $r4 16 // tmp1 = tmp0_hi add b32 $r12 $r3 adc b32 $r11 $r4 // ( A_lo * B_hi ) << 16 mulu $r3 $r14 $r2 // tmp0 = A_lo * B_hi mov b32 $r4 $r3 and $r3 0xffff // tmp0 = tmp0_lo shl b32 $r3 16 shr b32 $r4 16 // tmp1 = tmp0_hi add b32 $r12 $r3 adc b32 $r11 $r4 // ( A_hi * B_hi ) << 32 mulu $r3 $r1 $r2 // tmp0 = A_hi * B_hi add b32 $r11 $r3 pop $r4 pop $r3 pop $r2 pop $r1 ret #endif
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/macros.fuc +10 −0 Original line number Diff line number Diff line Loading @@ -250,3 +250,13 @@ */ st b32 D[$r0] reg /* */ clear b32 $r0 #endif // does a 64+64 -> 64 unsigned addition (C = A + B) #define addu64(reg_a_c_hi, reg_a_c_lo, b_hi, b_lo) /* */ add b32 reg_a_c_lo b_lo /* */ adc b32 reg_a_c_hi b_hi // does a 64+64 -> 64 substraction (C = A - B) #define subu64(reg_a_c_hi, reg_a_c_lo, b_hi, b_lo) /* */ sub b32 reg_a_c_lo b_lo /* */ sbb b32 reg_a_c_hi b_hi
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nv108.fuc +3 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ .section #nv108_pwr_data #define INCLUDE_PROC #include "kernel.fuc" #include "arith.fuc" #include "host.fuc" #include "memx.fuc" #include "perf.fuc" Loading @@ -44,6 +45,7 @@ #define INCLUDE_DATA #include "kernel.fuc" #include "arith.fuc" #include "host.fuc" #include "memx.fuc" #include "perf.fuc" Loading @@ -56,6 +58,7 @@ .section #nv108_pwr_code #define INCLUDE_CODE #include "kernel.fuc" #include "arith.fuc" #include "host.fuc" #include "memx.fuc" #include "perf.fuc" Loading
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nv108.fuc.h +470 −405 Original line number Diff line number Diff line Loading @@ -24,8 +24,8 @@ uint32_t nv108_pwr_data[] = { 0x00000000, /* 0x0058: proc_list_head */ 0x54534f48, 0x000003e0, 0x00000391, 0x00000342, 0x00000000, 0x00000000, 0x00000000, Loading @@ -46,8 +46,8 @@ uint32_t nv108_pwr_data[] = { 0x00000000, 0x00000000, 0x584d454d, 0x0000047c, 0x0000046e, 0x000004cb, 0x000004bd, 0x00000000, 0x00000000, 0x00000000, Loading @@ -68,8 +68,8 @@ uint32_t nv108_pwr_data[] = { 0x00000000, 0x00000000, 0x46524550, 0x00000480, 0x0000047e, 0x000004cf, 0x000004cd, 0x00000000, 0x00000000, 0x00000000, Loading @@ -90,8 +90,8 @@ uint32_t nv108_pwr_data[] = { 0x00000000, 0x00000000, 0x5f433249, 0x00000884, 0x0000072b, 0x000008d3, 0x0000077a, 0x00000000, 0x00000000, 0x00000000, Loading @@ -112,8 +112,8 @@ uint32_t nv108_pwr_data[] = { 0x00000000, 0x00000000, 0x54534554, 0x000008a5, 0x00000886, 0x000008f4, 0x000008d5, 0x00000000, 0x00000000, 0x00000000, Loading @@ -134,8 +134,8 @@ uint32_t nv108_pwr_data[] = { 0x00000000, 0x00000000, 0x454c4449, 0x000008b0, 0x000008ae, 0x000008ff, 0x000008fd, 0x00000000, 0x00000000, 0x00000000, Loading Loading @@ -229,20 +229,20 @@ uint32_t nv108_pwr_data[] = { /* 0x0370: memx_func_head */ 0x00010000, 0x00000000, 0x000003c1, 0x00000410, /* 0x037c: memx_func_next */ 0x00000001, 0x00000000, 0x000003df, 0x0000042e, 0x00000002, 0x00000002, 0x000003f7, 0x00000446, 0x00040003, 0x00000000, 0x00000414, 0x00000463, 0x00010004, 0x00000000, 0x0000042e, 0x0000047d, /* 0x03ac: memx_func_tail */ /* 0x03ac: memx_data_head */ 0x00000000, Loading Loading @@ -1010,449 +1010,514 @@ uint32_t nv108_pwr_code[] = { 0xfa0bf400, 0xf0b615f9, 0xf20ef458, /* 0x0304: host_send */ 0xcf04b041, 0xa0420011, 0x0022cf04, /* 0x0304: mulu32_32_64 */ 0x20f910f9, 0x40f930f9, 0x9510e195, 0xc4bd10d2, 0xedffb4bd, 0x301dffc0, 0x34f134b2, 0x34b6ffff, 0x1045b610, 0xbb00c3bb, 0xe2ff01b4, 0xf134b230, 0xb6ffff34, 0x45b61034, 0x00c3bb10, 0xff01b4bb, 0xb3bb3012, 0xfc40fc00, 0xfc20fc30, /* 0x0353: host_send */ 0x4100f810, 0x11cf04b0, 0x04a04200, 0xa60022cf, 0x2e0bf412, 0x94071ec4, 0xe0b704ee, 0xeb980270, 0x02ec9803, 0x9801ed98, 0x577e00ee, 0x10b60002, 0x0f1ec401, 0xf604b040, 0x04bd000e, /* 0x038f: host_send_done */ 0xf8c70ef4, /* 0x0391: host_recv */ 0x4e494100, 0x525413f1, 0x0bf4e1a6, /* 0x039d: host_recv_wait */ 0x04cc41b9, 0x420011cf, 0x22cf04c8, 0x0816f000, 0x0bf412a6, 0x071ec42e, 0xb704ee94, 0x980270e0, 0xec9803eb, 0x01ed9802, 0x7e00ee98, 0xb6000257, 0x1ec40110, 0x04b0400f, 0xbd000ef6, 0xc70ef404, /* 0x0340: host_send_done */ /* 0x0342: host_recv */ 0x494100f8, 0x5413f14e, 0xf4e1a652, /* 0x034e: host_recv_wait */ 0xcc41b90b, 0x0011cf04, 0xcf04c842, 0x16f00022, 0xf412a608, 0x23c4ef0b, 0x0434b607, 0x02f030b7, 0xb5033bb5, 0x3db5023c, 0x003eb501, 0xf00120b6, 0xc8400f24, 0x0002f604, 0x400204bd, 0x02f60000, 0xf804bd00, /* 0x0391: host_init */ 0x00804100, 0xf11014b6, 0x40027015, 0x01f604d0, 0x4104bd00, 0x14b60080, 0xf015f110, 0x04dc4002, 0xbd0001f6, 0x40010104, 0x01f604c4, 0xf804bd00, /* 0x03c1: memx_func_enter */ 0x40040600, 0x06f607e0, /* 0x03cb: memx_func_enter_wait */ 0x4604bd00, 0x66cf07c0, 0x0464f000, 0x98f70bf4, 0x10b60016, /* 0x03df: memx_func_leave */ 0x0600f804, 0x07e44004, 0xbd0006f6, /* 0x03e9: memx_func_leave_wait */ 0x07c04604, 0xf00066cf, 0x1bf40464, /* 0x03f7: memx_func_wr32 */ 0x9800f8f7, 0x15980016, 0x0810b601, 0x50f960f9, 0xe0fcd0fc, 0x00002e7e, 0xf40242b6, 0x00f8e81b, /* 0x0414: memx_func_wait */ 0x88cf2c08, 0x001e9800, 0x98011d98, 0x1b98021c, 0x1010b603, 0x0000717e, /* 0x042e: memx_func_delay */ 0x1e9800f8, 0x0410b600, 0x00005d7e, /* 0x043a: memx_exec */ 0xe0f900f8, 0xc1b2d0f9, /* 0x0442: memx_exec_next */ 0x1398b2b2, 0x0410b600, 0xf0103495, 0x35980c30, 0xa655f9de, 0xed1ef412, 0xe0fcd0fc, 0x0002577e, /* 0x0462: memx_info */ 0xac4c00f8, 0x08004b03, 0x0002577e, /* 0x046e: memx_recv */ 0xd6b000f8, 0xc90bf401, 0xf400d6b0, 0x00f8eb0b, /* 0x047c: memx_init */ /* 0x047e: perf_recv */ 0x00f800f8, /* 0x0480: perf_init */ /* 0x0482: i2c_drive_scl */ 0x36b000f8, 0x0d0bf400, 0xf607e040, 0x04bd0001, /* 0x0492: i2c_drive_scl_lo */ 0xe44000f8, 0x0001f607, 0x0723c4ef, 0xb70434b6, 0xb502f030, 0x3cb5033b, 0x013db502, 0xb6003eb5, 0x24f00120, 0x04c8400f, 0xbd0002f6, 0x00400204, 0x0002f600, 0x00f804bd, /* 0x049c: i2c_drive_sda */ 0xf40036b0, 0xe0400d0b, 0x0002f607, /* 0x03e0: host_init */ 0xb6008041, 0x15f11014, 0xd0400270, 0x0001f604, 0x804104bd, 0x1014b600, 0x02f015f1, 0xf604dc40, 0x04bd0001, 0xc4400101, 0x0001f604, 0x00f804bd, /* 0x04ac: i2c_drive_sda_lo */ /* 0x0410: memx_func_enter */ 0xe0400406, 0x0006f607, /* 0x041a: memx_func_enter_wait */ 0xc04604bd, 0x0066cf07, 0xf40464f0, 0x1698f70b, 0x0410b600, /* 0x042e: memx_func_leave */ 0x040600f8, 0xf607e440, 0x04bd0002, /* 0x04b6: i2c_sense_scl */ 0x32f400f8, 0x07c44301, 0xfd0033cf, 0x0bf40431, 0x0131f406, /* 0x04c8: i2c_sense_scl_done */ /* 0x04ca: i2c_sense_sda */ 0x32f400f8, 0x07c44301, 0xfd0033cf, 0x0bf40432, 0x0131f406, /* 0x04dc: i2c_sense_sda_done */ /* 0x04de: i2c_raise_scl */ 0x40f900f8, 0x03089844, 0x04827e01, /* 0x04e9: i2c_raise_scl_wait */ 0x03e84e00, 0x04bd0006, /* 0x0438: memx_func_leave_wait */ 0xcf07c046, 0x64f00066, 0xf71bf404, /* 0x0446: memx_func_wr32 */ 0x169800f8, 0x01159800, 0xf90810b6, 0xfc50f960, 0x7ee0fcd0, 0xb600002e, 0x1bf40242, /* 0x0463: memx_func_wait */ 0x0800f8e8, 0x0088cf2c, 0x98001e98, 0x1c98011d, 0x031b9802, 0x7e1010b6, 0xf8000071, /* 0x047d: memx_func_delay */ 0x001e9800, 0x7e0410b6, 0xf800005d, /* 0x0489: memx_exec */ 0xf9e0f900, 0xb2c1b2d0, /* 0x0491: memx_exec_next */ 0x001398b2, 0x950410b6, 0x30f01034, 0xde35980c, 0x12a655f9, 0xfced1ef4, 0x7ee0fcd0, 0xf8000257, /* 0x04b1: memx_info */ 0x03ac4c00, 0x7e08004b, 0xf8000257, /* 0x04bd: memx_recv */ 0x01d6b000, 0xb0c90bf4, 0x0bf400d6, /* 0x04cb: memx_init */ 0xf800f8eb, /* 0x04cd: perf_recv */ /* 0x04cf: perf_init */ 0xf800f800, /* 0x04d1: i2c_drive_scl */ 0x0036b000, 0x400d0bf4, 0x01f607e0, 0xf804bd00, /* 0x04e1: i2c_drive_scl_lo */ 0x07e44000, 0xbd0001f6, /* 0x04eb: i2c_drive_sda */ 0xb000f804, 0x0bf40036, 0x07e0400d, 0xbd0002f6, /* 0x04fb: i2c_drive_sda_lo */ 0x4000f804, 0x02f607e4, 0xf804bd00, /* 0x0505: i2c_sense_scl */ 0x0132f400, 0xcf07c443, 0x31fd0033, 0x060bf404, /* 0x0517: i2c_sense_scl_done */ 0xf80131f4, /* 0x0519: i2c_sense_sda */ 0x0132f400, 0xcf07c443, 0x32fd0033, 0x060bf404, /* 0x052b: i2c_sense_sda_done */ 0xf80131f4, /* 0x052d: i2c_raise_scl */ 0x4440f900, 0x01030898, 0x0004d17e, /* 0x0538: i2c_raise_scl_wait */ 0x7e03e84e, 0x7e00005d, 0xf4000505, 0x42b60901, 0xef1bf401, /* 0x054c: i2c_raise_scl_done */ 0x00f840fc, /* 0x0550: i2c_start */ 0x0005057e, 0x7e0d11f4, 0xf4000519, 0x0ef40611, /* 0x0561: i2c_start_rep */ 0x7e00032e, 0x030004d1, 0x04eb7e01, 0x0076bb00, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x2d7e50fc, 0x64b60005, 0x1d11f404, /* 0x058c: i2c_start_send */ 0xeb7e0003, 0x884e0004, 0x005d7e13, 0x7e000300, 0x4e0004d1, 0x5d7e1388, /* 0x05a6: i2c_start_out */ 0x00f80000, /* 0x05a8: i2c_stop */ 0xd17e0003, 0x00030004, 0x0004eb7e, 0x7e03e84e, 0x0300005d, 0x04d17e01, 0x13884e00, 0x00005d7e, 0x0004b67e, 0xb60901f4, 0x1bf40142, /* 0x04fd: i2c_raise_scl_done */ 0xf840fcef, /* 0x0501: i2c_start */ 0x04b67e00, 0x0d11f400, 0x0004ca7e, 0xf40611f4, /* 0x0512: i2c_start_rep */ 0x00032e0e, 0x0004827e, 0x9c7e0103, 0x76bb0004, 0xeb7e0103, 0x884e0004, 0x005d7e13, /* 0x05d7: i2c_bitw */ 0x7e00f800, 0x4e0004eb, 0x5d7e03e8, 0x76bb0000, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0x7e50fc04, 0xb60004de, 0xb600052d, 0x11f40464, /* 0x053d: i2c_start_send */ 0x7e00031d, 0x4e00049c, 0x5d7e1388, 0x00030000, 0x0004827e, 0x7e13884e, /* 0x0557: i2c_start_out */ 0xf800005d, /* 0x0559: i2c_stop */ 0x7e000300, 0x03000482, 0x049c7e00, 0x03e84e00, 0x13884e17, 0x00005d7e, 0x827e0103, 0xd17e0003, 0x884e0004, 0x005d7e13, 0x7e010300, 0x4e00049c, 0x5d7e1388, 0x00f80000, /* 0x0588: i2c_bitw */ 0x00049c7e, 0x7e03e84e, 0xbb00005d, /* 0x0615: i2c_bitw_out */ /* 0x0617: i2c_bitr */ 0x0300f800, 0x04eb7e01, 0x03e84e00, 0x00005d7e, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, 0x052d7e50, 0x0464b600, 0x7e1a11f4, 0x03000519, 0x04d17e00, 0x13884e00, 0x00005d7e, 0xf4013cf0, /* 0x065a: i2c_bitr_done */ 0x00f80131, /* 0x065c: i2c_get_byte */ 0x08040005, /* 0x0660: i2c_get_byte_next */ 0xbb0154b6, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, 0x0004de7e, 0x0006177e, 0xf40464b6, 0x884e1711, 0x005d7e13, 0x7e000300, 0x4e000482, 0x5d7e1388, /* 0x05c6: i2c_bitw_out */ 0x00f80000, /* 0x05c8: i2c_bitr */ 0x9c7e0103, 0xe84e0004, 0x005d7e03, 0x0076bb00, 0x53fd2a11, 0x0142b605, 0x03d81bf4, 0x0076bb01, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0xde7e50fc, 0x64b60004, 0x1a11f404, 0x0004ca7e, 0x827e0003, 0x884e0004, 0x005d7e13, 0x013cf000, /* 0x060b: i2c_bitr_done */ 0xf80131f4, /* 0x060d: i2c_get_byte */ 0x04000500, /* 0x0611: i2c_get_byte_next */ 0x0154b608, 0xd77e50fc, 0x64b60005, /* 0x06a9: i2c_get_byte_done */ /* 0x06ab: i2c_put_byte */ 0x0400f804, /* 0x06ad: i2c_put_byte_next */ 0x0142b608, 0xbb3854ff, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, 0x0005d77e, 0xf40464b6, 0x46b03411, 0xd81bf400, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, 0x05c87e50, 0x06177e50, 0x0464b600, 0xfd2a11f4, 0x42b60553, 0xd81bf401, 0x76bb0103, 0xbb0f11f4, 0x36b00076, 0x061bf401, /* 0x0703: i2c_put_byte_done */ 0xf80132f4, /* 0x0705: i2c_addr */ 0x0076bb00, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x507e50fc, 0x64b60005, 0x2911f404, 0x012ec3e7, 0xfd0134b6, 0x76bb0553, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0x7e50fc04, 0xb6000588, /* 0x065a: i2c_get_byte_done */ 0xb60006ab, /* 0x074a: i2c_addr_done */ 0x00f80464, /* 0x065c: i2c_put_byte */ /* 0x065e: i2c_put_byte_next */ 0x42b60804, 0x3854ff01, /* 0x074c: i2c_acquire_addr */ 0xb6f8cec7, 0xe0b705e4, 0x00f8d014, /* 0x0758: i2c_acquire */ 0x00074c7e, 0x0000047e, 0x7e03d9f0, 0xf800002e, /* 0x0769: i2c_release */ 0x074c7e00, 0x00047e00, 0x03daf000, 0x00002e7e, /* 0x077a: i2c_recv */ 0x32f400f8, 0xf8c1c701, 0xb00214b6, 0x1ff52816, 0x13b80137, 0x98000bd4, 0x13b80032, 0x98000bac, 0x31f40031, 0xf9d0f902, 0xf1d0f9e0, 0xf1000067, 0x92100063, 0x76bb0167, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0x7e50fc04, 0xb6000758, 0xd0fc0464, 0xf500d6b0, 0x0500b01b, 0x0076bb00, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x057e50fc, 0x64b60007, 0xcc11f504, 0xe0c5c700, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, 0x05887e50, 0x06ab7e50, 0x0464b600, 0xb03411f4, 0x1bf40046, 0x0076bbd8, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0xc87e50fc, 0x64b60005, 0x0f11f404, 0xb00076bb, 0x1bf40136, 0x0132f406, /* 0x06b4: i2c_put_byte_done */ /* 0x06b6: i2c_addr */ 0x76bb00f8, 0x00a911f5, 0x76bb0105, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0x7e50fc04, 0xb6000501, 0x11f40464, 0x2ec3e729, 0x0134b601, 0xbb0553fd, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, 0x00065c7e, /* 0x06fb: i2c_addr_done */ 0xf80464b6, /* 0x06fd: i2c_acquire_addr */ 0xf8cec700, 0xb705e4b6, 0xf8d014e0, /* 0x0709: i2c_acquire */ 0x06fd7e00, 0x00047e00, 0x03d9f000, 0x00002e7e, /* 0x071a: i2c_release */ 0xfd7e00f8, 0x047e0006, 0xdaf00000, 0x002e7e03, /* 0x072b: i2c_recv */ 0xf400f800, 0xc1c70132, 0x0214b6f8, 0xf52816b0, 0xb801371f, 0x000bd413, 0xb8003298, 0x000bac13, 0xf4003198, 0xd0f90231, 0xd0f9e0f9, 0x000067f1, 0x100063f1, 0xbb016792, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, 0x0007097e, 0xfc0464b6, 0x00d6b0d0, 0x00b01bf5, 0x76bb0005, 0xb6000705, 0x11f50464, 0x76bb0087, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0x7e50fc04, 0xb60006b6, 0x11f50464, 0xc5c700cc, 0x0076bbe0, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x5c7e50fc, 0x64b60006, 0xa911f504, 0xbb010500, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, 0x0006b67e, 0xf50464b6, 0xbb008711, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, 0x00060d7e, 0xf40464b6, 0x5bcb6711, 0x0076bbe0, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x597e50fc, 0x64b60005, 0xbd5bb204, 0x410ef474, /* 0x0830: i2c_recv_not_rd08 */ 0xf401d6b0, 0x00053b1b, 0x0006b67e, 0xc73211f4, 0x5c7ee0c5, 0x11f40006, 0x7e000528, 0xf40006b6, 0xb5c71f11, 0x065c7ee0, 0x1511f400, 0x0005597e, 0xc5c774bd, 0x091bf408, 0xf40232f4, /* 0x086e: i2c_recv_not_wr08 */ /* 0x086e: i2c_recv_done */ 0xcec7030e, 0x071a7ef8, 0xfce0fc00, 0x0912f4d0, 0x577e7cb2, /* 0x0882: i2c_recv_exit */ 0x00f80002, /* 0x0884: i2c_init */ /* 0x0886: test_recv */ 0x584100f8, 0xb600065c, 0x11f40464, 0xe05bcb67, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, 0x05a87e50, 0x0464b600, 0x74bd5bb2, /* 0x087f: i2c_recv_not_rd08 */ 0xb0410ef4, 0x1bf401d6, 0x7e00053b, 0xf4000705, 0xc5c73211, 0x06ab7ee0, 0x2811f400, 0x057e0005, 0x11f40007, 0xe0b5c71f, 0x0006ab7e, 0x7e1511f4, 0xbd0005a8, 0x08c5c774, 0xf4091bf4, 0x0ef40232, /* 0x08bd: i2c_recv_not_wr08 */ /* 0x08bd: i2c_recv_done */ 0xf8cec703, 0x0007697e, 0xd0fce0fc, 0xb20912f4, 0x02577e7c, /* 0x08d1: i2c_recv_exit */ /* 0x08d3: i2c_init */ 0xf800f800, /* 0x08d5: test_recv */ 0x04584100, 0xb60011cf, 0x58400110, 0x0001f604, 0xe7f104bd, 0xe3f1d900, 0x967e134f, 0x00f80001, /* 0x08f4: test_init */ 0x7e08004e, 0xf8000196, /* 0x08fd: idle_recv */ /* 0x08ff: idle */ 0xf400f800, 0x54410031, 0x0011cf04, 0x400110b6, 0x01f60458, 0xf104bd00, 0xf1d900e7, 0x7e134fe3, 0xf8000196, /* 0x08a5: test_init */ 0x08004e00, 0x0001967e, /* 0x08ae: idle_recv */ 0x00f800f8, /* 0x08b0: idle */ 0x410031f4, 0x11cf0454, 0x0110b600, 0xf6045440, 0x04bd0001, /* 0x08c4: idle_loop */ 0x32f45801, /* 0x08c9: idle_proc */ /* 0x08c9: idle_proc_exec */ 0xb210f902, 0x02607e1e, 0xf410fc00, 0x31f40911, 0xf00ef402, /* 0x08dc: idle_proc_next */ 0xa65810b6, 0xe81bf41f, 0xf4e002f4, 0x0ef40028, 0x000000c6, 0x01f60454, /* 0x0913: idle_loop */ 0x0104bd00, 0x0232f458, /* 0x0918: idle_proc */ /* 0x0918: idle_proc_exec */ 0x1eb210f9, 0x0002607e, 0x11f410fc, 0x0231f409, /* 0x092b: idle_proc_next */ 0xb6f00ef4, 0x1fa65810, 0xf4e81bf4, 0x28f4e002, 0xc60ef400, 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, Loading
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nva3.fuc +3 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ .section #nva3_pwr_data #define INCLUDE_PROC #include "kernel.fuc" #include "arith.fuc" #include "host.fuc" #include "memx.fuc" #include "perf.fuc" Loading @@ -44,6 +45,7 @@ #define INCLUDE_DATA #include "kernel.fuc" #include "arith.fuc" #include "host.fuc" #include "memx.fuc" #include "perf.fuc" Loading @@ -56,6 +58,7 @@ .section #nva3_pwr_code #define INCLUDE_CODE #include "kernel.fuc" #include "arith.fuc" #include "host.fuc" #include "memx.fuc" #include "perf.fuc" Loading