Commit 8fd4b7d4 authored by Ben Skeggs's avatar Ben Skeggs

drm/nouveau/gr/gm107: support tpc "strand" ctxsw in gpccs ucode

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 2a19b3ed
...@@ -70,6 +70,43 @@ error: ...@@ -70,6 +70,43 @@ error:
pop $r14 pop $r14
ret ret
#if CHIPSET >= GM107
tpc_strand_wait:
push $r9
trace_set(T_STRTPC)
tpc_strand_busy:
nv_iord($r9, NV_PGRAPH_GPCX_GPCCS_TPC_STATUS, 0)
bra b32 $r9 0x0 ne #tpc_strand_busy
trace_clr(T_STRTPC)
pop $r9
ret
#define tpc_strand_wait() call(tpc_strand_wait)
#define tpc_strand_enable() /*
*/ mov $r15 NV_PGRAPH_GPC0_TPCX_STRAND_CMD_ENABLE /*
*/ gpc_wr32(NV_PGRAPH_GPC0_TPCX_STRAND_CMD, $r15) /*
*/ tpc_strand_wait()
#define tpc_strand_disable() /*
*/ mov $r15 NV_PGRAPH_GPC0_TPCX_STRAND_CMD_DISABLE /*
*/ gpc_wr32(NV_PGRAPH_GPC0_TPCX_STRAND_CMD, $r15) /*
*/ tpc_strand_wait()
#define tpc_strand_seek(p) /*
*/ mov $r15 NV_PGRAPH_GPC0_TPCX_STRAND_INDEX_ALL /*
*/ gpc_wr32(NV_PGRAPH_GPC0_TPCX_STRAND_INDEX, $r15) /*
*/ mov $r15 p /*
*/ gpc_wr32(NV_PGRAPH_GPC0_TPCX_STRAND_SELECT, $r15) /*
*/ mov $r15 NV_PGRAPH_GPC0_TPCX_STRAND_CMD_SEEK /*
*/ tpc_strand_wait()
#define tpc_strand_info(m) /*
*/ gpc_wr32(NV_PGRAPH_GPC0_TPCX_STRAND_CMD, $r15) /*
*/ mov $r15 m /*
*/ gpc_wr32(NV_PGRAPH_GPC0_TPCX_STRAND_DATA, $r15) /*
*/ mov $r15 NV_PGRAPH_GPC0_TPCX_STRAND_CMD_GET_INFO /*
*/ gpc_wr32(NV_PGRAPH_GPC0_TPCX_STRAND_CMD, $r15) /*
*/ tpc_strand_wait()
#endif
// GPC fuc initialisation, executed by triggering ucode start, will // GPC fuc initialisation, executed by triggering ucode start, will
// fall through to main loop after completion. // fall through to main loop after completion.
// //
...@@ -196,8 +233,56 @@ init: ...@@ -196,8 +233,56 @@ init:
// calculate size of strand context data // calculate size of strand context data
mov b32 $r15 $r2 mov b32 $r15 $r2
call(strand_ctx_init) call(strand_ctx_init)
add b32 $r2 $r15
add b32 $r3 $r15 add b32 $r3 $r15
#if CHIPSET >= GM107
// calculate size of tpc strand context data
mov $r15 NV_PGRAPH_GPC0_TPCX_STRAND_INDEX_ALL
gpc_wr32(NV_PGRAPH_GPC0_TPCX_STRAND_INDEX, $r15)
tpc_strand_enable();
tpc_strand_seek(0);
tpc_strand_info(-1);
ld b32 $r4 D[$r0 + #tpc_count]
mov $r5 NV_PGRAPH_GPC0_TPC0
ld b32 $r6 D[$r0 + #gpc_id]
shl b32 $r6 15
add b32 $r5 $r6
tpc_strand_init_tpc_loop:
add b32 $r14 $r5 NV_TPC_STRAND_CNT
call(nv_rd32)
mov b32 $r6 $r15
clear b32 $r7
tpc_strand_init_idx_loop:
add b32 $r14 $r5 NV_TPC_STRAND_INDEX
mov b32 $r15 $r7
call(nv_wr32)
add b32 $r14 $r5 NV_TPC_STRAND_SAVE_SWBASE
shr b32 $r15 $r2 8
call(nv_wr32)
add b32 $r14 $r5 NV_TPC_STRAND_LOAD_SWBASE
shr b32 $r15 $r2 8
call(nv_wr32)
add b32 $r14 $r5 NV_TPC_STRAND_WORDS
call(nv_rd32)
shr b32 $r15 6
add b32 $r15 1
shl b32 $r15 8
add b32 $r2 $r15
add b32 $r3 $r15
add b32 $r7 1
sub b32 $r6 1
bra nz #tpc_strand_init_idx_loop
add b32 $r5 NV_PGRAPH_GPC0_TPC0__SIZE
sub b32 $r4 1
bra nz #tpc_strand_init_tpc_loop
mov $r15 NV_PGRAPH_GPC0_TPCX_STRAND_INDEX_ALL
gpc_wr32(NV_PGRAPH_GPC0_TPCX_STRAND_INDEX, $r15)
tpc_strand_disable();
#endif
// save context size, and tell HUB we're done // save context size, and tell HUB we're done
nv_iowr(NV_PGRAPH_GPCX_GPCCS_CC_SCRATCH_VAL(1), 0, $r3) nv_iowr(NV_PGRAPH_GPCX_GPCCS_CC_SCRATCH_VAL(1), 0, $r3)
clear b32 $r2 clear b32 $r2
...@@ -316,6 +401,9 @@ ctx_redswitch: ...@@ -316,6 +401,9 @@ ctx_redswitch:
ctx_xfer: ctx_xfer:
// set context base address // set context base address
nv_iowr(NV_PGRAPH_GPCX_GPCCS_MEM_BASE, 0, $r15) nv_iowr(NV_PGRAPH_GPCX_GPCCS_MEM_BASE, 0, $r15)
#if CHIPSET >= GM107
gpc_wr32(NV_PGRAPH_GPC0_TPCX_STRAND_MEM_BASE, $r15)
#endif
bra not $p1 #ctx_xfer_not_load bra not $p1 #ctx_xfer_not_load
call(ctx_redswitch) call(ctx_redswitch)
ctx_xfer_not_load: ctx_xfer_not_load:
...@@ -328,6 +416,14 @@ ctx_xfer: ...@@ -328,6 +416,14 @@ ctx_xfer:
add b32 $r2 NV_PGRAPH_GPCX_GPCCS_STRAND_CMD_SAVE add b32 $r2 NV_PGRAPH_GPCX_GPCCS_STRAND_CMD_SAVE
nv_iowr(NV_PGRAPH_GPCX_GPCCS_STRAND_CMD, 0x3f, $r2) nv_iowr(NV_PGRAPH_GPCX_GPCCS_STRAND_CMD, 0x3f, $r2)
#if CHIPSET >= GM107
tpc_strand_enable();
tpc_strand_seek(0);
xbit $r15 $flags $p1 // SAVE/LOAD
add b32 $r15 NV_PGRAPH_GPC0_TPCX_STRAND_CMD_SAVE
gpc_wr32(NV_PGRAPH_GPC0_TPCX_STRAND_CMD, $r15)
#endif
// mmio context // mmio context
xbit $r10 $flags $p1 // direction xbit $r10 $flags $p1 // direction
or $r10 2 // first or $r10 2 // first
...@@ -372,6 +468,9 @@ ctx_xfer: ...@@ -372,6 +468,9 @@ ctx_xfer:
// wait for strands to finish // wait for strands to finish
call(strand_wait) call(strand_wait)
#if CHIPSET >= GM107
tpc_strand_wait()
#endif
// if load, or a save without a load following, do some // if load, or a save without a load following, do some
// unknown stuff that's done after finishing a block of // unknown stuff that's done after finishing a block of
...@@ -380,6 +479,9 @@ ctx_xfer: ...@@ -380,6 +479,9 @@ ctx_xfer:
bra not $p2 #ctx_xfer_done bra not $p2 #ctx_xfer_done
ctx_xfer_post: ctx_xfer_post:
call(strand_post) call(strand_post)
#if CHIPSET >= GM107
tpc_strand_disable()
#endif
// mark completion in HUB's barrier // mark completion in HUB's barrier
ctx_xfer_done: ctx_xfer_done:
......
...@@ -310,7 +310,7 @@ uint32_t gf100_grgpc_code[] = { ...@@ -310,7 +310,7 @@ uint32_t gf100_grgpc_code[] = {
0x03f01200, 0x03f01200,
0x0002d000, 0x0002d000,
0x17f104bd, 0x17f104bd,
0x10fe04f5, 0x10fe04f8,
0x0007f100, 0x0007f100,
0x0003f007, 0x0003f007,
0xbd0000d0, 0xbd0000d0,
...@@ -362,124 +362,124 @@ uint32_t gf100_grgpc_code[] = { ...@@ -362,124 +362,124 @@ uint32_t gf100_grgpc_code[] = {
0x34b60824, 0x34b60824,
0x022fb908, 0x022fb908,
0x02d321f5, 0x02d321f5,
0xf1003fbb, 0xbb002fbb,
0xf0010007, 0x07f1003f,
0x03d00203, 0x03f00100,
0xbd04bd00, 0x0003d002,
0x1f29f024, 0x24bd04bd,
0x080007f1, 0xf11f29f0,
0xd00203f0, 0xf0080007,
0x04bd0002, 0x02d00203,
/* 0x04b8: main */ /* 0x04bb: main */
0xf40031f4, 0xf404bd00,
0xd7f00028, 0x28f40031,
0x3921f41c, 0x1cd7f000,
0xb0f401f4, 0xf43921f4,
0x18f404e4, 0xe4b0f401,
0x0181fe1e, 0x1e18f404,
0xbd0627f0, 0xf00181fe,
0x0412fd20, 0x20bd0627,
0xfd01e4b6, 0xb60412fd,
0x18fe051e, 0x1efd01e4,
0xad21f500, 0x0018fe05,
0xd30ef405, 0x05b021f5,
/* 0x04e8: main_not_ctx_xfer */ /* 0x04eb: main_not_ctx_xfer */
0xf010ef94, 0x94d30ef4,
0x21f501f5, 0xf5f010ef,
0x0ef4037e, 0x7e21f501,
/* 0x04f5: ih */ 0xc60ef403,
0xfe80f9c6, /* 0x04f8: ih */
0x80f90188, 0x88fe80f9,
0xa0f990f9, 0xf980f901,
0xd0f9b0f9, 0xf9a0f990,
0xf0f9e0f9, 0xf9d0f9b0,
0xa7f104bd, 0xbdf0f9e0,
0xa3f00200, 0x00a7f104,
0x00aacf00, 0x00a3f002,
0xf404abc4, 0xc400aacf,
0xd7f02c0b, 0x0bf404ab,
0x00e7f11c, 0x1cd7f02c,
0x00e3f01a, 0x1a00e7f1,
0xf100eecf, 0xcf00e3f0,
0xf01900f7, 0xf7f100ee,
0xffcf00f3, 0xf3f01900,
0x0421f400, 0x00ffcf00,
0xf101e7f0, 0xf00421f4,
0xf01d0007, 0x07f101e7,
0x0ed00003, 0x03f01d00,
/* 0x0543: ih_no_fifo */ 0x000ed000,
0xf104bd00, /* 0x0546: ih_no_fifo */
0xf0010007, 0x07f104bd,
0x0ad00003, 0x03f00100,
0xfc04bd00, 0x000ad000,
0xfce0fcf0, 0xf0fc04bd,
0xfcb0fcd0, 0xd0fce0fc,
0xfc90fca0, 0xa0fcb0fc,
0x0088fe80, 0x80fc90fc,
0x32f480fc, 0xfc0088fe,
/* 0x0567: hub_barrier_done */ 0x0032f480,
0xf001f800, /* 0x056a: hub_barrier_done */
0x0e9801f7, 0xf7f001f8,
0x04febb04, 0x040e9801,
0xf102ffb9, 0xb904febb,
0xf09418e7, 0xe7f102ff,
0x21f440e3, 0xe3f09418,
/* 0x057f: ctx_redswitch */ 0x9d21f440,
0xf000f89d, /* 0x0582: ctx_redswitch */
0x07f120f7, 0xf7f000f8,
0x0007f120,
0x0103f085,
0xbd000fd0,
0x08e7f004,
/* 0x0594: ctx_redswitch_delay */
0xf401e2b6,
0xf5f1fd1b,
0xf5f10800,
0x07f10200,
0x03f08500, 0x03f08500,
0x000fd001, 0x000fd001,
0xe7f004bd, 0x00f804bd,
/* 0x0591: ctx_redswitch_delay */ /* 0x05b0: ctx_xfer */
0x01e2b608, 0x810007f1,
0xf1fd1bf4,
0xf10800f5,
0xf10200f5,
0xf0850007,
0x0fd00103,
0xf804bd00,
/* 0x05ad: ctx_xfer */
0x0007f100,
0x0203f081,
0xbd000fd0,
0x0711f404,
0x057f21f5,
/* 0x05c0: ctx_xfer_not_load */
0x026a21f5,
0x07f124bd,
0x03f047fc,
0x0002d002,
0x2cf004bd,
0x0320b601,
0x4afc07f1,
0xd00203f0, 0xd00203f0,
0x04bd0002, 0x04bd000f,
0xf001acf0, 0xf50711f4,
0xb7f102a5, /* 0x05c3: ctx_xfer_not_load */
0xb3f00000, 0xf5058221,
0x040c9850, 0xbd026a21,
0xbb0fc4b6, 0xfc07f124,
0x0c9800bc, 0x0203f047,
0x010d9800, 0xbd0002d0,
0xf500e7f0, 0x012cf004,
0xf0016f21, 0xf10320b6,
0xf04afc07,
0x02d00203,
0xf004bd00,
0xa5f001ac, 0xa5f001ac,
0x00b7f104, 0x00b7f102,
0x50b3f040, 0x50b3f000,
0xb6040c98, 0xb6040c98,
0xbcbb0fc4, 0xbcbb0fc4,
0x010c9800, 0x000c9800,
0x98020d98, 0xf0010d98,
0xe7f1060f, 0x21f500e7,
0x21f50800, 0xacf0016f,
0x21f5016f, 0x04a5f001,
0x01f4025e, 0x4000b7f1,
0x0712f406, 0x9850b3f0,
/* 0x0638: ctx_xfer_post */ 0xc4b6040c,
0x027f21f5, 0x00bcbb0f,
/* 0x063c: ctx_xfer_done */ 0x98010c98,
0x056721f5, 0x0f98020d,
0x000000f8, 0x00e7f106,
0x6f21f508,
0x5e21f501,
0x0601f402,
/* 0x063b: ctx_xfer_post */
0xf50712f4,
/* 0x063f: ctx_xfer_done */
0xf5027f21,
0xf8056a21,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
......
...@@ -314,7 +314,7 @@ uint32_t gf117_grgpc_code[] = { ...@@ -314,7 +314,7 @@ uint32_t gf117_grgpc_code[] = {
0x03f01200, 0x03f01200,
0x0002d000, 0x0002d000,
0x17f104bd, 0x17f104bd,
0x10fe053f, 0x10fe0542,
0x0007f100, 0x0007f100,
0x0003f007, 0x0003f007,
0xbd0000d0, 0xbd0000d0,
...@@ -387,134 +387,134 @@ uint32_t gf117_grgpc_code[] = { ...@@ -387,134 +387,134 @@ uint32_t gf117_grgpc_code[] = {
0x0824b601, 0x0824b601,
0xb90834b6, 0xb90834b6,
0x21f5022f, 0x21f5022f,
0x3fbb02d3, 0x2fbb02d3,
0x0007f100, 0x003fbb00,
0x0203f001, 0x010007f1,
0xbd0003d0, 0xd00203f0,
0xf024bd04, 0x04bd0003,
0x07f11f29, 0x29f024bd,
0x03f00800, 0x0007f11f,
0x0002d002, 0x0203f008,
/* 0x0502: main */ 0xbd0002d0,
0x31f404bd, /* 0x0505: main */
0x0028f400, 0x0031f404,
0xf424d7f0, 0xf00028f4,
0x01f43921, 0x21f424d7,
0x04e4b0f4, 0xf401f439,
0xfe1e18f4, 0xf404e4b0,
0x27f00181, 0x81fe1e18,
0xfd20bd06, 0x0627f001,
0xe4b60412, 0x12fd20bd,
0x051efd01, 0x01e4b604,
0xf50018fe, 0xfe051efd,
0xf405f721, 0x21f50018,
/* 0x0532: main_not_ctx_xfer */ 0x0ef405fa,
0xef94d30e, /* 0x0535: main_not_ctx_xfer */
0x01f5f010, 0x10ef94d3,
0x037e21f5, 0xf501f5f0,
/* 0x053f: ih */ 0xf4037e21,
0xf9c60ef4, /* 0x0542: ih */
0x0188fe80, 0x80f9c60e,
0x90f980f9, 0xf90188fe,
0xb0f9a0f9, 0xf990f980,
0xe0f9d0f9, 0xf9b0f9a0,
0x04bdf0f9, 0xf9e0f9d0,
0x0200a7f1, 0xf104bdf0,
0xcf00a3f0, 0xf00200a7,
0xabc400aa, 0xaacf00a3,
0x2c0bf404, 0x04abc400,
0xf124d7f0, 0xf02c0bf4,
0xf01a00e7, 0xe7f124d7,
0xeecf00e3, 0xe3f01a00,
0x00f7f100, 0x00eecf00,
0x00f3f019, 0x1900f7f1,
0xf400ffcf, 0xcf00f3f0,
0xe7f00421, 0x21f400ff,
0x0007f101, 0x01e7f004,
0x0003f01d, 0x1d0007f1,
0xbd000ed0, 0xd00003f0,
/* 0x058d: ih_no_fifo */ 0x04bd000e,
0x0007f104, /* 0x0590: ih_no_fifo */
0x0003f001, 0x010007f1,
0xbd000ad0, 0xd00003f0,
0xfcf0fc04, 0x04bd000a,
0xfcd0fce0, 0xe0fcf0fc,
0xfca0fcb0, 0xb0fcd0fc,
0xfe80fc90, 0x90fca0fc,
0x80fc0088, 0x88fe80fc,
0xf80032f4, 0xf480fc00,
/* 0x05b1: hub_barrier_done */ 0x01f80032,
0x01f7f001, /* 0x05b4: hub_barrier_done */
0xbb040e98, 0x9801f7f0,
0xffb904fe, 0xfebb040e,
0x18e7f102, 0x02ffb904,
0x40e3f094, 0x9418e7f1,
0xf89d21f4, 0xf440e3f0,
/* 0x05c9: ctx_redswitch */ 0x00f89d21,
0x20f7f000, /* 0x05cc: ctx_redswitch */
0xf120f7f0,
0xf0850007,
0x0fd00103,
0xf004bd00,
/* 0x05de: ctx_redswitch_delay */
0xe2b608e7,
0xfd1bf401,
0x0800f5f1,
0x0200f5f1,
0x850007f1, 0x850007f1,
0xd00103f0, 0xd00103f0,
0x04bd000f, 0x04bd000f,
/* 0x05db: ctx_redswitch_delay */ /* 0x05fa: ctx_xfer */
0xb608e7f0, 0x07f100f8,
0x1bf401e2, 0x03f08100,
0x00f5f1fd, 0x000fd002,
0x00f5f108, 0x11f404bd,
0x0007f102, 0xcc21f507,
0x0103f085, /* 0x060d: ctx_xfer_not_load */
0xbd000fd0, 0x6a21f505,
/* 0x05f7: ctx_xfer */ 0xf124bd02,
0xf100f804, 0xf047fc07,
0xf0810007, 0x02d00203,
0x0fd00203, 0xf004bd00,
0xf404bd00, 0x20b6012c,
0x21f50711, 0xfc07f103,
/* 0x060a: ctx_xfer_not_load */ 0x0203f04a,
0x21f505c9, 0xbd0002d0,
0x24bd026a, 0x01acf004,
0x47fc07f1, 0xf102a5f0,
0xd00203f0, 0xf00000b7,
0x04bd0002,
0xb6012cf0,
0x07f10320,
0x03f04afc,
0x0002d002,
0xacf004bd,
0x02a5f001,
0x0000b7f1,
0x9850b3f0,
0xc4b6040c,
0x00bcbb0f,
0x98000c98,
0xe7f0010d,
0x6f21f500,
0x01acf001,
0x4000b7f1,
0x9850b3f0,
0xc4b6040c,
0x00bcbb0f,
0x98010c98,
0x0f98020d,
0x00e7f106,
0x6f21f508,
0x01acf001,
0xf104a5f0,
0xf03000b7,
0x0c9850b3, 0x0c9850b3,
0x0fc4b604, 0x0fc4b604,
0x9800bcbb, 0x9800bcbb,
0x0d98020c, 0x0d98000c,
0x080f9803, 0x00e7f001,
0x0200e7f1,
0x016f21f5, 0x016f21f5,
0x025e21f5, 0xf101acf0,
0xf40601f4, 0xf04000b7,
/* 0x06a6: ctx_xfer_post */ 0x0c9850b3,
0x21f50712, 0x0fc4b604,
/* 0x06aa: ctx_xfer_done */ 0x9800bcbb,
0x21f5027f, 0x0d98010c,
0x00f805b1, 0x060f9802,
0x00000000, 0x0800e7f1,
0x016f21f5,
0xf001acf0,
0xb7f104a5,
0xb3f03000,
0x040c9850,
0xbb0fc4b6,
0x0c9800bc,
0x030d9802,
0xf1080f98,
0xf50200e7,
0xf5016f21,
0xf4025e21,
0x12f40601,
/* 0x06a9: ctx_xfer_post */
0x7f21f507,
/* 0x06ad: ctx_xfer_done */
0xb421f502,
0x0000f805,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
......
...@@ -314,7 +314,7 @@ uint32_t gk104_grgpc_code[] = { ...@@ -314,7 +314,7 @@ uint32_t gk104_grgpc_code[] = {
0x03f01200, 0x03f01200,
0x0002d000, 0x0002d000,
0x17f104bd, 0x17f104bd,
0x10fe053f, 0x10fe0542,
0x0007f100, 0x0007f100,
0x0003f007, 0x0003f007,
0xbd0000d0, 0xbd0000d0,
...@@ -387,134 +387,134 @@ uint32_t gk104_grgpc_code[] = { ...@@ -387,134 +387,134 @@ uint32_t gk104_grgpc_code[] = {
0x0824b601, 0x0824b601,
0xb90834b6, 0xb90834b6,
0x21f5022f, 0x21f5022f,
0x3fbb02d3, 0x2fbb02d3,
0x0007f100, 0x003fbb00,
0x0203f001, 0x010007f1,
0xbd0003d0, 0xd00203f0,
0xf024bd04, 0x04bd0003,
0x07f11f29, 0x29f024bd,
0x03f00800, 0x0007f11f,
0x0002d002, 0x0203f008,
/* 0x0502: main */ 0xbd0002d0,
0x31f404bd, /* 0x0505: main */
0x0028f400, 0x0031f404,
0xf424d7f0, 0xf00028f4,
0x01f43921, 0x21f424d7,
0x04e4b0f4, 0xf401f439,
0xfe1e18f4, 0xf404e4b0,
0x27f00181, 0x81fe1e18,
0xfd20bd06, 0x0627f001,
0xe4b60412, 0x12fd20bd,
0x051efd01, 0x01e4b604,
0xf50018fe, 0xfe051efd,
0xf405f721, 0x21f50018,
/* 0x0532: main_not_ctx_xfer */ 0x0ef405fa,
0xef94d30e, /* 0x0535: main_not_ctx_xfer */
0x01f5f010, 0x10ef94d3,
0x037e21f5, 0xf501f5f0,
/* 0x053f: ih */ 0xf4037e21,
0xf9c60ef4, /* 0x0542: ih */
0x0188fe80, 0x80f9c60e,
0x90f980f9, 0xf90188fe,
0xb0f9a0f9, 0xf990f980,
0xe0f9d0f9, 0xf9b0f9a0,
0x04bdf0f9, 0xf9e0f9d0,
0x0200a7f1, 0xf104bdf0,
0xcf00a3f0, 0xf00200a7,
0xabc400aa, 0xaacf00a3,
0x2c0bf404, 0x04abc400,
0xf124d7f0, 0xf02c0bf4,
0xf01a00e7, 0xe7f124d7,
0xeecf00e3, 0xe3f01a00,
0x00f7f100, 0x00eecf00,
0x00f3f019, 0x1900f7f1,
0xf400ffcf, 0xcf00f3f0,
0xe7f00421, 0x21f400ff,
0x0007f101, 0x01e7f004,
0x0003f01d, 0x1d0007f1,
0xbd000ed0, 0xd00003f0,
/* 0x058d: ih_no_fifo */ 0x04bd000e,
0x0007f104, /* 0x0590: ih_no_fifo */
0x0003f001, 0x010007f1,
0xbd000ad0, 0xd00003f0,
0xfcf0fc04, 0x04bd000a,
0xfcd0fce0, 0xe0fcf0fc,
0xfca0fcb0, 0xb0fcd0fc,
0xfe80fc90, 0x90fca0fc,
0x80fc0088, 0x88fe80fc,
0xf80032f4, 0xf480fc00,
/* 0x05b1: hub_barrier_done */ 0x01f80032,
0x01f7f001, /* 0x05b4: hub_barrier_done */
0xbb040e98, 0x9801f7f0,
0xffb904fe, 0xfebb040e,
0x18e7f102, 0x02ffb904,
0x40e3f094, 0x9418e7f1,
0xf89d21f4, 0xf440e3f0,
/* 0x05c9: ctx_redswitch */ 0x00f89d21,
0x20f7f000, /* 0x05cc: ctx_redswitch */
0xf120f7f0,
0xf0850007,
0x0fd00103,
0xf004bd00,
/* 0x05de: ctx_redswitch_delay */
0xe2b608e7,
0xfd1bf401,
0x0800f5f1,
0x0200f5f1,
0x850007f1, 0x850007f1,
0xd00103f0, 0xd00103f0,
0x04bd000f, 0x04bd000f,
/* 0x05db: ctx_redswitch_delay */ /* 0x05fa: ctx_xfer */
0xb608e7f0, 0x07f100f8,
0x1bf401e2, 0x03f08100,
0x00f5f1fd, 0x000fd002,
0x00f5f108, 0x11f404bd,
0x0007f102, 0xcc21f507,
0x0103f085, /* 0x060d: ctx_xfer_not_load */
0xbd000fd0, 0x6a21f505,
/* 0x05f7: ctx_xfer */ 0xf124bd02,
0xf100f804, 0xf047fc07,
0xf0810007, 0x02d00203,
0x0fd00203, 0xf004bd00,
0xf404bd00, 0x20b6012c,
0x21f50711, 0xfc07f103,
/* 0x060a: ctx_xfer_not_load */ 0x0203f04a,
0x21f505c9, 0xbd0002d0,
0x24bd026a, 0x01acf004,
0x47fc07f1, 0xf102a5f0,
0xd00203f0, 0xf00000b7,
0x04bd0002,
0xb6012cf0,
0x07f10320,
0x03f04afc,
0x0002d002,
0xacf004bd,
0x02a5f001,
0x0000b7f1,
0x9850b3f0,
0xc4b6040c,
0x00bcbb0f,
0x98000c98,
0xe7f0010d,
0x6f21f500,
0x01acf001,
0x4000b7f1,
0x9850b3f0,
0xc4b6040c,
0x00bcbb0f,
0x98010c98,
0x0f98020d,
0x00e7f106,
0x6f21f508,
0x01acf001,
0xf104a5f0,
0xf03000b7,
0x0c9850b3, 0x0c9850b3,
0x0fc4b604, 0x0fc4b604,
0x9800bcbb, 0x9800bcbb,
0x0d98020c, 0x0d98000c,
0x080f9803, 0x00e7f001,
0x0200e7f1,
0x016f21f5, 0x016f21f5,
0x025e21f5, 0xf101acf0,
0xf40601f4, 0xf04000b7,
/* 0x06a6: ctx_xfer_post */ 0x0c9850b3,
0x21f50712, 0x0fc4b604,
/* 0x06aa: ctx_xfer_done */ 0x9800bcbb,
0x21f5027f, 0x0d98010c,
0x00f805b1, 0x060f9802,
0x00000000, 0x0800e7f1,
0x016f21f5,
0xf001acf0,
0xb7f104a5,
0xb3f03000,
0x040c9850,
0xbb0fc4b6,
0x0c9800bc,
0x030d9802,
0xf1080f98,
0xf50200e7,
0xf5016f21,
0xf4025e21,
0x12f40601,
/* 0x06a9: ctx_xfer_post */
0x7f21f507,
/* 0x06ad: ctx_xfer_done */
0xb421f502,
0x0000f805,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
......
...@@ -314,7 +314,7 @@ uint32_t gk110_grgpc_code[] = { ...@@ -314,7 +314,7 @@ uint32_t gk110_grgpc_code[] = {
0x03f01200, 0x03f01200,
0x0002d000, 0x0002d000,
0x17f104bd, 0x17f104bd,
0x10fe053f, 0x10fe0542,
0x0007f100, 0x0007f100,
0x0003f007, 0x0003f007,
0xbd0000d0, 0xbd0000d0,
...@@ -387,134 +387,134 @@ uint32_t gk110_grgpc_code[] = { ...@@ -387,134 +387,134 @@ uint32_t gk110_grgpc_code[] = {
0x0824b601, 0x0824b601,
0xb90834b6, 0xb90834b6,
0x21f5022f, 0x21f5022f,
0x3fbb02d3, 0x2fbb02d3,
0x0007f100, 0x003fbb00,
0x0203f001, 0x010007f1,
0xbd0003d0, 0xd00203f0,
0xf024bd04, 0x04bd0003,
0x07f11f29, 0x29f024bd,
0x03f03000, 0x0007f11f,
0x0002d002, 0x0203f030,
/* 0x0502: main */ 0xbd0002d0,
0x31f404bd, /* 0x0505: main */
0x0028f400, 0x0031f404,
0xf424d7f0, 0xf00028f4,
0x01f43921, 0x21f424d7,
0x04e4b0f4, 0xf401f439,
0xfe1e18f4, 0xf404e4b0,
0x27f00181, 0x81fe1e18,
0xfd20bd06, 0x0627f001,
0xe4b60412, 0x12fd20bd,
0x051efd01, 0x01e4b604,
0xf50018fe, 0xfe051efd,
0xf405f721, 0x21f50018,
/* 0x0532: main_not_ctx_xfer */ 0x0ef405fa,
0xef94d30e, /* 0x0535: main_not_ctx_xfer */
0x01f5f010, 0x10ef94d3,
0x037e21f5, 0xf501f5f0,
/* 0x053f: ih */ 0xf4037e21,
0xf9c60ef4, /* 0x0542: ih */
0x0188fe80, 0x80f9c60e,
0x90f980f9, 0xf90188fe,
0xb0f9a0f9, 0xf990f980,
0xe0f9d0f9, 0xf9b0f9a0,
0x04bdf0f9, 0xf9e0f9d0,
0x0200a7f1, 0xf104bdf0,
0xcf00a3f0, 0xf00200a7,
0xabc400aa, 0xaacf00a3,
0x2c0bf404, 0x04abc400,
0xf124d7f0, 0xf02c0bf4,
0xf01a00e7, 0xe7f124d7,
0xeecf00e3, 0xe3f01a00,
0x00f7f100, 0x00eecf00,
0x00f3f019, 0x1900f7f1,
0xf400ffcf, 0xcf00f3f0,
0xe7f00421, 0x21f400ff,
0x0007f101, 0x01e7f004,
0x0003f01d, 0x1d0007f1,
0xbd000ed0, 0xd00003f0,
/* 0x058d: ih_no_fifo */ 0x04bd000e,
0x0007f104, /* 0x0590: ih_no_fifo */
0x0003f001, 0x010007f1,
0xbd000ad0, 0xd00003f0,
0xfcf0fc04, 0x04bd000a,
0xfcd0fce0, 0xe0fcf0fc,
0xfca0fcb0, 0xb0fcd0fc,
0xfe80fc90, 0x90fca0fc,
0x80fc0088, 0x88fe80fc,
0xf80032f4, 0xf480fc00,
/* 0x05b1: hub_barrier_done */ 0x01f80032,
0x01f7f001, /* 0x05b4: hub_barrier_done */
0xbb040e98, 0x9801f7f0,
0xffb904fe, 0xfebb040e,
0x18e7f102, 0x02ffb904,
0x40e3f094, 0x9418e7f1,
0xf89d21f4, 0xf440e3f0,
/* 0x05c9: ctx_redswitch */ 0x00f89d21,
0x20f7f000, /* 0x05cc: ctx_redswitch */
0xf120f7f0,
0xf0850007,
0x0fd00103,
0xf004bd00,
/* 0x05de: ctx_redswitch_delay */
0xe2b608e7,
0xfd1bf401,
0x0800f5f1,
0x0200f5f1,
0x850007f1, 0x850007f1,
0xd00103f0, 0xd00103f0,
0x04bd000f, 0x04bd000f,
/* 0x05db: ctx_redswitch_delay */ /* 0x05fa: ctx_xfer */
0xb608e7f0, 0x07f100f8,
0x1bf401e2, 0x03f08100,
0x00f5f1fd, 0x000fd002,
0x00f5f108, 0x11f404bd,
0x0007f102, 0xcc21f507,
0x0103f085, /* 0x060d: ctx_xfer_not_load */
0xbd000fd0, 0x6a21f505,
/* 0x05f7: ctx_xfer */ 0xf124bd02,
0xf100f804, 0xf047fc07,
0xf0810007, 0x02d00203,
0x0fd00203, 0xf004bd00,
0xf404bd00, 0x20b6012c,
0x21f50711, 0xfc07f103,
/* 0x060a: ctx_xfer_not_load */ 0x0203f04a,
0x21f505c9, 0xbd0002d0,
0x24bd026a, 0x01acf004,
0x47fc07f1, 0xf102a5f0,
0xd00203f0, 0xf00000b7,
0x04bd0002,
0xb6012cf0,
0x07f10320,
0x03f04afc,
0x0002d002,
0xacf004bd,
0x02a5f001,
0x0000b7f1,
0x9850b3f0,
0xc4b6040c,
0x00bcbb0f,
0x98000c98,
0xe7f0010d,
0x6f21f500,
0x01acf001,
0x4000b7f1,
0x9850b3f0,
0xc4b6040c,
0x00bcbb0f,
0x98010c98,
0x0f98020d,
0x00e7f106,
0x6f21f508,
0x01acf001,
0xf104a5f0,
0xf03000b7,
0x0c9850b3, 0x0c9850b3,
0x0fc4b604, 0x0fc4b604,
0x9800bcbb, 0x9800bcbb,
0x0d98020c, 0x0d98000c,
0x080f9803, 0x00e7f001,
0x0200e7f1,
0x016f21f5, 0x016f21f5,
0x025e21f5, 0xf101acf0,
0xf40601f4, 0xf04000b7,
/* 0x06a6: ctx_xfer_post */ 0x0c9850b3,
0x21f50712, 0x0fc4b604,
/* 0x06aa: ctx_xfer_done */ 0x9800bcbb,
0x21f5027f, 0x0d98010c,
0x00f805b1, 0x060f9802,
0x00000000, 0x0800e7f1,
0x016f21f5,
0xf001acf0,
0xb7f104a5,
0xb3f03000,
0x040c9850,
0xbb0fc4b6,
0x0c9800bc,
0x030d9802,
0xf1080f98,
0xf50200e7,
0xf5016f21,
0xf4025e21,
0x12f40601,
/* 0x06a9: ctx_xfer_post */
0x7f21f507,
/* 0x06ad: ctx_xfer_done */
0xb421f502,
0x0000f805,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
......
...@@ -276,7 +276,7 @@ uint32_t gk208_grgpc_code[] = { ...@@ -276,7 +276,7 @@ uint32_t gk208_grgpc_code[] = {
0x02020014, 0x02020014,
0xf6120040, 0xf6120040,
0x04bd0002, 0x04bd0002,
0xfe047e41, 0xfe048141,
0x00400010, 0x00400010,
0x0000f607, 0x0000f607,
0x040204bd, 0x040204bd,
...@@ -341,118 +341,118 @@ uint32_t gk208_grgpc_code[] = { ...@@ -341,118 +341,118 @@ uint32_t gk208_grgpc_code[] = {
0xb60824b6, 0xb60824b6,
0x2fb20834, 0x2fb20834,
0x0002687e, 0x0002687e,
0x80003fbb, 0xbb002fbb,
0xf6020100, 0x0080003f,
0x04bd0003, 0x03f60201,
0x29f024bd, 0xbd04bd00,
0x3000801f, 0x1f29f024,
0x0002f602, 0x02300080,
/* 0x0442: main */ 0xbd0002f6,
0x31f404bd, /* 0x0445: main */
0x0028f400, 0x0031f404,
0x377e240d, 0x0d0028f4,
0x01f40000, 0x00377e24,
0x04e4b0f4, 0xf401f400,
0xfe1d18f4, 0xf404e4b0,
0x06020181, 0x81fe1d18,
0x12fd20bd, 0xbd060201,
0x01e4b604, 0x0412fd20,
0xfe051efd, 0xfd01e4b6,
0x157e0018, 0x18fe051e,
0x0ef40005, 0x05187e00,
/* 0x0471: main_not_ctx_xfer */ 0xd40ef400,
0x10ef94d4, /* 0x0474: main_not_ctx_xfer */
0x7e01f5f0, 0xf010ef94,
0xf40002f8, 0xf87e01f5,
/* 0x047e: ih */ 0x0ef40002,
0x80f9c70e, /* 0x0481: ih */
0xf90188fe, 0xfe80f9c7,
0xf990f980, 0x80f90188,
0xf9b0f9a0, 0xa0f990f9,
0xf9e0f9d0, 0xd0f9b0f9,
0x4a04bdf0, 0xf0f9e0f9,
0xaacf0200, 0x004a04bd,
0x04abc400, 0x00aacf02,
0x0d1f0bf4, 0xf404abc4,
0x1a004e24, 0x240d1f0b,
0x4f00eecf, 0xcf1a004e,
0xffcf1900, 0x004f00ee,
0x00047e00, 0x00ffcf19,
0x40010e00, 0x0000047e,
0x0ef61d00, 0x0040010e,
/* 0x04bb: ih_no_fifo */ 0x000ef61d,
0x4004bd00, /* 0x04be: ih_no_fifo */
0x0af60100, 0x004004bd,
0xfc04bd00, 0x000af601,
0xfce0fcf0, 0xf0fc04bd,
0xfcb0fcd0, 0xd0fce0fc,
0xfc90fca0, 0xa0fcb0fc,
0x0088fe80, 0x80fc90fc,
0x32f480fc, 0xfc0088fe,
/* 0x04db: hub_barrier_done */ 0x0032f480,
0x0f01f800, /* 0x04de: hub_barrier_done */
0x040e9801, 0x010f01f8,
0xb204febb, 0xbb040e98,
0x94188eff, 0xffb204fe,
0x008f7e40, 0x4094188e,
/* 0x04ef: ctx_redswitch */ 0x00008f7e,
0x0f00f800, /* 0x04f2: ctx_redswitch */
0x85008020, 0x200f00f8,
0x01850080,
0xbd000ff6,
/* 0x04ff: ctx_redswitch_delay */
0xb6080e04,
0x1bf401e2,
0x00f5f1fd,
0x00f5f108,
0x85008002,
0x000ff601, 0x000ff601,
0x080e04bd, 0x00f804bd,
/* 0x04fc: ctx_redswitch_delay */ /* 0x0518: ctx_xfer */
0xf401e2b6, 0x02810080,
0xf5f1fd1b, 0xbd000ff6,
0xf5f10800, 0x0711f404,
0x00800200, 0x0004f27e,
0x0ff60185, /* 0x0528: ctx_xfer_not_load */
0xf804bd00, 0x0002167e,
/* 0x0515: ctx_xfer */ 0xfc8024bd,
0x81008000, 0x02f60247,
0x000ff602,
0x11f404bd,
0x04ef7e07,
/* 0x0525: ctx_xfer_not_load */
0x02167e00,
0x8024bd00,
0xf60247fc,
0x04bd0002,
0xb6012cf0,
0xfc800320,
0x02f6024a,
0xf004bd00, 0xf004bd00,
0xa5f001ac, 0x20b6012c,
0x00008b02, 0x4afc8003,
0x040c9850, 0x0002f602,
0xbb0fc4b6, 0xacf004bd,
0x0c9800bc, 0x02a5f001,
0x010d9800, 0x5000008b,
0x3d7e000e,
0xacf00001,
0x40008b01,
0x040c9850,
0xbb0fc4b6,
0x0c9800bc,
0x020d9801,
0x4e060f98,
0x3d7e0800,
0xacf00001,
0x04a5f001,
0x5030008b,
0xb6040c98, 0xb6040c98,
0xbcbb0fc4, 0xbcbb0fc4,
0x020c9800, 0x000c9800,
0x98030d98, 0x0e010d98,
0x004e080f, 0x013d7e00,
0x013d7e02, 0x01acf000,
0x020a7e00, 0x5040008b,
0x0601f400, 0xb6040c98,
/* 0x05af: ctx_xfer_post */ 0xbcbb0fc4,
0x7e0712f4, 0x010c9800,
/* 0x05b3: ctx_xfer_done */ 0x98020d98,
0x7e000227, 0x004e060f,
0xf80004db, 0x013d7e08,
0x00000000, 0x01acf000,
0x8b04a5f0,
0x98503000,
0xc4b6040c,
0x00bcbb0f,
0x98020c98,
0x0f98030d,
0x02004e08,
0x00013d7e,
0x00020a7e,
0xf40601f4,
/* 0x05b2: ctx_xfer_post */
0x277e0712,
/* 0x05b6: ctx_xfer_done */
0xde7e0002,
0x00f80004,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
#define NV_PGRAPH_GPCX_UNK__SIZE 0x00000002 #define NV_PGRAPH_GPCX_UNK__SIZE 0x00000002
#define CHIPSET GK208 #define CHIPSET GM107
#include "macros.fuc" #include "macros.fuc"
.section #gm107_grgpc_data .section #gm107_grgpc_data
......
...@@ -41,7 +41,7 @@ uint32_t gm107_grgpc_data[] = { ...@@ -41,7 +41,7 @@ uint32_t gm107_grgpc_data[] = {
}; };
uint32_t gm107_grgpc_code[] = { uint32_t gm107_grgpc_code[] = {
0x03140ef5, 0x03410ef5,
/* 0x0004: queue_put */ /* 0x0004: queue_put */
0x9800d898, 0x9800d898,
0x86f001d9, 0x86f001d9,
...@@ -268,190 +268,322 @@ uint32_t gm107_grgpc_code[] = { ...@@ -268,190 +268,322 @@ uint32_t gm107_grgpc_code[] = {
0x409c1c8e, 0x409c1c8e,
0x00008f7e, 0x00008f7e,
0x00f8e0fc, 0x00f8e0fc,
/* 0x0314: init */ /* 0x0314: tpc_strand_wait */
0x004104bd, 0x94bd90f9,
0x0011cf42, 0x800a99f0,
0x010911e7, 0xf6023700,
0xfe0814b6, 0x04bd0009,
0x02020014, /* 0x0324: tpc_strand_busy */
0xf6120040, 0x033f0089,
0x04bd0002, 0xb30099cf,
0xfe047e41, 0xbdf90094,
0x00400010, 0x0a99f094,
0x0000f607, 0x02170080,
0x040204bd, 0xbd0009f6,
0xf6040040, 0xf890fc04,
0x04bd0002, /* 0x0341: init */
0x821031f4, 0x4104bd00,
0xcf018200, 0x11cf4200,
0x01030022, 0x0911e700,
0xbb1f24f0, 0x0814b601,
0x32b60432, 0x020014fe,
0x0502b501, 0x12004002,
0x820603b5, 0xbd0002f6,
0xcf018600, 0x05b04104,
0x02b50022, 0x400010fe,
0x0f24b604, 0x00f60700,
0x01c90080, 0x0204bd00,
0x04004004,
0xbd0002f6, 0xbd0002f6,
0x0c308e04, 0x1031f404,
0xbd24bd50, 0x01820082,
/* 0x0383: init_unk_loop */ 0x030022cf,
0x7e44bd34, 0x1f24f001,
0xb0000065, 0xb60432bb,
0x0bf400f6, 0x02b50132,
0xbb010f0e, 0x0603b505,
0x4ffd04f2, 0x01860082,
0x0130b605, 0xb50022cf,
/* 0x0398: init_unk_next */ 0x24b60402,
0xb60120b6, 0xc900800f,
0x26b004e0, 0x0002f601,
0xe21bf402, 0x308e04bd,
/* 0x03a4: init_unk_done */ 0x24bd500c,
0xb50703b5, 0x44bd34bd,
0x00820804, /* 0x03b0: init_unk_loop */
0x22cf0201, 0x0000657e,
0x9534bd00, 0xf400f6b0,
0x00800825, 0x010f0e0b,
0x05f601c0, 0xfd04f2bb,
0x8004bd00, 0x30b6054f,
0xf601c100, /* 0x03c5: init_unk_next */
0x0120b601,
0xb004e0b6,
0x1bf40226,
/* 0x03d1: init_unk_done */
0x0703b5e2,
0x820804b5,
0xcf020100,
0x34bd0022,
0x80082595,
0xf601c000,
0x04bd0005, 0x04bd0005,
0x98000e98, 0x01c10080,
0x207e010f, 0xbd0005f6,
0x2fbb0001, 0x000e9804,
0x7e010f98,
0xbb000120,
0x3fbb002f,
0x010e9800,
0x7e020f98,
0x98000120,
0xeffd050e,
0x002ebb00,
0x98003ebb,
0x0f98020e,
0x01207e03,
0x070e9800,
0xbb00effd,
0x3ebb002e,
0x0235b600,
0x01d30080,
0xbd0003f6,
0x0825b604,
0xb60635b6,
0x30b60120,
0x0824b601,
0xb20834b6,
0x02687e2f,
0x002fbb00,
0x0f003fbb,
0x8effb23f,
0xf0501d60,
0x8f7e01e5,
0x0c0f0000,
0xa88effb2,
0xe5f0501d,
0x008f7e01,
0x03147e00,
0xb23f0f00,
0x1d608eff,
0x01e5f050,
0x00008f7e,
0xffb2000f,
0x501d9c8e,
0x7e01e5f0,
0x0f00008f,
0x03147e01,
0x8effb200,
0xf0501da8,
0x8f7e01e5,
0xff0f0000,
0x988effb2,
0xe5f0501d,
0x008f7e01,
0xb2020f00,
0x1da88eff,
0x01e5f050,
0x00008f7e,
0x0003147e,
0x85050498,
0x98504000,
0x64b60406,
0x0056bb0f,
/* 0x04e0: tpc_strand_init_tpc_loop */
0x05705eb8,
0x00657e00,
0xbdf6b200,
/* 0x04ed: tpc_strand_init_idx_loop */
0x605eb874,
0x7fb20005,
0x00008f7e,
0x05885eb8,
0x082f9500,
0x00008f7e,
0x058c5eb8,
0x082f9500,
0x00008f7e,
0x05905eb8,
0x00657e00,
0x06f5b600,
0xb601f0b6,
0x2fbb08f4,
0x003fbb00, 0x003fbb00,
0x98010e98, 0xb60170b6,
0x207e020f, 0x1bf40162,
0x0e980001, 0x0050b7bf,
0x00effd05, 0x0142b608,
0xbb002ebb, 0x0fa81bf4,
0x0e98003e, 0x8effb23f,
0x030f9802, 0xf0501d60,
0x0001207e, 0x8f7e01e5,
0xfd070e98, 0x0d0f0000,
0x2ebb00ef, 0xa88effb2,
0x003ebb00, 0xe5f0501d,
0x800235b6, 0x008f7e01,
0xf601d300, 0x03147e00,
0x04bd0003, 0x01008000,
0xb60825b6, 0x0003f602,
0x20b60635, 0x24bd04bd,
0x0130b601, 0x801f29f0,
0xb60824b6, 0xf6023000,
0x2fb20834,
0x0002687e,
0x80003fbb,
0xf6020100,
0x04bd0003,
0x29f024bd,
0x3000801f,
0x0002f602,
/* 0x0442: main */
0x31f404bd,
0x0028f400,
0x377e240d,
0x01f40000,
0x04e4b0f4,
0xfe1d18f4,
0x06020181,
0x12fd20bd,
0x01e4b604,
0xfe051efd,
0x157e0018,
0x0ef40005,
/* 0x0471: main_not_ctx_xfer */
0x10ef94d4,
0x7e01f5f0,
0xf40002f8,
/* 0x047e: ih */
0x80f9c70e,
0xf90188fe,
0xf990f980,
0xf9b0f9a0,
0xf9e0f9d0,
0x4a04bdf0,
0xaacf0200,
0x04abc400,
0x0d1f0bf4,
0x1a004e24,
0x4f00eecf,
0xffcf1900,
0x00047e00,
0x40010e00,
0x0ef61d00,
/* 0x04bb: ih_no_fifo */
0x4004bd00,
0x0af60100,
0xfc04bd00,
0xfce0fcf0,
0xfcb0fcd0,
0xfc90fca0,
0x0088fe80,
0x32f480fc,
/* 0x04db: hub_barrier_done */
0x0f01f800,
0x040e9801,
0xb204febb,
0x94188eff,
0x008f7e40,
/* 0x04ef: ctx_redswitch */
0x0f00f800,
0x85008020,
0x000ff601,
0x080e04bd,
/* 0x04fc: ctx_redswitch_delay */
0xf401e2b6,
0xf5f1fd1b,
0xf5f10800,
0x00800200,
0x0ff60185,
0xf804bd00,
/* 0x0515: ctx_xfer */
0x81008000,
0x000ff602,
0x11f404bd,
0x04ef7e07,
/* 0x0525: ctx_xfer_not_load */
0x02167e00,
0x8024bd00,
0xf60247fc,
0x04bd0002, 0x04bd0002,
0xb6012cf0, /* 0x0574: main */
0xfc800320, 0xf40031f4,
0x02f6024a, 0x240d0028,
0x0000377e,
0xb0f401f4,
0x18f404e4,
0x0181fe1d,
0x20bd0602,
0xb60412fd,
0x1efd01e4,
0x0018fe05,
0x0006477e,
/* 0x05a3: main_not_ctx_xfer */
0x94d40ef4,
0xf5f010ef,
0x02f87e01,
0xc70ef400,
/* 0x05b0: ih */
0x88fe80f9,
0xf980f901,
0xf9a0f990,
0xf9d0f9b0,
0xbdf0f9e0,
0x02004a04,
0xc400aacf,
0x0bf404ab,
0x4e240d1f,
0xeecf1a00,
0x19004f00,
0x7e00ffcf,
0x0e000004,
0x1d004001,
0xbd000ef6,
/* 0x05ed: ih_no_fifo */
0x01004004,
0xbd000af6,
0xfcf0fc04,
0xfcd0fce0,
0xfca0fcb0,
0xfe80fc90,
0x80fc0088,
0xf80032f4,
/* 0x060d: hub_barrier_done */
0x98010f01,
0xfebb040e,
0x8effb204,
0x7e409418,
0xf800008f,
/* 0x0621: ctx_redswitch */
0x80200f00,
0xf6018500,
0x04bd000f,
/* 0x062e: ctx_redswitch_delay */
0xe2b6080e,
0xfd1bf401,
0x0800f5f1,
0x0200f5f1,
0x01850080,
0xbd000ff6,
/* 0x0647: ctx_xfer */
0x8000f804,
0xf6028100,
0x04bd000f,
0xc48effb2,
0xe5f0501d,
0x008f7e01,
0x0711f400,
0x0006217e,
/* 0x0664: ctx_xfer_not_load */
0x0002167e,
0xfc8024bd,
0x02f60247,
0xf004bd00, 0xf004bd00,
0x20b6012c,
0x4afc8003,
0x0002f602,
0x0c0f04bd,
0xa88effb2,
0xe5f0501d,
0x008f7e01,
0x03147e00,
0xb23f0f00,
0x1d608eff,
0x01e5f050,
0x00008f7e,
0xffb2000f,
0x501d9c8e,
0x7e01e5f0,
0x0f00008f,
0x03147e01,
0x01fcf000,
0xb203f0b6,
0x1da88eff,
0x01e5f050,
0x00008f7e,
0xf001acf0,
0x008b02a5,
0x0c985000,
0x0fc4b604,
0x9800bcbb,
0x0d98000c,
0x7e000e01,
0xf000013d,
0x008b01ac,
0x0c985040,
0x0fc4b604,
0x9800bcbb,
0x0d98010c,
0x060f9802,
0x7e08004e,
0xf000013d,
0xa5f001ac, 0xa5f001ac,
0x00008b02, 0x30008b04,
0x040c9850, 0x040c9850,
0xbb0fc4b6, 0xbb0fc4b6,
0x0c9800bc, 0x0c9800bc,
0x010d9800, 0x030d9802,
0x3d7e000e, 0x4e080f98,
0xacf00001, 0x3d7e0200,
0x40008b01, 0x0a7e0001,
0x040c9850, 0x147e0002,
0xbb0fc4b6, 0x01f40003,
0x0c9800bc, 0x1a12f406,
0x020d9801, /* 0x073c: ctx_xfer_post */
0x4e060f98, 0x0002277e,
0x3d7e0800, 0xffb20d0f,
0xacf00001, 0x501da88e,
0x04a5f001, 0x7e01e5f0,
0x5030008b, 0x7e00008f,
0xb6040c98, /* 0x0753: ctx_xfer_done */
0xbcbb0fc4, 0x7e000314,
0x020c9800, 0xf800060d,
0x98030d98, 0x00000000,
0x004e080f, 0x00000000,
0x013d7e02, 0x00000000,
0x020a7e00, 0x00000000,
0x0601f400, 0x00000000,
/* 0x05af: ctx_xfer_post */ 0x00000000,
0x7e0712f4, 0x00000000,
/* 0x05b3: ctx_xfer_done */ 0x00000000,
0x7e000227, 0x00000000,
0xf80004db, 0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
......
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
#define GK100 0xe0 #define GK100 0xe0
#define GK110 0xf0 #define GK110 0xf0
#define GK208 0x108 #define GK208 0x108
#define GM107 0x117
#define NV_PGRAPH_TRAPPED_ADDR 0x400704 #define NV_PGRAPH_TRAPPED_ADDR 0x400704
#define NV_PGRAPH_TRAPPED_DATA_LO 0x400708 #define NV_PGRAPH_TRAPPED_DATA_LO 0x400708
...@@ -171,6 +172,29 @@ ...@@ -171,6 +172,29 @@
#define NV_PGRAPH_GPCX_GPCCS_STRAND_CMD_SAVE 0x00000003 #define NV_PGRAPH_GPCX_GPCCS_STRAND_CMD_SAVE 0x00000003
#define NV_PGRAPH_GPCX_GPCCS_STRAND_CMD_LOAD 0x00000004 #define NV_PGRAPH_GPCX_GPCCS_STRAND_CMD_LOAD 0x00000004
#define NV_PGRAPH_GPCX_GPCCS_MEM_BASE 0x41aa04 #define NV_PGRAPH_GPCX_GPCCS_MEM_BASE 0x41aa04
#define NV_PGRAPH_GPCX_GPCCS_TPC_STATUS 0x41acfc
#define NV_PGRAPH_GPC0_TPC0 0x504000
#define NV_PGRAPH_GPC0_TPC0__SIZE 0x000800
#define NV_PGRAPH_GPC0_TPCX_STRAND_INDEX 0x501d60
#define NV_PGRAPH_GPC0_TPCX_STRAND_INDEX_ALL 0x0000003f
#define NV_PGRAPH_GPC0_TPCX_STRAND_DATA 0x501d98
#define NV_PGRAPH_GPC0_TPCX_STRAND_SELECT 0x501d9c
#define NV_PGRAPH_GPC0_TPCX_STRAND_CMD 0x501da8
#define NV_PGRAPH_GPC0_TPCX_STRAND_CMD_SEEK 0x00000001
#define NV_PGRAPH_GPC0_TPCX_STRAND_CMD_GET_INFO 0x00000002
#define NV_PGRAPH_GPC0_TPCX_STRAND_CMD_SAVE 0x00000003
#define NV_PGRAPH_GPC0_TPCX_STRAND_CMD_LOAD 0x00000004
#define NV_PGRAPH_GPC0_TPCX_STRAND_CMD_ENABLE 0x0000000c
#define NV_PGRAPH_GPC0_TPCX_STRAND_CMD_DISABLE 0x0000000d
#define NV_PGRAPH_GPC0_TPCX_STRAND_MEM_BASE 0x501dc4
#define NV_TPC_STRAND_INDEX 0x560
#define NV_TPC_STRAND_CNT 0x570
#define NV_TPC_STRAND_SAVE_SWBASE 0x588
#define NV_TPC_STRAND_LOAD_SWBASE 0x58c
#define NV_TPC_STRAND_WORDS 0x590
#define mmctx_data(r,c) .b32 (((c - 1) << 26) | r) #define mmctx_data(r,c) .b32 (((c - 1) << 26) | r)
#define queue_init .skip 72 // (2 * 4) + ((8 * 4) * 2) #define queue_init .skip 72 // (2 * 4) + ((8 * 4) * 2)
...@@ -185,6 +209,7 @@ ...@@ -185,6 +209,7 @@
#define T_SAVE 7 #define T_SAVE 7
#define T_LCHAN 8 #define T_LCHAN 8
#define T_LCTXH 9 #define T_LCTXH 9
#define T_STRTPC 10
#if CHIPSET < GK208 #if CHIPSET < GK208
#define imm32(reg,val) /* #define imm32(reg,val) /*
......
...@@ -464,7 +464,7 @@ gm107_gr_oclass = &(struct gf100_gr_oclass) { ...@@ -464,7 +464,7 @@ gm107_gr_oclass = &(struct gf100_gr_oclass) {
.cclass = &gm107_grctx_oclass, .cclass = &gm107_grctx_oclass,
.sclass = gm107_gr_sclass, .sclass = gm107_gr_sclass,
.mmio = gm107_gr_pack_mmio, .mmio = gm107_gr_pack_mmio,
.fecs.ucode = 0 ? &gm107_gr_fecs_ucode : NULL, .fecs.ucode = &gm107_gr_fecs_ucode,
.gpccs.ucode = &gm107_gr_gpccs_ucode, .gpccs.ucode = &gm107_gr_gpccs_ucode,
.ppc_nr = 2, .ppc_nr = 2,
}.base; }.base;
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