drm/nva3/pwr/memx: Implement "wait for VBLANK"
authorRoy Spliet <rspliet@eclipso.eu>
Thu, 4 Sep 2014 14:58:49 +0000 (16:58 +0200)
committerBen Skeggs <bskeggs@redhat.com>
Mon, 15 Sep 2014 12:25:03 +0000 (22:25 +1000)
Signed-off-by: Roy Spliet <rspliet@eclipso.eu>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/core/include/subdev/pwr.h
drivers/gpu/drm/nouveau/core/subdev/fb/ramfuc.h
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/memx.fuc
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nv108.fuc.h
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nva3.fuc.h
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvc0.fuc.h
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvd0.fuc.h
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/os.h
drivers/gpu/drm/nouveau/core/subdev/pwr/memx.c

index f73feec151db453eb8160fba6263dd7999e808fe..209e2e42b3a5263d67916d08b99d06c84d9f1d74 100644 (file)
@@ -47,5 +47,6 @@ void nouveau_memx_wr32(struct nouveau_memx *, u32 addr, u32 data);
 void nouveau_memx_wait(struct nouveau_memx *,
                       u32 addr, u32 mask, u32 data, u32 nsec);
 void nouveau_memx_nsec(struct nouveau_memx *, u32 nsec);
+void nouveau_memx_wait_vblank(struct nouveau_memx *);
 
 #endif
index 2af9cfd2c60fd7667b54037fa9254224b065bd50..76290bb4bf07a3cdfdb2022fda3b42f4c682ec9c 100644 (file)
@@ -105,14 +105,21 @@ ramfuc_nsec(struct ramfuc *ram, u32 nsec)
        nouveau_memx_nsec(ram->memx, nsec);
 }
 
-#define ram_init(s,p)       ramfuc_init(&(s)->base, (p))
-#define ram_exec(s,e)       ramfuc_exec(&(s)->base, (e))
-#define ram_have(s,r)       ((s)->r_##r.addr[0] != 0x000000)
-#define ram_rd32(s,r)       ramfuc_rd32(&(s)->base, &(s)->r_##r)
-#define ram_wr32(s,r,d)     ramfuc_wr32(&(s)->base, &(s)->r_##r, (d))
-#define ram_nuke(s,r)       ramfuc_nuke(&(s)->base, &(s)->r_##r)
-#define ram_mask(s,r,m,d)   ramfuc_mask(&(s)->base, &(s)->r_##r, (m), (d))
-#define ram_wait(s,r,m,d,n) ramfuc_wait(&(s)->base, (r), (m), (d), (n))
-#define ram_nsec(s,n)       ramfuc_nsec(&(s)->base, (n))
+static inline void
+ramfuc_wait_vblank(struct ramfuc *ram)
+{
+       nouveau_memx_wait_vblank(ram->memx);
+}
+
+#define ram_init(s,p)        ramfuc_init(&(s)->base, (p))
+#define ram_exec(s,e)        ramfuc_exec(&(s)->base, (e))
+#define ram_have(s,r)        ((s)->r_##r.addr[0] != 0x000000)
+#define ram_rd32(s,r)        ramfuc_rd32(&(s)->base, &(s)->r_##r)
+#define ram_wr32(s,r,d)      ramfuc_wr32(&(s)->base, &(s)->r_##r, (d))
+#define ram_nuke(s,r)        ramfuc_nuke(&(s)->base, &(s)->r_##r)
+#define ram_mask(s,r,m,d)    ramfuc_mask(&(s)->base, &(s)->r_##r, (m), (d))
+#define ram_wait(s,r,m,d,n)  ramfuc_wait(&(s)->base, (r), (m), (d), (n))
+#define ram_nsec(s,n)        ramfuc_nsec(&(s)->base, (n))
+#define ram_wait_vblank(s)   ramfuc_wait_vblank(&(s)->base)
 
 #endif
