Commit e1a6f7da authored by Roy Spliet's avatar Roy Spliet Committed by Ben Skeggs

drm/nva3/pwr/memx: Implement "wait for VBLANK"

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