index d43741eccb11b66fd4106e233199c77516f0706b..228ee0d8194e50b34d6fe0c18c2c622ff28091a8 100644 (file)
@@ -43,12 +43,13 @@ process(PROC_MEMX, #memx_init, #memx_recv)
 */     .b32 func
 
 memx_func_head:
-handler(ENTER , 0x0001, 0x0000, #memx_func_enter)
+handler(ENTER , 0x0000, 0x0000, #memx_func_enter)
 memx_func_next:
 handler(LEAVE , 0x0000, 0x0000, #memx_func_leave)
 handler(WR32  , 0x0000, 0x0002, #memx_func_wr32)
 handler(WAIT  , 0x0004, 0x0000, #memx_func_wait)
 handler(DELAY , 0x0001, 0x0000, #memx_func_delay)
+handler(VBLANK, 0x0001, 0x0000, #memx_func_wait_vblank)
 memx_func_tail:
 
 .equ #memx_func_size #memx_func_next - #memx_func_head
@@ -67,7 +68,6 @@ memx_data_tail:
 //
 // $r15 - current (memx)
 // $r4  - packet length
-//     +00: bitmask of heads to wait for vblank on
 // $r3  - opcode desciption
 // $r0  - zero
 memx_func_enter:
@@ -77,9 +77,7 @@ memx_func_enter:
                nv_iord($r6, NV_PPWR_OUTPUT)
                and $r6 NV_PPWR_OUTPUT_FB_PAUSE
                bra z #memx_func_enter_wait
-       //XXX: TODO
-       ld b32 $r6 D[$r1 + 0x00]
-       add b32 $r1 0x04
+
        ret
 
 // description
@@ -97,6 +95,58 @@ memx_func_leave:
                bra nz #memx_func_leave_wait
        ret
 
+#if NVKM_PPWR_CHIPSET < GF119
+// description
+//
+// $r15 - current (memx)
+// $r4  - packet length
+//     +00: head to wait for vblank on
+// $r3  - opcode desciption
+// $r0  - zero
+memx_func_wait_vblank:
+       ld b32 $r6 D[$r1 + 0x00]
+       cmp b32 $r6 0x0
+       bra z #memx_func_wait_vblank_head0
+       cmp b32 $r6 0x1
+       bra z #memx_func_wait_vblank_head1
+       bra #memx_func_wait_vblank_fini
+
+       memx_func_wait_vblank_head1:
+       movw $r7 0x20
+       bra #memx_func_wait_vblank_0
+
+       memx_func_wait_vblank_head0:
+       movw $r7 0x8
+
+       memx_func_wait_vblank_0:
+               nv_iord($r6, NV_PPWR_INPUT)
+               and $r6 $r7
+               bra nz #memx_func_wait_vblank_0
+
+       memx_func_wait_vblank_1:
+               nv_iord($r6, NV_PPWR_INPUT)
+               and $r6 $r7
+               bra z #memx_func_wait_vblank_1
+
+       memx_func_wait_vblank_fini:
+       add b32 $r1 0x4
+       ret
+
+#else
+
+// XXX: currently no-op
+//
+// $r15 - current (memx)
+// $r4  - packet length
+//     +00: head to wait for vblank on
+// $r3  - opcode desciption
+// $r0  - zero
+memx_func_wait_vblank:
+       add b32 $r1 0x4
+       ret
+
+#endif
+
 // description
 //
 // $r15 - current (memx)
index a9d8ba63df64a7507e5683485806f4f0c38bb65b..6d8701cce9b5b0b396ec6f59af4ab42e43ebaa9f 100644 (file)
@@ -46,8 +46,8 @@ uint32_t nv108_pwr_data[] = {
        0x00000000,
        0x00000000,
        0x584d454d,
-       0x0000053e,
-       0x00000530,
+       0x0000053d,
+       0x0000052f,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -68,8 +68,8 @@ uint32_t nv108_pwr_data[] = {
        0x00000000,
        0x00000000,
        0x46524550,
-       0x00000542,
-       0x00000540,
+       0x00000541,
+       0x0000053f,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -90,8 +90,8 @@ uint32_t nv108_pwr_data[] = {
        0x00000000,
        0x00000000,
        0x5f433249,
-       0x00000946,
-       0x000007ed,
+       0x00000945,
+       0x000007ec,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -112,8 +112,8 @@ uint32_t nv108_pwr_data[] = {
        0x00000000,
        0x00000000,
        0x54534554,
-       0x00000967,
-       0x00000948,
+       0x00000966,
+       0x00000947,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -134,8 +134,8 @@ uint32_t nv108_pwr_data[] = {
        0x00000000,
        0x00000000,
        0x454c4449,
-       0x00000972,
-       0x00000970,
+       0x00000971,
+       0x0000096f,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -227,24 +227,27 @@ uint32_t nv108_pwr_data[] = {
        0x00000000,
        0x00000000,
 /* 0x0370: memx_func_head */
-       0x00010000,
+       0x00000000,
        0x00000000,
        0x00000483,
 /* 0x037c: memx_func_next */
        0x00000001,
        0x00000000,
-       0x000004a1,
+       0x0000049b,
        0x00000002,
        0x00000002,
-       0x000004b9,
+       0x000004b8,
        0x00040003,
        0x00000000,
-       0x000004d6,
+       0x000004d5,
        0x00010004,
        0x00000000,
-       0x000004f0,
-/* 0x03ac: memx_func_tail */
-/* 0x03ac: memx_data_head */
+       0x000004ef,
+       0x00010005,
+       0x00000000,
+       0x000004b3,
+/* 0x03b8: memx_func_tail */
+/* 0x03b8: memx_data_head */
        0x00000000,
        0x00000000,
        0x00000000,
@@ -757,8 +760,8 @@ uint32_t nv108_pwr_data[] = {
        0x00000000,
        0x00000000,
        0x00000000,
-/* 0x0bac: memx_data_tail */
-/* 0x0bac: i2c_scl_map */
+/* 0x0bb8: memx_data_tail */
+/* 0x0bb8: i2c_scl_map */
        0x00000400,
        0x00000800,
        0x00001000,
@@ -769,7 +772,7 @@ uint32_t nv108_pwr_data[] = {
        0x00020000,
        0x00040000,
        0x00080000,
-/* 0x0bd4: i2c_sda_map */
+/* 0x0be0: i2c_sda_map */
        0x00100000,
        0x00200000,
        0x00400000,
@@ -781,6 +784,67 @@ uint32_t nv108_pwr_data[] = {
        0x10000000,
        0x20000000,
        0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
 };
 
 uint32_t nv108_pwr_code[] = {
@@ -1124,389 +1188,390 @@ uint32_t nv108_pwr_code[] = {
        0x07c04604,
        0xf00066cf,
        0x0bf40464,
-       0x001698f7,
-       0xf80410b6,
-/* 0x04a1: memx_func_leave */
-       0x40040600,
-       0x06f607e4,
-/* 0x04ab: memx_func_leave_wait */
-       0x4604bd00,
-       0x66cf07c0,
-       0x0464f000,
-       0xf8f71bf4,
-/* 0x04b9: memx_func_wr32 */
-       0x00169800,
-       0xb6011598,
-       0x60f90810,
-       0xd0fc50f9,
-       0x2e7ee0fc,
-       0x42b60000,
-       0xe81bf402,
-/* 0x04d6: memx_func_wait */
-       0x2c0800f8,
-       0x980088cf,
-       0x1d98001e,
-       0x021c9801,
-       0xb6031b98,
-       0x797e1010,
-       0x00f80000,
-/* 0x04f0: memx_func_delay */
-       0xb6001e98,
-       0x5d7e0410,
-       0x00f80000,
-/* 0x04fc: memx_exec */
-       0xd0f9e0f9,
-       0xb2b2c1b2,
-/* 0x0504: memx_exec_next */
-       0xb6001398,
-       0x34950410,
-       0x0c30f010,
-       0xf9de3598,
-       0xf412a655,
-       0xd0fced1e,
-       0xc27ee0fc,
-       0x00f80002,
-/* 0x0524: memx_info */
-       0x4b03ac4c,
-       0xc27e0800,
-       0x00f80002,
-/* 0x0530: memx_recv */
-       0xf401d6b0,
-       0xd6b0c90b,
-       0xeb0bf400,
-/* 0x053e: memx_init */
-       0x00f800f8,
-/* 0x0540: perf_recv */
-/* 0x0542: perf_init */
-       0x00f800f8,
-/* 0x0544: i2c_drive_scl */
-       0xf40036b0,
-       0xe0400d0b,
-       0x0001f607,
-       0x00f804bd,
-/* 0x0554: i2c_drive_scl_lo */
-       0xf607e440,
-       0x04bd0001,
-/* 0x055e: i2c_drive_sda */
-       0x36b000f8,
-       0x0d0bf400,
-       0xf607e040,
-       0x04bd0002,
-/* 0x056e: i2c_drive_sda_lo */
-       0xe44000f8,
-       0x0002f607,
-       0x00f804bd,
-/* 0x0578: i2c_sense_scl */
-       0x430132f4,
-       0x33cf07c4,
-       0x0431fd00,
-       0xf4060bf4,
-/* 0x058a: i2c_sense_scl_done */
-       0x00f80131,
-/* 0x058c: i2c_sense_sda */
-       0x430132f4,
-       0x33cf07c4,
-       0x0432fd00,
-       0xf4060bf4,
-/* 0x059e: i2c_sense_sda_done */
-       0x00f80131,
-/* 0x05a0: i2c_raise_scl */
-       0x984440f9,
-       0x7e010308,
-/* 0x05ab: i2c_raise_scl_wait */
-       0x4e000544,
-       0x5d7e03e8,
-       0x787e0000,
-       0x01f40005,
-       0x0142b609,
-/* 0x05bf: i2c_raise_scl_done */
-       0xfcef1bf4,
-/* 0x05c3: i2c_start */
-       0x7e00f840,
-       0xf4000578,
-       0x8c7e0d11,
+/* 0x049b: memx_func_leave */
+       0x0600f8f7,
+       0x07e44004,
+       0xbd0006f6,
+/* 0x04a5: memx_func_leave_wait */
+       0x07c04604,
+       0xf00066cf,
+       0x1bf40464,
+/* 0x04b3: memx_func_wait_vblank */
+       0xb600f8f7,
+       0x00f80410,
+/* 0x04b8: memx_func_wr32 */
+       0x98001698,
+       0x10b60115,
+       0xf960f908,
+       0xfcd0fc50,
+       0x002e7ee0,
+       0x0242b600,
+       0xf8e81bf4,
+/* 0x04d5: memx_func_wait */
+       0xcf2c0800,
+       0x1e980088,
+       0x011d9800,
+       0x98021c98,
+       0x10b6031b,
+       0x00797e10,
+/* 0x04ef: memx_func_delay */
+       0x9800f800,
+       0x10b6001e,
+       0x005d7e04,
+/* 0x04fb: memx_exec */
+       0xf900f800,
+       0xb2d0f9e0,
+/* 0x0503: memx_exec_next */
+       0x98b2b2c1,
+       0x10b60013,
+       0x10349504,
+       0x980c30f0,
+       0x55f9de35,
+       0x1ef412a6,
+       0xfcd0fced,
+       0x02c27ee0,
+/* 0x0523: memx_info */
+       0x4c00f800,
+       0x004b03b8,
+       0x02c27e08,
+/* 0x052f: memx_recv */
+       0xb000f800,
+       0x0bf401d6,
+       0x00d6b0c9,
+       0xf8eb0bf4,
+/* 0x053d: memx_init */
+/* 0x053f: perf_recv */
+       0xf800f800,
+/* 0x0541: perf_init */
+/* 0x0543: i2c_drive_scl */
+       0xb000f800,
+       0x0bf40036,
+       0x07e0400d,
+       0xbd0001f6,
+/* 0x0553: i2c_drive_scl_lo */
+       0x4000f804,
+       0x01f607e4,
+       0xf804bd00,
+/* 0x055d: i2c_drive_sda */
+       0x0036b000,
+       0x400d0bf4,
+       0x02f607e0,
+       0xf804bd00,
+/* 0x056d: i2c_drive_sda_lo */
+       0x07e44000,
+       0xbd0002f6,
+/* 0x0577: i2c_sense_scl */
+       0xf400f804,
+       0xc4430132,
+       0x0033cf07,
+       0xf40431fd,
+       0x31f4060b,
+/* 0x0589: i2c_sense_scl_done */
+/* 0x058b: i2c_sense_sda */
+       0xf400f801,
+       0xc4430132,
+       0x0033cf07,
+       0xf40432fd,
+       0x31f4060b,
+/* 0x059d: i2c_sense_sda_done */
+/* 0x059f: i2c_raise_scl */
+       0xf900f801,
+       0x08984440,
+       0x437e0103,
+/* 0x05aa: i2c_raise_scl_wait */
+       0xe84e0005,
+       0x005d7e03,
+       0x05777e00,
+       0x0901f400,
+       0xf40142b6,
+/* 0x05be: i2c_raise_scl_done */
+       0x40fcef1b,
+/* 0x05c2: i2c_start */
+       0x777e00f8,
        0x11f40005,
-       0x2e0ef406,
-/* 0x05d4: i2c_start_rep */
-       0x447e0003,
-       0x01030005,
-       0x00055e7e,
+       0x058b7e0d,
+       0x0611f400,
+/* 0x05d3: i2c_start_rep */
+       0x032e0ef4,
+       0x05437e00,
+       0x7e010300,
+       0xbb00055d,
+       0x65b60076,
+       0x9450f904,
+       0x56bb0465,
+       0xfd50bd02,
+       0x50fc0475,
+       0x00059f7e,
+       0xf40464b6,
+/* 0x05fe: i2c_start_send */
+       0x00031d11,
+       0x00055d7e,
+       0x7e13884e,
+       0x0300005d,
+       0x05437e00,
+       0x13884e00,
+       0x00005d7e,
+/* 0x0618: i2c_start_out */
+/* 0x061a: i2c_stop */
+       0x000300f8,
+       0x0005437e,
+       0x5d7e0003,
+       0xe84e0005,
+       0x005d7e03,
+       0x7e010300,
+       0x4e000543,
+       0x5d7e1388,
+       0x01030000,
+       0x00055d7e,
+       0x7e13884e,
+       0xf800005d,
+/* 0x0649: i2c_bitw */
+       0x055d7e00,
+       0x03e84e00,
+       0x00005d7e,
        0xb60076bb,
        0x50f90465,
        0xbb046594,
        0x50bd0256,
        0xfc0475fd,
-       0x05a07e50,
+       0x059f7e50,
        0x0464b600,
-/* 0x05ff: i2c_start_send */
-       0x031d11f4,
-       0x055e7e00,
-       0x13884e00,
-       0x00005d7e,
-       0x447e0003,
-       0x884e0005,
-       0x005d7e13,
-/* 0x0619: i2c_start_out */
-/* 0x061b: i2c_stop */
-       0x0300f800,
-       0x05447e00,
-       0x7e000300,
-       0x4e00055e,
-       0x5d7e03e8,
-       0x01030000,
-       0x0005447e,
+       0x4e1711f4,
+       0x5d7e1388,
+       0x00030000,
+       0x0005437e,
        0x7e13884e,
-       0x0300005d,
-       0x055e7e01,
-       0x13884e00,
-       0x00005d7e,
-/* 0x064a: i2c_bitw */
-       0x5e7e00f8,
-       0xe84e0005,
-       0x005d7e03,
-       0x0076bb00,
+/* 0x0687: i2c_bitw_out */
+       0xf800005d,
+/* 0x0689: i2c_bitr */
+       0x7e010300,
+       0x4e00055d,
+       0x5d7e03e8,
+       0x76bb0000,
+       0x0465b600,
+       0x659450f9,
+       0x0256bb04,
+       0x75fd50bd,
+       0x7e50fc04,
+       0xb600059f,
+       0x11f40464,
+       0x058b7e1a,
+       0x7e000300,
+       0x4e000543,
+       0x5d7e1388,
+       0x3cf00000,
+       0x0131f401,
+/* 0x06cc: i2c_bitr_done */
+/* 0x06ce: i2c_get_byte */
+       0x000500f8,
+/* 0x06d2: i2c_get_byte_next */
+       0x54b60804,
+       0x0076bb01,
        0xf90465b6,
        0x04659450,
        0xbd0256bb,
        0x0475fd50,
-       0xa07e50fc,
-       0x64b60005,
-       0x1711f404,
-       0x7e13884e,
-       0x0300005d,
-       0x05447e00,
-       0x13884e00,
-       0x00005d7e,
-/* 0x0688: i2c_bitw_out */
-/* 0x068a: i2c_bitr */
-       0x010300f8,
-       0x00055e7e,
-       0x7e03e84e,
-       0xbb00005d,
+       0x897e50fc,
+       0x64b60006,
+       0x2a11f404,
+       0xb60553fd,
+       0x1bf40142,
+       0xbb0103d8,
        0x65b60076,
        0x9450f904,
        0x56bb0465,
        0xfd50bd02,
        0x50fc0475,
-       0x0005a07e,
-       0xf40464b6,
-       0x8c7e1a11,
-       0x00030005,
-       0x0005447e,
-       0x7e13884e,
-       0xf000005d,
-       0x31f4013c,
-/* 0x06cd: i2c_bitr_done */
-/* 0x06cf: i2c_get_byte */
-       0x0500f801,
-/* 0x06d3: i2c_get_byte_next */
+       0x0006497e,
+/* 0x071b: i2c_get_byte_done */
+       0xf80464b6,
+/* 0x071d: i2c_put_byte */
+/* 0x071f: i2c_put_byte_next */
        0xb6080400,
-       0x76bb0154,
-       0x0465b600,
-       0x659450f9,
-       0x0256bb04,
-       0x75fd50bd,
-       0x7e50fc04,
-       0xb600068a,
-       0x11f40464,
-       0x0553fd2a,
-       0xf40142b6,
-       0x0103d81b,
-       0xb60076bb,
-       0x50f90465,
-       0xbb046594,
-       0x50bd0256,
-       0xfc0475fd,
-       0x064a7e50,
-       0x0464b600,
-/* 0x071c: i2c_get_byte_done */
-/* 0x071e: i2c_put_byte */
-       0x080400f8,
-/* 0x0720: i2c_put_byte_next */
-       0xff0142b6,
-       0x76bb3854,
+       0x54ff0142,
+       0x0076bb38,
+       0xf90465b6,
+       0x04659450,
+       0xbd0256bb,
+       0x0475fd50,
+       0x497e50fc,
+       0x64b60006,
+       0x3411f404,
+       0xf40046b0,
+       0x76bbd81b,
        0x0465b600,
        0x659450f9,
        0x0256bb04,
        0x75fd50bd,
        0x7e50fc04,
-       0xb600064a,
+       0xb6000689,
        0x11f40464,
-       0x0046b034,
-       0xbbd81bf4,
+       0x0076bb0f,
+       0xf40136b0,
+       0x32f4061b,
+/* 0x0775: i2c_put_byte_done */
+/* 0x0777: i2c_addr */
+       0xbb00f801,
        0x65b60076,
        0x9450f904,
        0x56bb0465,
        0xfd50bd02,
        0x50fc0475,
-       0x00068a7e,
+       0x0005c27e,
        0xf40464b6,
-       0x76bb0f11,
-       0x0136b000,
-       0xf4061bf4,
-/* 0x0776: i2c_put_byte_done */
-       0x00f80132,
-/* 0x0778: i2c_addr */
+       0xc3e72911,
+       0x34b6012e,
+       0x0553fd01,
        0xb60076bb,
        0x50f90465,
        0xbb046594,
        0x50bd0256,
        0xfc0475fd,
-       0x05c37e50,
+       0x071d7e50,
        0x0464b600,
-       0xe72911f4,
-       0xb6012ec3,
-       0x53fd0134,
-       0x0076bb05,
-       0xf90465b6,
-       0x04659450,
-       0xbd0256bb,
-       0x0475fd50,
-       0x1e7e50fc,
-       0x64b60007,
-/* 0x07bd: i2c_addr_done */
-/* 0x07bf: i2c_acquire_addr */
-       0xc700f804,
-       0xe4b6f8ce,
-       0x14e0b705,
-/* 0x07cb: i2c_acquire */
-       0x7e00f8d0,
-       0x7e0007bf,
+/* 0x07bc: i2c_addr_done */
+/* 0x07be: i2c_acquire_addr */
+       0xcec700f8,
+       0x05e4b6f8,
+       0xd014e0b7,
+/* 0x07ca: i2c_acquire */
+       0xbe7e00f8,
+       0x047e0007,
+       0xd9f00000,
+       0x002e7e03,
+/* 0x07db: i2c_release */
+       0x7e00f800,
+       0x7e0007be,
        0xf0000004,
-       0x2e7e03d9,
+       0x2e7e03da,
        0x00f80000,
-/* 0x07dc: i2c_release */
-       0x0007bf7e,
-       0x0000047e,
-       0x7e03daf0,
-       0xf800002e,
-/* 0x07ed: i2c_recv */
-       0x0132f400,
-       0xb6f8c1c7,
-       0x16b00214,
-       0x371ff528,
-       0xd413b801,
-       0x3298000b,
-       0xac13b800,
-       0x3198000b,
-       0x0231f400,
-       0xe0f9d0f9,
-       0x67f1d0f9,
-       0x63f10000,
-       0x67921000,
-       0x0076bb01,
-       0xf90465b6,
-       0x04659450,
-       0xbd0256bb,
-       0x0475fd50,
-       0xcb7e50fc,
-       0x64b60007,
-       0xb0d0fc04,
-       0x1bf500d6,
-       0x000500b0,
+/* 0x07ec: i2c_recv */
+       0xc70132f4,
+       0x14b6f8c1,
+       0x2816b002,
+       0x01371ff5,
+       0x0be013b8,
+       0x00329800,
+       0x0bb813b8,
+       0x00319800,
+       0xf90231f4,
+       0xf9e0f9d0,
+       0x0067f1d0,
+       0x0063f100,
+       0x01679210,
        0xb60076bb,
        0x50f90465,
        0xbb046594,
        0x50bd0256,
        0xfc0475fd,
-       0x07787e50,
+       0x07ca7e50,
        0x0464b600,
-       0x00cc11f5,
-       0xbbe0c5c7,
+       0xd6b0d0fc,
+       0xb01bf500,
+       0xbb000500,
        0x65b60076,
        0x9450f904,
        0x56bb0465,
        0xfd50bd02,
        0x50fc0475,
-       0x00071e7e,
+       0x0007777e,
        0xf50464b6,
-       0x0500a911,
-       0x0076bb01,
-       0xf90465b6,
-       0x04659450,
-       0xbd0256bb,
-       0x0475fd50,
-       0x787e50fc,
-       0x64b60007,
-       0x8711f504,
-       0x0076bb00,
-       0xf90465b6,
-       0x04659450,
-       0xbd0256bb,
-       0x0475fd50,
-       0xcf7e50fc,
-       0x64b60006,
-       0x6711f404,
-       0xbbe05bcb,
-       0x65b60076,
-       0x9450f904,
-       0x56bb0465,
-       0xfd50bd02,
-       0x50fc0475,
-       0x00061b7e,
-       0xb20464b6,
-       0xf474bd5b,
-/* 0x08f2: i2c_recv_not_rd08 */
-       0xd6b0410e,
-       0x3b1bf401,
-       0x787e0005,
+       0xc700cc11,
+       0x76bbe0c5,
+       0x0465b600,
+       0x659450f9,
+       0x0256bb04,
+       0x75fd50bd,
+       0x7e50fc04,
+       0xb600071d,
+       0x11f50464,
+       0x010500a9,
+       0xb60076bb,
+       0x50f90465,
+       0xbb046594,
+       0x50bd0256,
+       0xfc0475fd,
+       0x07777e50,
+       0x0464b600,
+       0x008711f5,
+       0xb60076bb,
+       0x50f90465,
+       0xbb046594,
+       0x50bd0256,
+       0xfc0475fd,
+       0x06ce7e50,
+       0x0464b600,
+       0xcb6711f4,
+       0x76bbe05b,
+       0x0465b600,
+       0x659450f9,
+       0x0256bb04,
+       0x75fd50bd,
+       0x7e50fc04,
+       0xb600061a,
+       0x5bb20464,
+       0x0ef474bd,
+/* 0x08f1: i2c_recv_not_rd08 */
+       0x01d6b041,
+       0x053b1bf4,
+       0x07777e00,
+       0x3211f400,
+       0x7ee0c5c7,
+       0xf400071d,
+       0x00052811,
+       0x0007777e,
+       0xc71f11f4,
+       0x1d7ee0b5,
        0x11f40007,
-       0xe0c5c732,
-       0x00071e7e,
-       0x052811f4,
-       0x07787e00,
-       0x1f11f400,
-       0x7ee0b5c7,
-       0xf400071e,
-       0x1b7e1511,
-       0x74bd0006,
-       0xf408c5c7,
-       0x32f4091b,
-       0x030ef402,
-/* 0x0930: i2c_recv_not_wr08 */
-/* 0x0930: i2c_recv_done */
-       0x7ef8cec7,
-       0xfc0007dc,
-       0xf4d0fce0,
-       0x7cb20912,
-       0x0002c27e,
-/* 0x0944: i2c_recv_exit */
-/* 0x0946: i2c_init */
-       0x00f800f8,
-/* 0x0948: test_recv */
-       0xcf045841,
+       0x061a7e15,
+       0xc774bd00,
+       0x1bf408c5,
+       0x0232f409,
+/* 0x092f: i2c_recv_not_wr08 */
+/* 0x092f: i2c_recv_done */
+       0xc7030ef4,
+       0xdb7ef8ce,
+       0xe0fc0007,
+       0x12f4d0fc,
+       0x7e7cb209,
+/* 0x0943: i2c_recv_exit */
+       0xf80002c2,
+/* 0x0945: i2c_init */
+/* 0x0947: test_recv */
+       0x4100f800,
+       0x11cf0458,
+       0x0110b600,
+       0xf6045840,
+       0x04bd0001,
+       0xd900e7f1,
+       0x134fe3f1,
+       0x0002017e,
+/* 0x0966: test_init */
+       0x004e00f8,
+       0x02017e08,
+/* 0x096f: idle_recv */
+       0xf800f800,
+/* 0x0971: idle */
+       0x0031f400,
+       0xcf045441,
        0x10b60011,
-       0x04584001,
+       0x04544001,
        0xbd0001f6,
-       0x00e7f104,
-       0x4fe3f1d9,
-       0x02017e13,
-/* 0x0967: test_init */
-       0x4e00f800,
-       0x017e0800,
-       0x00f80002,
-/* 0x0970: idle_recv */
-/* 0x0972: idle */
-       0x31f400f8,
-       0x04544100,
-       0xb60011cf,
-       0x54400110,
-       0x0001f604,
-/* 0x0986: idle_loop */
-       0x580104bd,
-/* 0x098b: idle_proc */
-/* 0x098b: idle_proc_exec */
-       0xf90232f4,
-       0x7e1eb210,
-       0xfc0002cb,
-       0x0911f410,
-       0xf40231f4,
-/* 0x099e: idle_proc_next */
-       0x10b6f00e,
-       0xf41fa658,
-       0x02f4e81b,
-       0x0028f4e0,
-       0x00c60ef4,
+/* 0x0985: idle_loop */
+       0xf4580104,
+/* 0x098a: idle_proc */
+/* 0x098a: idle_proc_exec */
+       0x10f90232,
+       0xcb7e1eb2,
+       0x10fc0002,
+       0xf40911f4,
+       0x0ef40231,
+/* 0x099d: idle_proc_next */
+       0x5810b6f0,
+       0x1bf41fa6,
+       0xe002f4e8,
+       0xf40028f4,
+       0x0000c60e,
        0x00000000,
        0x00000000,
        0x00000000,
index 21000e508a6a320bcf36a3485037f424357f1a6a..d0e5a7b5dfb584adcc4ba05b58ece49b3195e83f 100644 (file)
@@ -46,8 +46,8 @@ uint32_t nva3_pwr_data[] = {
        0x00000000,
        0x00000000,
        0x584d454d,
-       0x00000624,
-       0x00000616,
+       0x00000660,
+       0x00000652,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -68,8 +68,8 @@ uint32_t nva3_pwr_data[] = {
        0x00000000,
        0x00000000,
        0x46524550,
-       0x00000628,
-       0x00000626,
+       0x00000664,
+       0x00000662,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -90,8 +90,8 @@ uint32_t nva3_pwr_data[] = {
        0x00000000,
        0x00000000,
        0x5f433249,
-       0x00000a58,
-       0x000008fb,
+       0x00000a94,
+       0x00000937,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -112,8 +112,8 @@ uint32_t nva3_pwr_data[] = {
        0x00000000,
        0x00000000,
        0x54534554,
-       0x00000a81,
-       0x00000a5a,
+       0x00000abd,
+       0x00000a96,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -134,8 +134,8 @@ uint32_t nva3_pwr_data[] = {
        0x00000000,
        0x00000000,
        0x454c4449,
-       0x00000a8d,
-       0x00000a8b,
+       0x00000ac9,
+       0x00000ac7,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -227,25 +227,27 @@ uint32_t nva3_pwr_data[] = {
        0x00000000,
        0x00000000,
 /* 0x0370: memx_func_head */
-       0x00010000,
+       0x00000000,
        0x00000000,
        0x00000551,
 /* 0x037c: memx_func_next */
        0x00000001,
        0x00000000,
-       0x00000578,
+       0x00000572,
        0x00000002,
        0x00000002,
-       0x00000599,
+       0x000005d5,
        0x00040003,
        0x00000000,
-       0x000005b5,
+       0x000005f1,
        0x00010004,
        0x00000000,
-       0x000005d2,
-/* 0x03ac: memx_func_tail */
-/* 0x03ac: memx_data_head */
+       0x0000060e,
+       0x00010005,
        0x00000000,
+       0x00000593,
+/* 0x03b8: memx_func_tail */
+/* 0x03b8: memx_data_head */
        0x00000000,
        0x00000000,
        0x00000000,
@@ -757,8 +759,9 @@ uint32_t nva3_pwr_data[] = {
        0x00000000,
        0x00000000,
        0x00000000,
-/* 0x0bac: memx_data_tail */
-/* 0x0bac: i2c_scl_map */
+       0x00000000,
+/* 0x0bb8: memx_data_tail */
+/* 0x0bb8: i2c_scl_map */
        0x00001000,
        0x00004000,
        0x00010000,
@@ -769,7 +772,7 @@ uint32_t nva3_pwr_data[] = {
        0x01000000,
        0x04000000,
        0x10000000,
-/* 0x0bd4: i2c_sda_map */
+/* 0x0be0: i2c_sda_map */
        0x00002000,
        0x00008000,
        0x00020000,
@@ -780,7 +783,7 @@ uint32_t nva3_pwr_data[] = {
        0x02000000,
        0x08000000,
        0x20000000,
-/* 0x0bfc: i2c_ctrl */
+/* 0x0c08: i2c_ctrl */
        0x0000e138,
        0x0000e150,
        0x0000e168,
@@ -843,9 +846,6 @@ uint32_t nva3_pwr_data[] = {
        0x00000000,
        0x00000000,
        0x00000000,
-       0x00000000,
-       0x00000000,
-       0x00000000,
 };
 
 uint32_t nva3_pwr_code[] = {
@@ -1243,19 +1243,40 @@ uint32_t nva3_pwr_code[] = {
        0xcf0664b6,
        0x64f00066,
        0xf30bf404,
-       0xb6001698,
-       0x00f80410,
-/* 0x0578: memx_func_leave */
-       0xf10467f0,
-       0xb607e407,
-       0x06d00604,
-/* 0x0587: memx_func_leave_wait */
-       0xf104bd00,
-       0xb607c067,
-       0x66cf0664,
-       0x0464f000,
-       0xf8f31bf4,
-/* 0x0599: memx_func_wr32 */
+/* 0x0572: memx_func_leave */
+       0x67f000f8,
+       0xe407f104,
+       0x0604b607,
+       0xbd0006d0,
+/* 0x0581: memx_func_leave_wait */
+       0xc067f104,
+       0x0664b607,
+       0xf00066cf,
+       0x1bf40464,
+/* 0x0593: memx_func_wait_vblank */
+       0x9800f8f3,
+       0x66b00016,
+       0x130bf400,
+       0xf40166b0,
+       0x0ef4060b,
+/* 0x05a5: memx_func_wait_vblank_head1 */
+       0x2077f12e,
+       0x070ef400,
+/* 0x05ac: memx_func_wait_vblank_head0 */
+       0x000877f1,
+/* 0x05b0: memx_func_wait_vblank_0 */
+       0x07c467f1,
+       0xcf0664b6,
+       0x67fd0066,
+       0xf31bf404,
+/* 0x05c0: memx_func_wait_vblank_1 */
+       0x07c467f1,
+       0xcf0664b6,
+       0x67fd0066,
+       0xf30bf404,
+/* 0x05d0: memx_func_wait_vblank_fini */
+       0xf80410b6,
+/* 0x05d5: memx_func_wr32 */
        0x00169800,
        0xb6011598,
        0x60f90810,
@@ -1263,7 +1284,7 @@ uint32_t nva3_pwr_code[] = {
        0x21f4e0fc,
        0x0242b63f,
        0xf8e91bf4,
-/* 0x05b5: memx_func_wait */
+/* 0x05f1: memx_func_wait */
        0x2c87f000,
        0xcf0684b6,
        0x1e980088,
@@ -1271,14 +1292,14 @@ uint32_t nva3_pwr_code[] = {
        0x98021c98,
        0x10b6031b,
        0xa421f410,
-/* 0x05d2: memx_func_delay */
+/* 0x060e: memx_func_delay */
        0x1e9800f8,
        0x0410b600,
        0xf87f21f4,
-/* 0x05dd: memx_exec */
+/* 0x0619: memx_exec */
        0xf9e0f900,
        0x02c1b9d0,
-/* 0x05e7: memx_exec_next */
+/* 0x0623: memx_exec_next */
        0x9802b2b9,
        0x10b60013,
        0x10349504,
@@ -1288,112 +1309,112 @@ uint32_t nva3_pwr_code[] = {
        0xd0fcec1e,
        0x21f5e0fc,
        0x00f80342,
-/* 0x0608: memx_info */
-       0x03acc7f1,
+/* 0x0644: memx_info */
+       0x03b8c7f1,
        0x0800b7f1,
        0x034221f5,
-/* 0x0616: memx_recv */
+/* 0x0652: memx_recv */
        0xd6b000f8,
        0xc40bf401,
        0xf400d6b0,
        0x00f8e90b,
-/* 0x0624: memx_init */
-/* 0x0626: perf_recv */
+/* 0x0660: memx_init */
+/* 0x0662: perf_recv */
        0x00f800f8,
-/* 0x0628: perf_init */
-/* 0x062a: i2c_drive_scl */
+/* 0x0664: perf_init */
+/* 0x0666: i2c_drive_scl */
        0x36b000f8,
        0x110bf400,
        0x07e007f1,
        0xd00604b6,
        0x04bd0001,
-/* 0x063e: i2c_drive_scl_lo */
+/* 0x067a: i2c_drive_scl_lo */
        0x07f100f8,
        0x04b607e4,
        0x0001d006,
        0x00f804bd,
-/* 0x064c: i2c_drive_sda */
+/* 0x0688: i2c_drive_sda */
        0xf40036b0,
        0x07f1110b,
        0x04b607e0,
        0x0002d006,
        0x00f804bd,
-/* 0x0660: i2c_drive_sda_lo */
+/* 0x069c: i2c_drive_sda_lo */
        0x07e407f1,
        0xd00604b6,
        0x04bd0002,
-/* 0x066e: i2c_sense_scl */
+/* 0x06aa: i2c_sense_scl */
        0x32f400f8,
        0xc437f101,
        0x0634b607,
        0xfd0033cf,
        0x0bf40431,
        0x0131f406,
-/* 0x0684: i2c_sense_scl_done */
-/* 0x0686: i2c_sense_sda */
+/* 0x06c0: i2c_sense_scl_done */
+/* 0x06c2: i2c_sense_sda */
        0x32f400f8,
        0xc437f101,
        0x0634b607,
        0xfd0033cf,
        0x0bf40432,
        0x0131f406,
-/* 0x069c: i2c_sense_sda_done */
-/* 0x069e: i2c_raise_scl */
+/* 0x06d8: i2c_sense_sda_done */
+/* 0x06da: i2c_raise_scl */
        0x40f900f8,
        0x089847f1,
        0xf50137f0,
-/* 0x06ab: i2c_raise_scl_wait */
-       0xf1062a21,
+/* 0x06e7: i2c_raise_scl_wait */
+       0xf1066621,
        0xf403e8e7,
        0x21f57f21,
-       0x01f4066e,
+       0x01f406aa,
        0x0142b609,
-/* 0x06bf: i2c_raise_scl_done */
+/* 0x06fb: i2c_raise_scl_done */
        0xfcef1bf4,
-/* 0x06c3: i2c_start */
+/* 0x06ff: i2c_start */
        0xf500f840,
-       0xf4066e21,
+       0xf406aa21,
        0x21f50d11,
-       0x11f40686,
+       0x11f406c2,
        0x300ef406,
-/* 0x06d4: i2c_start_rep */
+/* 0x0710: i2c_start_rep */
        0xf50037f0,
-       0xf0062a21,
+       0xf0066621,
        0x21f50137,
-       0x76bb064c,
+       0x76bb0688,
        0x0465b600,
        0x659450f9,
        0x0256bb04,
        0x75fd50bd,
        0xf550fc04,
-       0xb6069e21,
+       0xb606da21,
        0x11f40464,
-/* 0x0701: i2c_start_send */
+/* 0x073d: i2c_start_send */
        0x0037f01f,
-       0x064c21f5,
+       0x068821f5,
        0x1388e7f1,
        0xf07f21f4,
        0x21f50037,
-       0xe7f1062a,
+       0xe7f10666,
        0x21f41388,
-/* 0x071d: i2c_start_out */
-/* 0x071f: i2c_stop */
+/* 0x0759: i2c_start_out */
+/* 0x075b: i2c_stop */
        0xf000f87f,
        0x21f50037,
-       0x37f0062a,
-       0x4c21f500,
+       0x37f00666,
+       0x8821f500,
        0xe8e7f106,
        0x7f21f403,
        0xf50137f0,
-       0xf1062a21,
+       0xf1066621,
        0xf41388e7,
        0x37f07f21,
-       0x4c21f501,
+       0x8821f501,
        0x88e7f106,
        0x7f21f413,
-/* 0x0752: i2c_bitw */
+/* 0x078e: i2c_bitw */
        0x21f500f8,
-       0xe7f1064c,
+       0xe7f10688,
        0x21f403e8,
        0x0076bb7f,
        0xf90465b6,
@@ -1401,18 +1422,18 @@ uint32_t nva3_pwr_code[] = {
        0xbd0256bb,
        0x0475fd50,
        0x21f550fc,
-       0x64b6069e,
+       0x64b606da,
        0x1811f404,
        0x1388e7f1,
        0xf07f21f4,
        0x21f50037,
-       0xe7f1062a,
+       0xe7f10666,
        0x21f41388,
-/* 0x0791: i2c_bitw_out */
-/* 0x0793: i2c_bitr */
+/* 0x07cd: i2c_bitw_out */
+/* 0x07cf: i2c_bitr */
        0xf000f87f,
        0x21f50137,
-       0xe7f1064c,
+       0xe7f10688,
        0x21f403e8,
        0x0076bb7f,
        0xf90465b6,
@@ -1420,26 +1441,26 @@ uint32_t nva3_pwr_code[] = {
        0xbd0256bb,
        0x0475fd50,
        0x21f550fc,
-       0x64b6069e,
+       0x64b606da,
        0x1b11f404,
-       0x068621f5,
+       0x06c221f5,
        0xf50037f0,
-       0xf1062a21,
+       0xf1066621,
        0xf41388e7,
        0x3cf07f21,
        0x0131f401,
-/* 0x07d8: i2c_bitr_done */
-/* 0x07da: i2c_get_byte */
+/* 0x0814: i2c_bitr_done */
+/* 0x0816: i2c_get_byte */
        0x57f000f8,
        0x0847f000,
-/* 0x07e0: i2c_get_byte_next */
+/* 0x081c: i2c_get_byte_next */
        0xbb0154b6,
        0x65b60076,
        0x9450f904,
        0x56bb0465,
        0xfd50bd02,
        0x50fc0475,
-       0x079321f5,
+       0x07cf21f5,
        0xf40464b6,
        0x53fd2b11,
        0x0142b605,
@@ -1450,11 +1471,11 @@ uint32_t nva3_pwr_code[] = {
        0x0256bb04,
        0x75fd50bd,
        0xf550fc04,
-       0xb6075221,
-/* 0x082a: i2c_get_byte_done */
+       0xb6078e21,
+/* 0x0866: i2c_get_byte_done */
        0x00f80464,
-/* 0x082c: i2c_put_byte */
-/* 0x082f: i2c_put_byte_next */
+/* 0x0868: i2c_put_byte */
+/* 0x086b: i2c_put_byte_next */
        0xb60847f0,
        0x54ff0142,
        0x0076bb38,
@@ -1463,7 +1484,7 @@ uint32_t nva3_pwr_code[] = {
        0xbd0256bb,
        0x0475fd50,
        0x21f550fc,
-       0x64b60752,
+       0x64b6078e,
        0x3411f404,
        0xf40046b0,
        0x76bbd81b,
@@ -1472,20 +1493,20 @@ uint32_t nva3_pwr_code[] = {
        0x0256bb04,
        0x75fd50bd,
        0xf550fc04,
-       0xb6079321,
+       0xb607cf21,
        0x11f40464,
        0x0076bb0f,
        0xf40136b0,
        0x32f4061b,
-/* 0x0885: i2c_put_byte_done */
-/* 0x0887: i2c_addr */
+/* 0x08c1: i2c_put_byte_done */
+/* 0x08c3: i2c_addr */
        0xbb00f801,
        0x65b60076,
        0x9450f904,
        0x56bb0465,
        0xfd50bd02,
        0x50fc0475,
-       0x06c321f5,
+       0x06ff21f5,
        0xf40464b6,
        0xc3e72911,
        0x34b6012e,
@@ -1495,32 +1516,32 @@ uint32_t nva3_pwr_code[] = {
        0xbb046594,
        0x50bd0256,
        0xfc0475fd,
-       0x2c21f550,
+       0x6821f550,
        0x0464b608,
-/* 0x08cc: i2c_addr_done */
-/* 0x08ce: i2c_acquire_addr */
+/* 0x0908: i2c_addr_done */
+/* 0x090a: i2c_acquire_addr */
        0xcec700f8,
        0x02e4b6f8,
-       0x0bfce0b7,
+       0x0c08e0b7,
        0xf800ee98,
-/* 0x08dd: i2c_acquire */
-       0xce21f500,
-       0x0421f408,
+/* 0x0919: i2c_acquire */
+       0x0a21f500,
+       0x0421f409,
        0xf403d9f0,
        0x00f83f21,
-/* 0x08ec: i2c_release */
-       0x08ce21f5,
+/* 0x0928: i2c_release */
+       0x090a21f5,
        0xf00421f4,
        0x21f403da,
-/* 0x08fb: i2c_recv */
+/* 0x0937: i2c_recv */
        0xf400f83f,
        0xc1c70132,
        0x0214b6f8,
        0xf52816b0,
        0xa0013a1f,
-       0x980bd413,
+       0x980be013,
        0x13a00032,
-       0x31980bac,
+       0x31980bb8,
        0x0231f400,
        0xe0f9d0f9,
        0x67f1d0f9,
@@ -1532,7 +1553,7 @@ uint32_t nva3_pwr_code[] = {
        0xbd0256bb,
        0x0475fd50,
        0x21f550fc,
-       0x64b608dd,
+       0x64b60919,
        0xb0d0fc04,
        0x1bf500d6,
        0x57f000b3,
@@ -1542,7 +1563,7 @@ uint32_t nva3_pwr_code[] = {
        0xbd0256bb,
        0x0475fd50,
        0x21f550fc,
-       0x64b60887,
+       0x64b608c3,
        0xd011f504,
        0xe0c5c700,
        0xb60076bb,
@@ -1550,7 +1571,7 @@ uint32_t nva3_pwr_code[] = {
        0xbb046594,
        0x50bd0256,
        0xfc0475fd,
-       0x2c21f550,
+       0x6821f550,
        0x0464b608,
        0x00ad11f5,
        0xbb0157f0,
@@ -1559,7 +1580,7 @@ uint32_t nva3_pwr_code[] = {
        0x56bb0465,
        0xfd50bd02,
        0x50fc0475,
-       0x088721f5,
+       0x08c321f5,
        0xf50464b6,
        0xbb008a11,
        0x65b60076,
@@ -1567,7 +1588,7 @@ uint32_t nva3_pwr_code[] = {
        0x56bb0465,
        0xfd50bd02,
        0x50fc0475,
-       0x07da21f5,
+       0x081621f5,
        0xf40464b6,
        0x5bcb6a11,
        0x0076bbe0,
@@ -1576,37 +1597,37 @@ uint32_t nva3_pwr_code[] = {
        0xbd0256bb,
        0x0475fd50,
        0x21f550fc,
-       0x64b6071f,
+       0x64b6075b,
        0x025bb904,
        0x0ef474bd,
-/* 0x0a01: i2c_recv_not_rd08 */
+/* 0x0a3d: i2c_recv_not_rd08 */
        0x01d6b043,
        0xf03d1bf4,
        0x21f50057,
-       0x11f40887,
+       0x11f408c3,
        0xe0c5c733,
-       0x082c21f5,
+       0x086821f5,
        0xf02911f4,
        0x21f50057,
-       0x11f40887,
+       0x11f408c3,
        0xe0b5c71f,
-       0x082c21f5,
+       0x086821f5,
        0xf51511f4,
-       0xbd071f21,
+       0xbd075b21,
        0x08c5c774,
        0xf4091bf4,
        0x0ef40232,
-/* 0x0a41: i2c_recv_not_wr08 */
-/* 0x0a41: i2c_recv_done */
+/* 0x0a7d: i2c_recv_not_wr08 */
+/* 0x0a7d: i2c_recv_done */
        0xf8cec703,
-       0x08ec21f5,
+       0x092821f5,
        0xd0fce0fc,
        0xb90a12f4,
        0x21f5027c,
-/* 0x0a56: i2c_recv_exit */
+/* 0x0a92: i2c_recv_exit */
        0x00f80342,
-/* 0x0a58: i2c_init */
-/* 0x0a5a: test_recv */
+/* 0x0a94: i2c_init */
+/* 0x0a96: test_recv */
        0x17f100f8,
        0x14b605d8,
        0x0011cf06,
@@ -1617,12 +1638,12 @@ uint32_t nva3_pwr_code[] = {
        0xf1d900e7,
        0xf5134fe3,
        0xf8026221,
-/* 0x0a81: test_init */
+/* 0x0abd: test_init */
        0x00e7f100,
        0x6221f508,
-/* 0x0a8b: idle_recv */
+/* 0x0ac7: idle_recv */
        0xf800f802,
-/* 0x0a8d: idle */
+/* 0x0ac9: idle */
        0x0031f400,
        0x05d417f1,
        0xcf0614b6,
@@ -1630,16 +1651,16 @@ uint32_t nva3_pwr_code[] = {
        0xd407f101,
        0x0604b605,
        0xbd0001d0,
-/* 0x0aa9: idle_loop */
+/* 0x0ae5: idle_loop */
        0x5817f004,
-/* 0x0aaf: idle_proc */
-/* 0x0aaf: idle_proc_exec */
+/* 0x0aeb: idle_proc */
+/* 0x0aeb: idle_proc_exec */
        0xf90232f4,
        0x021eb910,
        0x034b21f5,
        0x11f410fc,
        0x0231f409,
-/* 0x0ac3: idle_proc_next */
+/* 0x0aff: idle_proc_next */
        0xb6ef0ef4,
        0x1fb85810,
        0xe61bf406,
@@ -1656,4 +1677,53 @@ uint32_t nva3_pwr_code[] = {
        0x00000000,
        0x00000000,
        0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
 };
index df832840600ee63a313edc64abd9cd0e90256fe1..cbc9bde2b702e18dd1e196687958c482507c9635 100644 (file)
@@ -46,8 +46,8 @@ uint32_t nvc0_pwr_data[] = {
        0x00000000,
        0x00000000,
        0x584d454d,
-       0x00000624,
-       0x00000616,
+       0x00000660,
+       0x00000652,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -68,8 +68,8 @@ uint32_t nvc0_pwr_data[] = {
        0x00000000,
        0x00000000,
        0x46524550,
-       0x00000628,
-       0x00000626,
+       0x00000664,
+       0x00000662,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -90,8 +90,8 @@ uint32_t nvc0_pwr_data[] = {
        0x00000000,
        0x00000000,
        0x5f433249,
-       0x00000a58,
-       0x000008fb,
+       0x00000a94,
+       0x00000937,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -112,8 +112,8 @@ uint32_t nvc0_pwr_data[] = {
        0x00000000,
        0x00000000,
        0x54534554,
-       0x00000a81,
-       0x00000a5a,
+       0x00000abd,
+       0x00000a96,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -134,8 +134,8 @@ uint32_t nvc0_pwr_data[] = {
        0x00000000,
        0x00000000,
        0x454c4449,
-       0x00000a8d,
-       0x00000a8b,
+       0x00000ac9,
+       0x00000ac7,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -227,25 +227,27 @@ uint32_t nvc0_pwr_data[] = {
        0x00000000,
        0x00000000,
 /* 0x0370: memx_func_head */
-       0x00010000,
+       0x00000000,
        0x00000000,
        0x00000551,
 /* 0x037c: memx_func_next */
        0x00000001,
        0x00000000,
-       0x00000578,
+       0x00000572,
        0x00000002,
        0x00000002,
-       0x00000599,
+       0x000005d5,
        0x00040003,
        0x00000000,
-       0x000005b5,
+       0x000005f1,
        0x00010004,
        0x00000000,
-       0x000005d2,
-/* 0x03ac: memx_func_tail */
-/* 0x03ac: memx_data_head */
+       0x0000060e,
+       0x00010005,
        0x00000000,
+       0x00000593,
+/* 0x03b8: memx_func_tail */
+/* 0x03b8: memx_data_head */
        0x00000000,
        0x00000000,
        0x00000000,
@@ -757,8 +759,9 @@ uint32_t nvc0_pwr_data[] = {
        0x00000000,
        0x00000000,
        0x00000000,
-/* 0x0bac: memx_data_tail */
-/* 0x0bac: i2c_scl_map */
+       0x00000000,
+/* 0x0bb8: memx_data_tail */
+/* 0x0bb8: i2c_scl_map */
        0x00001000,
        0x00004000,
        0x00010000,
@@ -769,7 +772,7 @@ uint32_t nvc0_pwr_data[] = {
        0x01000000,
        0x04000000,
        0x10000000,
-/* 0x0bd4: i2c_sda_map */
+/* 0x0be0: i2c_sda_map */
        0x00002000,
        0x00008000,
        0x00020000,
@@ -780,7 +783,7 @@ uint32_t nvc0_pwr_data[] = {
        0x02000000,
        0x08000000,
        0x20000000,
-/* 0x0bfc: i2c_ctrl */
+/* 0x0c08: i2c_ctrl */
        0x0000e138,
        0x0000e150,
        0x0000e168,
@@ -843,9 +846,6 @@ uint32_t nvc0_pwr_data[] = {
        0x00000000,
        0x00000000,
        0x00000000,
-       0x00000000,
-       0x00000000,
-       0x00000000,
 };
 
 uint32_t nvc0_pwr_code[] = {
@@ -1243,19 +1243,40 @@ uint32_t nvc0_pwr_code[] = {
        0xcf0664b6,
        0x64f00066,
        0xf30bf404,
-       0xb6001698,
-       0x00f80410,
-/* 0x0578: memx_func_leave */
-       0xf10467f0,
-       0xb607e407,
-       0x06d00604,
-/* 0x0587: memx_func_leave_wait */
-       0xf104bd00,
-       0xb607c067,
-       0x66cf0664,
-       0x0464f000,
-       0xf8f31bf4,
-/* 0x0599: memx_func_wr32 */
+/* 0x0572: memx_func_leave */
+       0x67f000f8,
+       0xe407f104,
+       0x0604b607,
+       0xbd0006d0,
+/* 0x0581: memx_func_leave_wait */
+       0xc067f104,
+       0x0664b607,
+       0xf00066cf,
+       0x1bf40464,
+/* 0x0593: memx_func_wait_vblank */
+       0x9800f8f3,
+       0x66b00016,
+       0x130bf400,
+       0xf40166b0,
+       0x0ef4060b,
+/* 0x05a5: memx_func_wait_vblank_head1 */
+       0x2077f12e,
+       0x070ef400,
+/* 0x05ac: memx_func_wait_vblank_head0 */
+       0x000877f1,
+/* 0x05b0: memx_func_wait_vblank_0 */
+       0x07c467f1,
+       0xcf0664b6,
+       0x67fd0066,
+       0xf31bf404,
+/* 0x05c0: memx_func_wait_vblank_1 */
+       0x07c467f1,
+       0xcf0664b6,
+       0x67fd0066,
+       0xf30bf404,
+/* 0x05d0: memx_func_wait_vblank_fini */
+       0xf80410b6,
+/* 0x05d5: memx_func_wr32 */
        0x00169800,
        0xb6011598,
        0x60f90810,
@@ -1263,7 +1284,7 @@ uint32_t nvc0_pwr_code[] = {
        0x21f4e0fc,
        0x0242b63f,
        0xf8e91bf4,
-/* 0x05b5: memx_func_wait */
+/* 0x05f1: memx_func_wait */
        0x2c87f000,
        0xcf0684b6,
        0x1e980088,
@@ -1271,14 +1292,14 @@ uint32_t nvc0_pwr_code[] = {
        0x98021c98,
        0x10b6031b,
        0xa421f410,
-/* 0x05d2: memx_func_delay */
+/* 0x060e: memx_func_delay */
        0x1e9800f8,
        0x0410b600,
        0xf87f21f4,
-/* 0x05dd: memx_exec */
+/* 0x0619: memx_exec */
        0xf9e0f900,
        0x02c1b9d0,
-/* 0x05e7: memx_exec_next */
+/* 0x0623: memx_exec_next */
        0x9802b2b9,
        0x10b60013,
        0x10349504,
@@ -1288,112 +1309,112 @@ uint32_t nvc0_pwr_code[] = {
        0xd0fcec1e,
        0x21f5e0fc,
        0x00f80342,
-/* 0x0608: memx_info */
-       0x03acc7f1,
+/* 0x0644: memx_info */
+       0x03b8c7f1,
        0x0800b7f1,
        0x034221f5,
-/* 0x0616: memx_recv */
+/* 0x0652: memx_recv */
        0xd6b000f8,
        0xc40bf401,
        0xf400d6b0,
        0x00f8e90b,
-/* 0x0624: memx_init */
-/* 0x0626: perf_recv */
+/* 0x0660: memx_init */
+/* 0x0662: perf_recv */
        0x00f800f8,
-/* 0x0628: perf_init */
-/* 0x062a: i2c_drive_scl */
+/* 0x0664: perf_init */
+/* 0x0666: i2c_drive_scl */
        0x36b000f8,
        0x110bf400,
        0x07e007f1,
        0xd00604b6,
        0x04bd0001,
-/* 0x063e: i2c_drive_scl_lo */
+/* 0x067a: i2c_drive_scl_lo */
        0x07f100f8,
        0x04b607e4,
        0x0001d006,
        0x00f804bd,
-/* 0x064c: i2c_drive_sda */
+/* 0x0688: i2c_drive_sda */
        0xf40036b0,
        0x07f1110b,
        0x04b607e0,
        0x0002d006,
        0x00f804bd,
-/* 0x0660: i2c_drive_sda_lo */
+/* 0x069c: i2c_drive_sda_lo */
        0x07e407f1,
        0xd00604b6,
        0x04bd0002,
-/* 0x066e: i2c_sense_scl */
+/* 0x06aa: i2c_sense_scl */
        0x32f400f8,
        0xc437f101,
        0x0634b607,
        0xfd0033cf,
        0x0bf40431,
        0x0131f406,
-/* 0x0684: i2c_sense_scl_done */
-/* 0x0686: i2c_sense_sda */
+/* 0x06c0: i2c_sense_scl_done */
+/* 0x06c2: i2c_sense_sda */
        0x32f400f8,
        0xc437f101,
        0x0634b607,
        0xfd0033cf,
        0x0bf40432,
        0x0131f406,
-/* 0x069c: i2c_sense_sda_done */
-/* 0x069e: i2c_raise_scl */
+/* 0x06d8: i2c_sense_sda_done */
+/* 0x06da: i2c_raise_scl */
        0x40f900f8,
        0x089847f1,
        0xf50137f0,
-/* 0x06ab: i2c_raise_scl_wait */
-       0xf1062a21,
+/* 0x06e7: i2c_raise_scl_wait */
+       0xf1066621,
        0xf403e8e7,
        0x21f57f21,
-       0x01f4066e,
+       0x01f406aa,
        0x0142b609,
-/* 0x06bf: i2c_raise_scl_done */
+/* 0x06fb: i2c_raise_scl_done */
        0xfcef1bf4,
-/* 0x06c3: i2c_start */
+/* 0x06ff: i2c_start */
        0xf500f840,
-       0xf4066e21,
+       0xf406aa21,
        0x21f50d11,
-       0x11f40686,
+       0x11f406c2,
        0x300ef406,
-/* 0x06d4: i2c_start_rep */
+/* 0x0710: i2c_start_rep */
        0xf50037f0,
-       0xf0062a21,
+       0xf0066621,
        0x21f50137,
-       0x76bb064c,
+       0x76bb0688,
        0x0465b600,
        0x659450f9,
        0x0256bb04,
        0x75fd50bd,
        0xf550fc04,
-       0xb6069e21,
+       0xb606da21,
        0x11f40464,
-/* 0x0701: i2c_start_send */
+/* 0x073d: i2c_start_send */
        0x0037f01f,
-       0x064c21f5,
+       0x068821f5,
        0x1388e7f1,
        0xf07f21f4,
        0x21f50037,
-       0xe7f1062a,
+       0xe7f10666,
        0x21f41388,
-/* 0x071d: i2c_start_out */
-/* 0x071f: i2c_stop */
+/* 0x0759: i2c_start_out */
+/* 0x075b: i2c_stop */
        0xf000f87f,
        0x21f50037,
-       0x37f0062a,
-       0x4c21f500,
+       0x37f00666,
+       0x8821f500,
        0xe8e7f106,
        0x7f21f403,
        0xf50137f0,
-       0xf1062a21,
+       0xf1066621,
        0xf41388e7,
        0x37f07f21,
-       0x4c21f501,
+       0x8821f501,
        0x88e7f106,
        0x7f21f413,
-/* 0x0752: i2c_bitw */
+/* 0x078e: i2c_bitw */
        0x21f500f8,
-       0xe7f1064c,
+       0xe7f10688,
        0x21f403e8,
        0x0076bb7f,
        0xf90465b6,
@@ -1401,18 +1422,18 @@ uint32_t nvc0_pwr_code[] = {
        0xbd0256bb,
        0x0475fd50,
        0x21f550fc,
-       0x64b6069e,
+       0x64b606da,
        0x1811f404,
        0x1388e7f1,
        0xf07f21f4,
        0x21f50037,
-       0xe7f1062a,
+       0xe7f10666,
        0x21f41388,
-/* 0x0791: i2c_bitw_out */
-/* 0x0793: i2c_bitr */
+/* 0x07cd: i2c_bitw_out */
+/* 0x07cf: i2c_bitr */
        0xf000f87f,
        0x21f50137,
-       0xe7f1064c,
+       0xe7f10688,
        0x21f403e8,
        0x0076bb7f,
        0xf90465b6,
@@ -1420,26 +1441,26 @@ uint32_t nvc0_pwr_code[] = {
        0xbd0256bb,
        0x0475fd50,
        0x21f550fc,
-       0x64b6069e,
+       0x64b606da,
        0x1b11f404,
-       0x068621f5,
+       0x06c221f5,
        0xf50037f0,
-       0xf1062a21,
+       0xf1066621,
        0xf41388e7,
        0x3cf07f21,
        0x0131f401,
-/* 0x07d8: i2c_bitr_done */
-/* 0x07da: i2c_get_byte */
+/* 0x0814: i2c_bitr_done */
+/* 0x0816: i2c_get_byte */
        0x57f000f8,
        0x0847f000,
-/* 0x07e0: i2c_get_byte_next */
+/* 0x081c: i2c_get_byte_next */
        0xbb0154b6,
        0x65b60076,
        0x9450f904,
        0x56bb0465,
        0xfd50bd02,
        0x50fc0475,
-       0x079321f5,
+       0x07cf21f5,
        0xf40464b6,
        0x53fd2b11,
        0x0142b605,
@@ -1450,11 +1471,11 @@ uint32_t nvc0_pwr_code[] = {
        0x0256bb04,
        0x75fd50bd,
        0xf550fc04,
-       0xb6075221,
-/* 0x082a: i2c_get_byte_done */
+       0xb6078e21,
+/* 0x0866: i2c_get_byte_done */
        0x00f80464,
-/* 0x082c: i2c_put_byte */
-/* 0x082f: i2c_put_byte_next */
+/* 0x0868: i2c_put_byte */
+/* 0x086b: i2c_put_byte_next */
        0xb60847f0,
        0x54ff0142,
        0x0076bb38,
@@ -1463,7 +1484,7 @@ uint32_t nvc0_pwr_code[] = {
        0xbd0256bb,
        0x0475fd50,
        0x21f550fc,
-       0x64b60752,
+       0x64b6078e,
        0x3411f404,
        0xf40046b0,
        0x76bbd81b,
@@ -1472,20 +1493,20 @@ uint32_t nvc0_pwr_code[] = {
        0x0256bb04,
        0x75fd50bd,
        0xf550fc04,
-       0xb6079321,
+       0xb607cf21,
        0x11f40464,
        0x0076bb0f,
        0xf40136b0,
        0x32f4061b,
-/* 0x0885: i2c_put_byte_done */
-/* 0x0887: i2c_addr */
+/* 0x08c1: i2c_put_byte_done */
+/* 0x08c3: i2c_addr */
        0xbb00f801,
        0x65b60076,
        0x9450f904,
        0x56bb0465,
        0xfd50bd02,
        0x50fc0475,
-       0x06c321f5,
+       0x06ff21f5,
        0xf40464b6,
        0xc3e72911,
        0x34b6012e,
@@ -1495,32 +1516,32 @@ uint32_t nvc0_pwr_code[] = {
        0xbb046594,
        0x50bd0256,
        0xfc0475fd,
-       0x2c21f550,
+       0x6821f550,
        0x0464b608,
-/* 0x08cc: i2c_addr_done */
-/* 0x08ce: i2c_acquire_addr */
+/* 0x0908: i2c_addr_done */
+/* 0x090a: i2c_acquire_addr */
        0xcec700f8,
        0x02e4b6f8,
-       0x0bfce0b7,
+       0x0c08e0b7,
        0xf800ee98,
-/* 0x08dd: i2c_acquire */
-       0xce21f500,
-       0x0421f408,
+/* 0x0919: i2c_acquire */
+       0x0a21f500,
+       0x0421f409,
        0xf403d9f0,
        0x00f83f21,
-/* 0x08ec: i2c_release */
-       0x08ce21f5,
+/* 0x0928: i2c_release */
+       0x090a21f5,
        0xf00421f4,
        0x21f403da,
-/* 0x08fb: i2c_recv */
+/* 0x0937: i2c_recv */
        0xf400f83f,
        0xc1c70132,
        0x0214b6f8,
        0xf52816b0,
        0xa0013a1f,
-       0x980bd413,
+       0x980be013,
        0x13a00032,
-       0x31980bac,
+       0x31980bb8,
        0x0231f400,
        0xe0f9d0f9,
        0x67f1d0f9,
@@ -1532,7 +1553,7 @@ uint32_t nvc0_pwr_code[] = {
        0xbd0256bb,
        0x0475fd50,
        0x21f550fc,
-       0x64b608dd,
+       0x64b60919,
        0xb0d0fc04,
        0x1bf500d6,
        0x57f000b3,
@@ -1542,7 +1563,7 @@ uint32_t nvc0_pwr_code[] = {
        0xbd0256bb,
        0x0475fd50,
        0x21f550fc,
-       0x64b60887,
+       0x64b608c3,
        0xd011f504,
        0xe0c5c700,
        0xb60076bb,
@@ -1550,7 +1571,7 @@ uint32_t nvc0_pwr_code[] = {
        0xbb046594,
        0x50bd0256,
        0xfc0475fd,
-       0x2c21f550,
+       0x6821f550,
        0x0464b608,
        0x00ad11f5,
        0xbb0157f0,
@@ -1559,7 +1580,7 @@ uint32_t nvc0_pwr_code[] = {
        0x56bb0465,
        0xfd50bd02,
        0x50fc0475,
-       0x088721f5,
+       0x08c321f5,
        0xf50464b6,
        0xbb008a11,
        0x65b60076,
@@ -1567,7 +1588,7 @@ uint32_t nvc0_pwr_code[] = {
        0x56bb0465,
        0xfd50bd02,
        0x50fc0475,
-       0x07da21f5,
+       0x081621f5,
        0xf40464b6,
        0x5bcb6a11,
        0x0076bbe0,
@@ -1576,37 +1597,37 @@ uint32_t nvc0_pwr_code[] = {
        0xbd0256bb,
        0x0475fd50,
        0x21f550fc,
-       0x64b6071f,
+       0x64b6075b,
        0x025bb904,
        0x0ef474bd,
-/* 0x0a01: i2c_recv_not_rd08 */
+/* 0x0a3d: i2c_recv_not_rd08 */
        0x01d6b043,
        0xf03d1bf4,
        0x21f50057,
-       0x11f40887,
+       0x11f408c3,
        0xe0c5c733,
-       0x082c21f5,
+       0x086821f5,
        0xf02911f4,
        0x21f50057,
-       0x11f40887,
+       0x11f408c3,
        0xe0b5c71f,
-       0x082c21f5,
+       0x086821f5,
        0xf51511f4,
-       0xbd071f21,
+       0xbd075b21,
        0x08c5c774,
        0xf4091bf4,
        0x0ef40232,
-/* 0x0a41: i2c_recv_not_wr08 */
-/* 0x0a41: i2c_recv_done */
+/* 0x0a7d: i2c_recv_not_wr08 */
+/* 0x0a7d: i2c_recv_done */
        0xf8cec703,
-       0x08ec21f5,
+       0x092821f5,
        0xd0fce0fc,
        0xb90a12f4,
        0x21f5027c,
-/* 0x0a56: i2c_recv_exit */
+/* 0x0a92: i2c_recv_exit */
        0x00f80342,
-/* 0x0a58: i2c_init */
-/* 0x0a5a: test_recv */
+/* 0x0a94: i2c_init */
+/* 0x0a96: test_recv */
        0x17f100f8,
        0x14b605d8,
        0x0011cf06,
@@ -1617,12 +1638,12 @@ uint32_t nvc0_pwr_code[] = {
        0xf1d900e7,
        0xf5134fe3,
        0xf8026221,
-/* 0x0a81: test_init */
+/* 0x0abd: test_init */
        0x00e7f100,
        0x6221f508,
-/* 0x0a8b: idle_recv */
+/* 0x0ac7: idle_recv */
        0xf800f802,
-/* 0x0a8d: idle */
+/* 0x0ac9: idle */
        0x0031f400,
        0x05d417f1,
        0xcf0614b6,
@@ -1630,16 +1651,16 @@ uint32_t nvc0_pwr_code[] = {
        0xd407f101,
        0x0604b605,
        0xbd0001d0,
-/* 0x0aa9: idle_loop */
+/* 0x0ae5: idle_loop */
        0x5817f004,
-/* 0x0aaf: idle_proc */
-/* 0x0aaf: idle_proc_exec */
+/* 0x0aeb: idle_proc */
+/* 0x0aeb: idle_proc_exec */
        0xf90232f4,
        0x021eb910,
        0x034b21f5,
        0x11f410fc,
        0x0231f409,
-/* 0x0ac3: idle_proc_next */
+/* 0x0aff: idle_proc_next */
        0xb6ef0ef4,
        0x1fb85810,
        0xe61bf406,
@@ -1656,4 +1677,53 @@ uint32_t nvc0_pwr_code[] = {
        0x00000000,
        0x00000000,
        0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
 };
index a8e65e74823cfc8d77e734f9ba7d391247e003ed..5131590637978aaf352c5f966b1b72f24b359737 100644 (file)
@@ -46,8 +46,8 @@ uint32_t nvd0_pwr_data[] = {
        0x00000000,
        0x00000000,
        0x584d454d,
-       0x00000597,
-       0x00000589,
+       0x00000596,
+       0x00000588,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -68,8 +68,8 @@ uint32_t nvd0_pwr_data[] = {
        0x00000000,
        0x00000000,
        0x46524550,
-       0x0000059b,
-       0x00000599,
+       0x0000059a,
+       0x00000598,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -90,8 +90,8 @@ uint32_t nvd0_pwr_data[] = {
        0x00000000,
        0x00000000,
        0x5f433249,
-       0x000009b6,
-       0x00000859,
+       0x000009b5,
+       0x00000858,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -112,8 +112,8 @@ uint32_t nvd0_pwr_data[] = {
        0x00000000,
        0x00000000,
        0x54534554,
-       0x000009d9,
-       0x000009b8,
+       0x000009d8,
+       0x000009b7,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -134,8 +134,8 @@ uint32_t nvd0_pwr_data[] = {
        0x00000000,
        0x00000000,
        0x454c4449,
-       0x000009e5,
-       0x000009e3,
+       0x000009e4,
+       0x000009e2,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -227,25 +227,27 @@ uint32_t nvd0_pwr_data[] = {
        0x00000000,
        0x00000000,
 /* 0x0370: memx_func_head */
-       0x00010000,
+       0x00000000,
        0x00000000,
        0x000004d3,
 /* 0x037c: memx_func_next */
        0x00000001,
        0x00000000,
-       0x000004f4,
+       0x000004ee,
        0x00000002,
        0x00000002,
-       0x0000050f,
+       0x0000050e,
        0x00040003,
        0x00000000,
-       0x0000052b,
+       0x0000052a,
        0x00010004,
        0x00000000,
-       0x00000545,
-/* 0x03ac: memx_func_tail */
-/* 0x03ac: memx_data_head */
+       0x00000544,
+       0x00010005,
        0x00000000,
+       0x00000509,
+/* 0x03b8: memx_func_tail */
+/* 0x03b8: memx_data_head */
        0x00000000,
        0x00000000,
        0x00000000,
@@ -757,8 +759,9 @@ uint32_t nvd0_pwr_data[] = {
        0x00000000,
        0x00000000,
        0x00000000,
-/* 0x0bac: memx_data_tail */
-/* 0x0bac: i2c_scl_map */
+       0x00000000,
+/* 0x0bb8: memx_data_tail */
+/* 0x0bb8: i2c_scl_map */
        0x00000400,
        0x00000800,
        0x00001000,
@@ -769,7 +772,7 @@ uint32_t nvd0_pwr_data[] = {
        0x00020000,
        0x00040000,
        0x00080000,
-/* 0x0bd4: i2c_sda_map */
+/* 0x0be0: i2c_sda_map */
        0x00100000,
        0x00200000,
        0x00400000,
@@ -781,6 +784,67 @@ uint32_t nvd0_pwr_data[] = {
        0x10000000,
        0x20000000,
        0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
 };
 
 uint32_t nvd0_pwr_code[] = {
@@ -1145,398 +1209,399 @@ uint32_t nvd0_pwr_code[] = {
        0xcf07c067,
        0x64f00066,
        0xf60bf404,
-       0xb6001698,
-       0x00f80410,
-/* 0x04f4: memx_func_leave */
-       0xf10467f0,
-       0xd007e407,
-       0x04bd0006,
-/* 0x0500: memx_func_leave_wait */
-       0x07c067f1,
-       0xf00066cf,
-       0x1bf40464,
-/* 0x050f: memx_func_wr32 */
-       0x9800f8f6,
-       0x15980016,
-       0x0810b601,
-       0x50f960f9,
-       0xe0fcd0fc,
-       0xb63321f4,
-       0x1bf40242,
-/* 0x052b: memx_func_wait */
-       0xf000f8e9,
-       0x88cf2c87,
-       0x001e9800,
-       0x98011d98,
-       0x1b98021c,
-       0x1010b603,
-       0xf88621f4,
-/* 0x0545: memx_func_delay */
-       0x001e9800,
-       0xf40410b6,
-       0x00f86721,
-/* 0x0550: memx_exec */
-       0xd0f9e0f9,
-       0xb902c1b9,
-/* 0x055a: memx_exec_next */
-       0x139802b2,
+/* 0x04ee: memx_func_leave */
+       0x67f000f8,
+       0xe407f104,
+       0x0006d007,
+/* 0x04fa: memx_func_leave_wait */
+       0x67f104bd,
+       0x66cf07c0,
+       0x0464f000,
+       0xf8f61bf4,
+/* 0x0509: memx_func_wait_vblank */
        0x0410b600,
-       0xf0103495,
-       0x35980c30,
-       0xb855f9de,
-       0x1ef40612,
-       0xfcd0fcec,
-       0xf121f5e0,
-/* 0x057b: memx_info */
-       0xf100f802,
-       0xf103acc7,
-       0xf50800b7,
-       0xf802f121,
-/* 0x0589: memx_recv */
-       0x01d6b000,
-       0xb0c40bf4,
-       0x0bf400d6,
-/* 0x0597: memx_init */
-       0xf800f8e9,
-/* 0x0599: perf_recv */
-/* 0x059b: perf_init */
-       0xf800f800,
-/* 0x059d: i2c_drive_scl */
-       0x0036b000,
-       0xf10e0bf4,
-       0xd007e007,
-       0x04bd0001,
-/* 0x05ae: i2c_drive_scl_lo */
-       0x07f100f8,
-       0x01d007e4,
+/* 0x050e: memx_func_wr32 */
+       0x169800f8,
+       0x01159800,
+       0xf90810b6,
+       0xfc50f960,
+       0xf4e0fcd0,
+       0x42b63321,
+       0xe91bf402,
+/* 0x052a: memx_func_wait */
+       0x87f000f8,
+       0x0088cf2c,
+       0x98001e98,
+       0x1c98011d,
+       0x031b9802,
+       0xf41010b6,
+       0x00f88621,
+/* 0x0544: memx_func_delay */
+       0xb6001e98,
+       0x21f40410,
+/* 0x054f: memx_exec */
+       0xf900f867,
+       0xb9d0f9e0,
+       0xb2b902c1,
+/* 0x0559: memx_exec_next */
+       0x00139802,
+       0x950410b6,
+       0x30f01034,
+       0xde35980c,
+       0x12b855f9,
+       0xec1ef406,
+       0xe0fcd0fc,
+       0x02f121f5,
+/* 0x057a: memx_info */
+       0xc7f100f8,
+       0xb7f103b8,
+       0x21f50800,
+       0x00f802f1,
+/* 0x0588: memx_recv */
+       0xf401d6b0,
+       0xd6b0c40b,
+       0xe90bf400,
+/* 0x0596: memx_init */
+       0x00f800f8,
+/* 0x0598: perf_recv */
+/* 0x059a: perf_init */
+       0x00f800f8,
+/* 0x059c: i2c_drive_scl */
+       0xf40036b0,
+       0x07f10e0b,
+       0x01d007e0,
        0xf804bd00,
-/* 0x05b9: i2c_drive_sda */
-       0x0036b000,
-       0xf10e0bf4,
-       0xd007e007,
-       0x04bd0002,
-/* 0x05ca: i2c_drive_sda_lo */
-       0x07f100f8,
-       0x02d007e4,
+/* 0x05ad: i2c_drive_scl_lo */
+       0xe407f100,
+       0x0001d007,
+       0x00f804bd,
+/* 0x05b8: i2c_drive_sda */
+       0xf40036b0,
+       0x07f10e0b,
+       0x02d007e0,
        0xf804bd00,
-/* 0x05d5: i2c_sense_scl */
+/* 0x05c9: i2c_drive_sda_lo */
+       0xe407f100,
+       0x0002d007,
+       0x00f804bd,
+/* 0x05d4: i2c_sense_scl */
+       0xf10132f4,
+       0xcf07c437,
+       0x31fd0033,
+       0x060bf404,
+/* 0x05e7: i2c_sense_scl_done */
+       0xf80131f4,
+/* 0x05e9: i2c_sense_sda */
        0x0132f400,
        0x07c437f1,
        0xfd0033cf,
-       0x0bf40431,
+       0x0bf40432,
        0x0131f406,
-/* 0x05e8: i2c_sense_scl_done */
-/* 0x05ea: i2c_sense_sda */
-       0x32f400f8,
-       0xc437f101,
-       0x0033cf07,
-       0xf40432fd,
-       0x31f4060b,
-/* 0x05fd: i2c_sense_sda_done */
-/* 0x05ff: i2c_raise_scl */
-       0xf900f801,
-       0x9847f140,
-       0x0137f008,
-       0x059d21f5,
-/* 0x060c: i2c_raise_scl_wait */
-       0x03e8e7f1,
-       0xf56721f4,
-       0xf405d521,
-       0x42b60901,
-       0xef1bf401,
-/* 0x0620: i2c_raise_scl_done */
-       0x00f840fc,
-/* 0x0624: i2c_start */
-       0x05d521f5,
-       0xf50d11f4,
-       0xf405ea21,
-       0x0ef40611,
-/* 0x0635: i2c_start_rep */
-       0x0037f030,
-       0x059d21f5,
+/* 0x05fc: i2c_sense_sda_done */
+/* 0x05fe: i2c_raise_scl */
+       0x40f900f8,
+       0x089847f1,
        0xf50137f0,
-       0xbb05b921,
-       0x65b60076,
-       0x9450f904,
-       0x56bb0465,
-       0xfd50bd02,
-       0x50fc0475,
-       0x05ff21f5,
-       0xf40464b6,
-/* 0x0662: i2c_start_send */
-       0x37f01f11,
-       0xb921f500,
-       0x88e7f105,
-       0x6721f413,
-       0xf50037f0,
-       0xf1059d21,
-       0xf41388e7,
-/* 0x067e: i2c_start_out */
-       0x00f86721,
-/* 0x0680: i2c_stop */
+/* 0x060b: i2c_raise_scl_wait */
+       0xf1059c21,
+       0xf403e8e7,
+       0x21f56721,
+       0x01f405d4,
+       0x0142b609,
+/* 0x061f: i2c_raise_scl_done */
+       0xfcef1bf4,
+/* 0x0623: i2c_start */
+       0xf500f840,
+       0xf405d421,
+       0x21f50d11,
+       0x11f405e9,
+       0x300ef406,
+/* 0x0634: i2c_start_rep */
        0xf50037f0,
-       0xf0059d21,
-       0x21f50037,
-       0xe7f105b9,
-       0x21f403e8,
-       0x0137f067,
-       0x059d21f5,
-       0x1388e7f1,
-       0xf06721f4,
+       0xf0059c21,
        0x21f50137,
-       0xe7f105b9,
-       0x21f41388,
-/* 0x06b3: i2c_bitw */
-       0xf500f867,
-       0xf105b921,
-       0xf403e8e7,
-       0x76bb6721,
+       0x76bb05b8,
        0x0465b600,
        0x659450f9,
        0x0256bb04,
        0x75fd50bd,
        0xf550fc04,
-       0xb605ff21,
+       0xb605fe21,
        0x11f40464,
-       0x88e7f118,
-       0x6721f413,
-       0xf50037f0,
-       0xf1059d21,
-       0xf41388e7,
-/* 0x06f2: i2c_bitw_out */
-       0x00f86721,
-/* 0x06f4: i2c_bitr */
+/* 0x0661: i2c_start_send */
+       0x0037f01f,
+       0x05b821f5,
+       0x1388e7f1,
+       0xf06721f4,
+       0x21f50037,
+       0xe7f1059c,
+       0x21f41388,
+/* 0x067d: i2c_start_out */
+/* 0x067f: i2c_stop */
+       0xf000f867,
+       0x21f50037,
+       0x37f0059c,
+       0xb821f500,
+       0xe8e7f105,
+       0x6721f403,
        0xf50137f0,
-       0xf105b921,
-       0xf403e8e7,
-       0x76bb6721,
-       0x0465b600,
-       0x659450f9,
-       0x0256bb04,
-       0x75fd50bd,
-       0xf550fc04,
-       0xb605ff21,
-       0x11f40464,
-       0xea21f51b,
-       0x0037f005,
-       0x059d21f5,
+       0xf1059c21,
+       0xf41388e7,
+       0x37f06721,
+       0xb821f501,
+       0x88e7f105,
+       0x6721f413,
+/* 0x06b2: i2c_bitw */
+       0x21f500f8,
+       0xe7f105b8,
+       0x21f403e8,
+       0x0076bb67,
+       0xf90465b6,
+       0x04659450,
+       0xbd0256bb,
+       0x0475fd50,
+       0x21f550fc,
+       0x64b605fe,
+       0x1811f404,
        0x1388e7f1,
        0xf06721f4,
-       0x31f4013c,
-/* 0x0739: i2c_bitr_done */
-/* 0x073b: i2c_get_byte */
-       0xf000f801,
-       0x47f00057,
-/* 0x0741: i2c_get_byte_next */
-       0x0154b608,
-       0xb60076bb,
-       0x50f90465,
-       0xbb046594,
-       0x50bd0256,
-       0xfc0475fd,
-       0xf421f550,
-       0x0464b606,
-       0xfd2b11f4,
-       0x42b60553,
-       0xd81bf401,
-       0xbb0137f0,
+       0x21f50037,
+       0xe7f1059c,
+       0x21f41388,
+/* 0x06f1: i2c_bitw_out */
+/* 0x06f3: i2c_bitr */
+       0xf000f867,
+       0x21f50137,
+       0xe7f105b8,
+       0x21f403e8,
+       0x0076bb67,
+       0xf90465b6,
+       0x04659450,
+       0xbd0256bb,
+       0x0475fd50,
+       0x21f550fc,
+       0x64b605fe,
+       0x1b11f404,
+       0x05e921f5,
+       0xf50037f0,
+       0xf1059c21,
+       0xf41388e7,
+       0x3cf06721,
+       0x0131f401,
+/* 0x0738: i2c_bitr_done */
+/* 0x073a: i2c_get_byte */
+       0x57f000f8,
+       0x0847f000,
+/* 0x0740: i2c_get_byte_next */
+       0xbb0154b6,
        0x65b60076,
        0x9450f904,
        0x56bb0465,
        0xfd50bd02,
        0x50fc0475,
-       0x06b321f5,
-/* 0x078b: i2c_get_byte_done */
-       0xf80464b6,
-/* 0x078d: i2c_put_byte */
-       0x0847f000,
-/* 0x0790: i2c_put_byte_next */
-       0xff0142b6,
-       0x76bb3854,
+       0x06f321f5,
+       0xf40464b6,
+       0x53fd2b11,
+       0x0142b605,
+       0xf0d81bf4,
+       0x76bb0137,
        0x0465b600,
        0x659450f9,
        0x0256bb04,
        0x75fd50bd,
        0xf550fc04,
-       0xb606b321,
+       0xb606b221,
+/* 0x078a: i2c_get_byte_done */
+       0x00f80464,
+/* 0x078c: i2c_put_byte */
+/* 0x078f: i2c_put_byte_next */
+       0xb60847f0,
+       0x54ff0142,
+       0x0076bb38,
+       0xf90465b6,
+       0x04659450,
+       0xbd0256bb,
+       0x0475fd50,
+       0x21f550fc,
+       0x64b606b2,
+       0x3411f404,
+       0xf40046b0,
+       0x76bbd81b,
+       0x0465b600,
+       0x659450f9,
+       0x0256bb04,
+       0x75fd50bd,
+       0xf550fc04,
+       0xb606f321,
        0x11f40464,
-       0x0046b034,
-       0xbbd81bf4,
+       0x0076bb0f,
+       0xf40136b0,
+       0x32f4061b,
+/* 0x07e5: i2c_put_byte_done */
+/* 0x07e7: i2c_addr */
+       0xbb00f801,
        0x65b60076,
        0x9450f904,
        0x56bb0465,
        0xfd50bd02,
        0x50fc0475,
-       0x06f421f5,
+       0x062321f5,
        0xf40464b6,
-       0x76bb0f11,
-       0x0136b000,
-       0xf4061bf4,
-/* 0x07e6: i2c_put_byte_done */
-       0x00f80132,
-/* 0x07e8: i2c_addr */
+       0xc3e72911,
+       0x34b6012e,
+       0x0553fd01,
        0xb60076bb,
        0x50f90465,
        0xbb046594,
        0x50bd0256,
        0xfc0475fd,
-       0x2421f550,
-       0x0464b606,
-       0xe72911f4,
-       0xb6012ec3,
-       0x53fd0134,
-       0x0076bb05,
-       0xf90465b6,
-       0x04659450,
-       0xbd0256bb,
-       0x0475fd50,
-       0x21f550fc,
-       0x64b6078d,
-/* 0x082d: i2c_addr_done */
-/* 0x082f: i2c_acquire_addr */
-       0xc700f804,
-       0xe4b6f8ce,
-       0x14e0b705,
-/* 0x083b: i2c_acquire */
-       0xf500f8d0,
-       0xf4082f21,
-       0xd9f00421,
-       0x3321f403,
-/* 0x084a: i2c_release */
+       0x8c21f550,
+       0x0464b607,
+/* 0x082c: i2c_addr_done */
+/* 0x082e: i2c_acquire_addr */
+       0xcec700f8,
+       0x05e4b6f8,
+       0xd014e0b7,
+/* 0x083a: i2c_acquire */
        0x21f500f8,
-       0x21f4082f,
-       0x03daf004,
+       0x21f4082e,
+       0x03d9f004,
        0xf83321f4,
-/* 0x0859: i2c_recv */
-       0x0132f400,
-       0xb6f8c1c7,
-       0x16b00214,
-       0x3a1ff528,
-       0xd413a001,
-       0x0032980b,
-       0x0bac13a0,
-       0xf4003198,
-       0xd0f90231,
-       0xd0f9e0f9,
-       0x000067f1,
-       0x100063f1,
-       0xbb016792,
-       0x65b60076,
-       0x9450f904,
-       0x56bb0465,
-       0xfd50bd02,
-       0x50fc0475,
-       0x083b21f5,
-       0xfc0464b6,
-       0x00d6b0d0,
-       0x00b31bf5,
-       0xbb0057f0,
-       0x65b60076,
-       0x9450f904,
-       0x56bb0465,
-       0xfd50bd02,
-       0x50fc0475,
-       0x07e821f5,
-       0xf50464b6,
-       0xc700d011,
-       0x76bbe0c5,
+/* 0x0849: i2c_release */
+       0x2e21f500,
+       0x0421f408,
+       0xf403daf0,
+       0x00f83321,
+/* 0x0858: i2c_recv */
+       0xc70132f4,
+       0x14b6f8c1,
+       0x2816b002,
+       0x013a1ff5,
+       0x0be013a0,
+       0xa0003298,
+       0x980bb813,
+       0x31f40031,
+       0xf9d0f902,
+       0xf1d0f9e0,
+       0xf1000067,
+       0x92100063,
+       0x76bb0167,
+       0x0465b600,
+       0x659450f9,
+       0x0256bb04,
+       0x75fd50bd,
+       0xf550fc04,
+       0xb6083a21,
+       0xd0fc0464,
+       0xf500d6b0,
+       0xf000b31b,
+       0x76bb0057,
        0x0465b600,
        0x659450f9,
        0x0256bb04,
        0x75fd50bd,
        0xf550fc04,
-       0xb6078d21,
+       0xb607e721,
        0x11f50464,
-       0x57f000ad,
-       0x0076bb01,
+       0xc5c700d0,
+       0x0076bbe0,
        0xf90465b6,
        0x04659450,
        0xbd0256bb,
        0x0475fd50,
        0x21f550fc,
-       0x64b607e8,
-       0x8a11f504,
-       0x0076bb00,
-       0xf90465b6,
-       0x04659450,
-       0xbd0256bb,
-       0x0475fd50,
-       0x21f550fc,
-       0x64b6073b,
-       0x6a11f404,
-       0xbbe05bcb,
-       0x65b60076,
-       0x9450f904,
-       0x56bb0465,
-       0xfd50bd02,
-       0x50fc0475,
-       0x068021f5,
-       0xb90464b6,
-       0x74bd025b,
-/* 0x095f: i2c_recv_not_rd08 */
-       0xb0430ef4,
-       0x1bf401d6,
-       0x0057f03d,
-       0x07e821f5,
-       0xc73311f4,
-       0x21f5e0c5,
-       0x11f4078d,
-       0x0057f029,
-       0x07e821f5,
-       0xc71f11f4,
-       0x21f5e0b5,
-       0x11f4078d,
-       0x8021f515,
-       0xc774bd06,
-       0x1bf408c5,
-       0x0232f409,
-/* 0x099f: i2c_recv_not_wr08 */
-/* 0x099f: i2c_recv_done */
-       0xc7030ef4,
-       0x21f5f8ce,
-       0xe0fc084a,
-       0x12f4d0fc,
-       0x027cb90a,
-       0x02f121f5,
-/* 0x09b4: i2c_recv_exit */
-/* 0x09b6: i2c_init */
+       0x64b6078c,
+       0xad11f504,
+       0x0157f000,
+       0xb60076bb,
+       0x50f90465,
+       0xbb046594,
+       0x50bd0256,
+       0xfc0475fd,
+       0xe721f550,
+       0x0464b607,
+       0x008a11f5,
+       0xb60076bb,
+       0x50f90465,
+       0xbb046594,
+       0x50bd0256,
+       0xfc0475fd,
+       0x3a21f550,
+       0x0464b607,
+       0xcb6a11f4,
+       0x76bbe05b,
+       0x0465b600,
+       0x659450f9,
+       0x0256bb04,
+       0x75fd50bd,
+       0xf550fc04,
+       0xb6067f21,
+       0x5bb90464,
+       0xf474bd02,
+/* 0x095e: i2c_recv_not_rd08 */
+       0xd6b0430e,
+       0x3d1bf401,
+       0xf50057f0,
+       0xf407e721,
+       0xc5c73311,
+       0x8c21f5e0,
+       0x2911f407,
+       0xf50057f0,
+       0xf407e721,
+       0xb5c71f11,
+       0x8c21f5e0,
+       0x1511f407,
+       0x067f21f5,
+       0xc5c774bd,
+       0x091bf408,
+       0xf40232f4,
+/* 0x099e: i2c_recv_not_wr08 */
+/* 0x099e: i2c_recv_done */
+       0xcec7030e,
+       0x4921f5f8,
+       0xfce0fc08,
+       0x0a12f4d0,
+       0xf5027cb9,
+/* 0x09b3: i2c_recv_exit */
+       0xf802f121,
+/* 0x09b5: i2c_init */
+/* 0x09b7: test_recv */
+       0xf100f800,
+       0xcf05d817,
+       0x10b60011,
+       0xd807f101,
+       0x0001d005,
+       0xe7f104bd,
+       0xe3f1d900,
+       0x21f5134f,
+       0x00f80223,
+/* 0x09d8: test_init */
+       0x0800e7f1,
+       0x022321f5,
+/* 0x09e2: idle_recv */
        0x00f800f8,
-/* 0x09b8: test_recv */
-       0x05d817f1,
-       0xb60011cf,
-       0x07f10110,
-       0x01d005d8,
-       0xf104bd00,
-       0xf1d900e7,
-       0xf5134fe3,
-       0xf8022321,
-/* 0x09d9: test_init */
-       0x00e7f100,
-       0x2321f508,
-/* 0x09e3: idle_recv */
-       0xf800f802,
-/* 0x09e5: idle */
-       0x0031f400,
-       0x05d417f1,
-       0xb60011cf,
-       0x07f10110,
-       0x01d005d4,
-/* 0x09fb: idle_loop */
-       0xf004bd00,
-       0x32f45817,
-/* 0x0a01: idle_proc */
-/* 0x0a01: idle_proc_exec */
-       0xb910f902,
-       0x21f5021e,
-       0x10fc02fa,
-       0xf40911f4,
-       0x0ef40231,
-/* 0x0a15: idle_proc_next */
-       0x5810b6ef,
-       0xf4061fb8,
-       0x02f4e61b,
-       0x0028f4dd,
-       0x00c10ef4,
+/* 0x09e4: idle */
+       0xf10031f4,
+       0xcf05d417,
+       0x10b60011,
+       0xd407f101,
+       0x0001d005,
+/* 0x09fa: idle_loop */
+       0x17f004bd,
+       0x0232f458,
+/* 0x0a00: idle_proc */
+/* 0x0a00: idle_proc_exec */
+       0x1eb910f9,
+       0xfa21f502,
+       0xf410fc02,
+       0x31f40911,
+       0xef0ef402,
+/* 0x0a14: idle_proc_next */
+       0xb85810b6,
+       0x1bf4061f,
+       0xdd02f4e6,
+       0xf40028f4,
+       0x0000c10e,
        0x00000000,
        0x00000000,
        0x00000000,
index 574acfa44c8c78f327dcd9d59cc7e1b6e9b2bc1f..80f8328fa6da359552f838336e7950adc19b7360 100644 (file)
@@ -24,6 +24,7 @@
 #define MEMX_WR32   2
 #define MEMX_WAIT   3
 #define MEMX_DELAY  4
+#define MEMX_VBLANK 5
 
 /* I2C_: message identifiers */
 #define I2C__MSG_RD08 0
index def6a9ac68cfa5b6db7c52897df5e4af19c3a5c2..68baa7283736ed615fc5332a4f519041adec4d48 100644 (file)
@@ -63,7 +63,7 @@ nouveau_memx_init(struct nouveau_pwr *ppwr, struct nouveau_memx **pmemx)
        } while (nv_rd32(ppwr, 0x10a580) != 0x00000003);
        nv_wr32(ppwr, 0x10a1c0, 0x01000000 | memx->base);
        nv_wr32(ppwr, 0x10a1c4, 0x00010000 | MEMX_ENTER);
-       nv_wr32(ppwr, 0x10a1c4, 0x00000000);
+
        return 0;
 }
 
@@ -117,4 +117,37 @@ nouveau_memx_nsec(struct nouveau_memx *memx, u32 nsec)
        memx_out(memx); /* fuc can't handle multiple */
 }
 
+void
+nouveau_memx_wait_vblank(struct nouveau_memx *memx)
+{
+       struct nouveau_pwr *ppwr = memx->ppwr;
+       u32 heads, x, y, px = 0;
+       int i, head_sync;
+
+       if (nv_device(ppwr)->chipset < 0xd0) {
+               heads = nv_rd32(ppwr, 0x610050);
+               for (i = 0; i < 2; i++) {
+                       /* Heuristic: sync to head with biggest resolution */
+                       if (heads & (2 << (i << 3))) {
+                               x = nv_rd32(ppwr, 0x610b40 + (0x540 * i));
+                               y = (x & 0xffff0000) >> 16;
+                               x &= 0x0000ffff;
+                               if ((x * y) > px) {
+                                       px = (x * y);
+                                       head_sync = i;
+                               }
+                       }
+               }
+       }
+
+       if (px == 0) {
+               nv_debug(memx->ppwr, "WAIT VBLANK !NO ACTIVE HEAD\n");
+               return;
+       }
+
+       nv_debug(memx->ppwr, "WAIT VBLANK HEAD%d\n", head_sync);
+       memx_cmd(memx, MEMX_VBLANK, 1, (u32[]){ head_sync });
+       memx_out(memx); /* fuc can't handle multiple */
+}
+
 #endif