25 #define CP_FLAG_CLEAR 0
27 #define CP_FLAG_SWAP_DIRECTION ((0 * 32) + 0)
28 #define CP_FLAG_SWAP_DIRECTION_LOAD 0
29 #define CP_FLAG_SWAP_DIRECTION_SAVE 1
30 #define CP_FLAG_UNK01 ((0 * 32) + 1)
31 #define CP_FLAG_UNK01_CLEAR 0
32 #define CP_FLAG_UNK01_SET 1
33 #define CP_FLAG_UNK03 ((0 * 32) + 3)
34 #define CP_FLAG_UNK03_CLEAR 0
35 #define CP_FLAG_UNK03_SET 1
36 #define CP_FLAG_USER_SAVE ((0 * 32) + 5)
37 #define CP_FLAG_USER_SAVE_NOT_PENDING 0
38 #define CP_FLAG_USER_SAVE_PENDING 1
39 #define CP_FLAG_USER_LOAD ((0 * 32) + 6)
40 #define CP_FLAG_USER_LOAD_NOT_PENDING 0
41 #define CP_FLAG_USER_LOAD_PENDING 1
42 #define CP_FLAG_UNK0B ((0 * 32) + 0xb)
43 #define CP_FLAG_UNK0B_CLEAR 0
44 #define CP_FLAG_UNK0B_SET 1
45 #define CP_FLAG_XFER_SWITCH ((0 * 32) + 0xe)
46 #define CP_FLAG_XFER_SWITCH_DISABLE 0
47 #define CP_FLAG_XFER_SWITCH_ENABLE 1
48 #define CP_FLAG_STATE ((0 * 32) + 0x1c)
49 #define CP_FLAG_STATE_STOPPED 0
50 #define CP_FLAG_STATE_RUNNING 1
51 #define CP_FLAG_UNK1D ((0 * 32) + 0x1d)
52 #define CP_FLAG_UNK1D_CLEAR 0
53 #define CP_FLAG_UNK1D_SET 1
54 #define CP_FLAG_UNK20 ((1 * 32) + 0)
55 #define CP_FLAG_UNK20_CLEAR 0
56 #define CP_FLAG_UNK20_SET 1
57 #define CP_FLAG_STATUS ((2 * 32) + 0)
58 #define CP_FLAG_STATUS_BUSY 0
59 #define CP_FLAG_STATUS_IDLE 1
60 #define CP_FLAG_AUTO_SAVE ((2 * 32) + 4)
61 #define CP_FLAG_AUTO_SAVE_NOT_PENDING 0
62 #define CP_FLAG_AUTO_SAVE_PENDING 1
63 #define CP_FLAG_AUTO_LOAD ((2 * 32) + 5)
64 #define CP_FLAG_AUTO_LOAD_NOT_PENDING 0
65 #define CP_FLAG_AUTO_LOAD_PENDING 1
66 #define CP_FLAG_NEWCTX ((2 * 32) + 10)
67 #define CP_FLAG_NEWCTX_BUSY 0
68 #define CP_FLAG_NEWCTX_DONE 1
69 #define CP_FLAG_XFER ((2 * 32) + 11)
70 #define CP_FLAG_XFER_IDLE 0
71 #define CP_FLAG_XFER_BUSY 1
72 #define CP_FLAG_ALWAYS ((2 * 32) + 13)
73 #define CP_FLAG_ALWAYS_FALSE 0
74 #define CP_FLAG_ALWAYS_TRUE 1
75 #define CP_FLAG_INTR ((2 * 32) + 15)
76 #define CP_FLAG_INTR_NOT_PENDING 0
77 #define CP_FLAG_INTR_PENDING 1
79 #define CP_CTX 0x00100000
80 #define CP_CTX_COUNT 0x000f0000
81 #define CP_CTX_COUNT_SHIFT 16
82 #define CP_CTX_REG 0x00003fff
83 #define CP_LOAD_SR 0x00200000
84 #define CP_LOAD_SR_VALUE 0x000fffff
85 #define CP_BRA 0x00400000
86 #define CP_BRA_IP 0x0001ff00
87 #define CP_BRA_IP_SHIFT 8
88 #define CP_BRA_IF_CLEAR 0x00000080
89 #define CP_BRA_FLAG 0x0000007f
90 #define CP_WAIT 0x00500000
91 #define CP_WAIT_SET 0x00000080
92 #define CP_WAIT_FLAG 0x0000007f
93 #define CP_SET 0x00700000
94 #define CP_SET_1 0x00000080
95 #define CP_SET_FLAG 0x0000007f
96 #define CP_NEWCTX 0x00600004
97 #define CP_NEXT_TO_SWAP 0x00600005
98 #define CP_SET_CONTEXT_POINTER 0x00600006
99 #define CP_SET_XFER_POINTER 0x00600007
100 #define CP_ENABLE 0x00600009
101 #define CP_END 0x0060000c
102 #define CP_NEXT_TO_CURRENT 0x0060000d
103 #define CP_DISABLE1 0x0090ffff
104 #define CP_DISABLE2 0x0091ffff
105 #define CP_XFER_1 0x008000ff
106 #define CP_XFER_2 0x008800ff
107 #define CP_SEEK_1 0x00c000ff
108 #define CP_SEEK_2 0x00c800ff
113 #define IS_NVA3F(x) (((x) > 0xa0 && (x) < 0xaa) || (x) == 0xaf)
114 #define IS_NVAAF(x) ((x) >= 0xaa && (x) <= 0xac)
217 cp_pos (ctx, 0x00004/4);
218 cp_ctx (ctx, 0x400828, 1);
219 cp_pos (ctx, 0x00100/4);
220 nv50_graph_construct_mmio(ctx);
221 nv50_graph_construct_xfer1(ctx);
222 nv50_graph_construct_xfer2(ctx);
245 cp_set (ctx, USER_SAVE, NOT_PENDING);
246 cp_set (ctx, USER_LOAD, NOT_PENDING);
278 nv50_grctx_generate(&ctx);
280 nv_wr32(device, 0x400324, 0);
282 nv_wr32(device, 0x400328, ctxprog[
i]);
305 cp_ctx(ctx, 0x400808, 7);
306 gr_def(ctx, 0x400814, 0x00000030);
307 cp_ctx(ctx, 0x400834, 0x32);
309 gr_def(ctx, 0x400834, 0xff400040);
310 gr_def(ctx, 0x400838, 0xfff00080);
311 gr_def(ctx, 0x40083c, 0xfff70090);
312 gr_def(ctx, 0x400840, 0xffe806a8);
314 gr_def(ctx, 0x400844, 0x00000002);
316 gr_def(ctx, 0x400894, 0x00001000);
317 gr_def(ctx, 0x4008e8, 0x00000003);
318 gr_def(ctx, 0x4008ec, 0x00001000);
320 cp_ctx(ctx, 0x400908, 0
xb);
321 else if (device->
chipset < 0xa0)
322 cp_ctx(ctx, 0x400908, 0
xc);
324 cp_ctx(ctx, 0x400908, 0
xe);
327 cp_ctx(ctx, 0x400b00, 0x1);
329 cp_ctx(ctx, 0x400b10, 0x1);
330 gr_def(ctx, 0x400b10, 0x0001629d);
331 cp_ctx(ctx, 0x400b20, 0x1);
332 gr_def(ctx, 0x400b20, 0x0001629d);
335 nv50_graph_construct_mmio_ddata(ctx);
338 cp_ctx(ctx, 0x400c08, 0x2);
339 gr_def(ctx, 0x400c08, 0x0000fe0c);
343 cp_ctx(ctx, 0x401008, 0x4);
344 gr_def(ctx, 0x401014, 0x00001000);
346 cp_ctx(ctx, 0x401008, 0x5);
347 gr_def(ctx, 0x401018, 0x00001000);
349 cp_ctx(ctx, 0x401008, 0x5);
350 gr_def(ctx, 0x401018, 0x00004000);
354 cp_ctx(ctx, 0x401400, 0x8);
355 cp_ctx(ctx, 0x401424, 0x3);
357 gr_def(ctx, 0x40142c, 0x0001fd87);
359 gr_def(ctx, 0x40142c, 0x00000187);
360 cp_ctx(ctx, 0x401540, 0x5);
361 gr_def(ctx, 0x401550, 0x00001018);
364 cp_ctx(ctx, 0x401814, 0x1);
365 gr_def(ctx, 0x401814, 0x000000ff);
367 cp_ctx(ctx, 0x40181c, 0
xe);
368 gr_def(ctx, 0x401850, 0x00000004);
369 }
else if (device->
chipset < 0xa0) {
370 cp_ctx(ctx, 0x40181c, 0xf);
371 gr_def(ctx, 0x401854, 0x00000004);
373 cp_ctx(ctx, 0x40181c, 0x13);
374 gr_def(ctx, 0x401864, 0x00000004);
378 cp_ctx(ctx, 0x401c00, 0x1);
381 gr_def(ctx, 0x401c00, 0x0001005f);
386 gr_def(ctx, 0x401c00, 0x044d00df);
394 gr_def(ctx, 0x401c00, 0x042500df);
400 gr_def(ctx, 0x401c00, 0x142500df);
407 cp_ctx(ctx, 0x402400, 0x1);
409 cp_ctx(ctx, 0x402408, 0x1);
411 cp_ctx(ctx, 0x402408, 0x2);
412 gr_def(ctx, 0x402408, 0x00000600);
415 cp_ctx(ctx, 0x402800, 0x1);
417 gr_def(ctx, 0x402800, 0x00000006);
420 cp_ctx(ctx, 0x402c08, 0x6);
422 gr_def(ctx, 0x402c14, 0x01000000);
423 gr_def(ctx, 0x402c18, 0x000000ff);
425 cp_ctx(ctx, 0x402ca0, 0x1);
427 cp_ctx(ctx, 0x402ca0, 0x2);
429 gr_def(ctx, 0x402ca0, 0x00000400);
431 gr_def(ctx, 0x402ca0, 0x00000800);
433 gr_def(ctx, 0x402ca0, 0x00000400);
434 cp_ctx(ctx, 0x402cac, 0x4);
437 cp_ctx(ctx, 0x403004, 0x1);
438 gr_def(ctx, 0x403004, 0x00000001);
442 cp_ctx(ctx, 0x403404, 0x1);
443 gr_def(ctx, 0x403404, 0x00000001);
447 cp_ctx(ctx, 0x405000, 0x1);
450 gr_def(ctx, 0x405000, 0x00300080);
460 gr_def(ctx, 0x405000, 0x000e0080);
467 gr_def(ctx, 0x405000, 0x00000080);
470 cp_ctx(ctx, 0x405014, 0x1);
471 gr_def(ctx, 0x405014, 0x00000004);
472 cp_ctx(ctx, 0x40501c, 0x1);
473 cp_ctx(ctx, 0x405024, 0x1);
474 cp_ctx(ctx, 0x40502c, 0x1);
478 cp_ctx(ctx, 0x4063e0, 0x1);
482 cp_ctx(ctx, 0x406814, 0x2b);
483 gr_def(ctx, 0x406818, 0x00000f80);
484 gr_def(ctx, 0x406860, 0x007f0080);
485 gr_def(ctx, 0x40689c, 0x007f0080);
487 cp_ctx(ctx, 0x406814, 0x4);
489 gr_def(ctx, 0x406818, 0x00000f80);
491 gr_def(ctx, 0x406818, 0x00001f80);
493 gr_def(ctx, 0x40681c, 0x00000030);
494 cp_ctx(ctx, 0x406830, 0x3);
498 for (i = 0; i < 8; i++) {
499 if (units & (1<<(i+16))) {
500 cp_ctx(ctx, 0x407000 + (i<<8), 3);
502 gr_def(ctx, 0x407000 + (i<<8), 0x1b74f820);
503 else if (device->
chipset != 0xa5)
504 gr_def(ctx, 0x407000 + (i<<8), 0x3b74f821);
506 gr_def(ctx, 0x407000 + (i<<8), 0x7b74f821);
507 gr_def(ctx, 0x407004 + (i<<8), 0x89058001);
510 cp_ctx(ctx, 0x407010 + (i<<8), 1);
511 }
else if (device->
chipset < 0xa0) {
512 cp_ctx(ctx, 0x407010 + (i<<8), 2);
513 gr_def(ctx, 0x407010 + (i<<8), 0x00001000);
514 gr_def(ctx, 0x407014 + (i<<8), 0x0000001f);
516 cp_ctx(ctx, 0x407010 + (i<<8), 3);
517 gr_def(ctx, 0x407010 + (i<<8), 0x00001000);
519 gr_def(ctx, 0x407014 + (i<<8), 0x000000ff);
521 gr_def(ctx, 0x407014 + (i<<8), 0x000001ff);
524 cp_ctx(ctx, 0x407080 + (i<<8), 4);
526 gr_def(ctx, 0x407080 + (i<<8), 0x027c10fa);
528 gr_def(ctx, 0x407080 + (i<<8), 0x827c10fa);
530 gr_def(ctx, 0x407084 + (i<<8), 0x000000c0);
532 gr_def(ctx, 0x407084 + (i<<8), 0x400000c0);
533 gr_def(ctx, 0x407088 + (i<<8), 0xb7892080);
536 cp_ctx(ctx, 0x407094 + (i<<8), 1);
538 cp_ctx(ctx, 0x407094 + (i<<8), 3);
540 cp_ctx(ctx, 0x407094 + (i<<8), 4);
541 gr_def(ctx, 0x4070a0 + (i<<8), 1);
546 cp_ctx(ctx, 0x407c00, 0x3);
548 gr_def(ctx, 0x407c00, 0x00010040);
549 else if (device->
chipset < 0xa0)
550 gr_def(ctx, 0x407c00, 0x00390040);
552 gr_def(ctx, 0x407c00, 0x003d0040);
553 gr_def(ctx, 0x407c08, 0x00000022);
555 cp_ctx(ctx, 0x407c10, 0x3);
556 cp_ctx(ctx, 0x407c20, 0x1);
557 cp_ctx(ctx, 0x407c2c, 0x1);
561 cp_ctx(ctx, 0x407d00, 0x9);
563 cp_ctx(ctx, 0x407d00, 0x15);
566 gr_def(ctx, 0x407d08, 0x00380040);
569 gr_def(ctx, 0x407d08, 0x00010040);
570 else if (device->
chipset < 0xa0)
571 gr_def(ctx, 0x407d08, 0x00390040);
573 gr_def(ctx, 0x407d08, 0x003d0040);
574 gr_def(ctx, 0x407d0c, 0x00000022);
578 for (i = 0; i < 10; i++) {
579 if (units & (1<<i)) {
581 base = 0x408000 + (i<<12);
583 base = 0x408000 + (i<<11);
585 offset = base + 0xc00;
587 offset = base + 0x80;
588 cp_ctx(ctx, offset + 0x00, 1);
589 gr_def(ctx, offset + 0x00, 0x0000ff0a);
590 cp_ctx(ctx, offset + 0x08, 1);
593 for (j = 0; j < (device->
chipset < 0xa0 ? 2 : 4); j++) {
594 if (!(units & (1 << (j+24))))
continue;
596 offset = base + 0x200 + (j<<7);
598 offset = base + 0x100 + (j<<7);
599 cp_ctx(ctx, offset, 0x20);
600 gr_def(ctx, offset + 0x00, 0x01800000);
601 gr_def(ctx, offset + 0x04, 0x00160000);
602 gr_def(ctx, offset + 0x08, 0x01800000);
603 gr_def(ctx, offset + 0x18, 0x0003ffff);
606 gr_def(ctx, offset + 0x1c, 0x00080000);
609 gr_def(ctx, offset + 0x1c, 0x00880000);
612 gr_def(ctx, offset + 0x1c, 0x018c0000);
617 gr_def(ctx, offset + 0x1c, 0x118c0000);
620 gr_def(ctx, offset + 0x1c, 0x10880000);
624 gr_def(ctx, offset + 0x1c, 0x310c0000);
631 gr_def(ctx, offset + 0x1c, 0x300c0000);
634 gr_def(ctx, offset + 0x40, 0x00010401);
636 gr_def(ctx, offset + 0x48, 0x00000040);
638 gr_def(ctx, offset + 0x48, 0x00000078);
639 gr_def(ctx, offset + 0x50, 0x000000bf);
640 gr_def(ctx, offset + 0x58, 0x00001210);
642 gr_def(ctx, offset + 0x5c, 0x00000080);
644 gr_def(ctx, offset + 0x5c, 0x08000080);
646 gr_def(ctx, offset + 0x68, 0x0000003e);
650 cp_ctx(ctx, base + 0x300, 0x4);
652 cp_ctx(ctx, base + 0x300, 0x5);
654 gr_def(ctx, base + 0x304, 0x00007070);
655 else if (device->
chipset < 0xa0)
656 gr_def(ctx, base + 0x304, 0x00027070);
658 gr_def(ctx, base + 0x304, 0x01127070);
660 gr_def(ctx, base + 0x304, 0x05127070);
663 cp_ctx(ctx, base + 0x318, 1);
665 cp_ctx(ctx, base + 0x320, 1);
667 gr_def(ctx, base + 0x318, 0x0003ffff);
668 else if (device->
chipset < 0xa0)
669 gr_def(ctx, base + 0x318, 0x03ffffff);
671 gr_def(ctx, base + 0x320, 0x07ffffff);
674 cp_ctx(ctx, base + 0x324, 5);
676 cp_ctx(ctx, base + 0x328, 4);
679 cp_ctx(ctx, base + 0x340, 9);
680 offset = base + 0x340;
682 cp_ctx(ctx, base + 0x33c, 0
xb);
683 offset = base + 0x344;
685 cp_ctx(ctx, base + 0x33c, 0xd);
686 offset = base + 0x344;
688 gr_def(ctx, offset + 0x0, 0x00120407);
689 gr_def(ctx, offset + 0x4, 0x05091507);
691 gr_def(ctx, offset + 0x8, 0x05100202);
693 gr_def(ctx, offset + 0x8, 0x05010202);
694 gr_def(ctx, offset + 0
xc, 0x00030201);
696 cp_ctx(ctx, base + 0x36c, 1);
698 cp_ctx(ctx, base + 0x400, 2);
699 gr_def(ctx, base + 0x404, 0x00000040);
700 cp_ctx(ctx, base + 0x40c, 2);
701 gr_def(ctx, base + 0x40c, 0x0d0c0b0a);
702 gr_def(ctx, base + 0x410, 0x00141210);
705 offset = base + 0x800;
707 offset = base + 0x500;
708 cp_ctx(ctx, offset, 6);
709 gr_def(ctx, offset + 0x0, 0x000001f0);
710 gr_def(ctx, offset + 0x4, 0x00000001);
711 gr_def(ctx, offset + 0x8, 0x00000003);
713 gr_def(ctx, offset + 0
xc, 0x00008000);
714 gr_def(ctx, offset + 0x14, 0x00039e00);
715 cp_ctx(ctx, offset + 0x1c, 2);
717 gr_def(ctx, offset + 0x1c, 0x00000040);
719 gr_def(ctx, offset + 0x1c, 0x00000100);
720 gr_def(ctx, offset + 0x20, 0x00003800);
723 cp_ctx(ctx, base + 0x54c, 2);
725 gr_def(ctx, base + 0x54c, 0x003fe006);
727 gr_def(ctx, base + 0x54c, 0x003fe007);
728 gr_def(ctx, base + 0x550, 0x003fe000);
732 offset = base + 0xa00;
734 offset = base + 0x680;
735 cp_ctx(ctx, offset, 1);
736 gr_def(ctx, offset, 0x00404040);
739 offset = base + 0xe00;
741 offset = base + 0x700;
742 cp_ctx(ctx, offset, 2);
744 gr_def(ctx, offset, 0x0077f005);
745 else if (device->
chipset == 0xa5)
746 gr_def(ctx, offset, 0x6cf7f007);
747 else if (device->
chipset == 0xa8)
748 gr_def(ctx, offset, 0x6cfff007);
749 else if (device->
chipset == 0xac)
750 gr_def(ctx, offset, 0x0cfff007);
752 gr_def(ctx, offset, 0x0cf7f007);
754 gr_def(ctx, offset + 0x4, 0x00007fff);
755 else if (device->
chipset < 0xa0)
756 gr_def(ctx, offset + 0x4, 0x003f7fff);
758 gr_def(ctx, offset + 0x4, 0x02bf7fff);
759 cp_ctx(ctx, offset + 0x2c, 1);
761 cp_ctx(ctx, offset + 0x50, 9);
762 gr_def(ctx, offset + 0x54, 0x000003ff);
763 gr_def(ctx, offset + 0x58, 0x00000003);
764 gr_def(ctx, offset + 0x5c, 0x00000003);
765 gr_def(ctx, offset + 0x60, 0x000001ff);
766 gr_def(ctx, offset + 0x64, 0x0000001f);
767 gr_def(ctx, offset + 0x68, 0x0000000f);
768 gr_def(ctx, offset + 0x6c, 0x0000000f);
769 }
else if (device->
chipset < 0xa0) {
770 cp_ctx(ctx, offset + 0x50, 1);
771 cp_ctx(ctx, offset + 0x70, 1);
773 cp_ctx(ctx, offset + 0x50, 1);
774 cp_ctx(ctx, offset + 0x60, 5);
783 if (val && ctx->
mode == NOUVEAU_GRCTX_VALS)
784 for (i = 0; i < num; i++)
809 dd_emit(ctx, 1, 0x100);
824 dd_emit(ctx, 1, 0x3fffff);
825 dd_emit(ctx, 1, 0x1fff);
856 dd_emit(ctx, 1, 0xa);
860 dd_emit(ctx, 1, 0x40);
863 dd_emit(ctx, 1, 0x100);
865 dd_emit(ctx, 1, 0x100);
894 dd_emit(ctx, 1, 0x100);
898 dd_emit(ctx, 1, 0x100);
900 dd_emit(ctx, 1, 0x100);
904 dd_emit(ctx, 1, 0x100);
936 dd_emit(ctx, 1, 0x70);
937 dd_emit(ctx, 1, 0x80);
947 dd_emit(ctx, 1, 0
xc);
951 dd_emit(ctx, 1, 0x14);
957 dd_emit(ctx, 1, 0x29);
958 dd_emit(ctx, 1, 0x27);
959 dd_emit(ctx, 1, 0x26);
962 dd_emit(ctx, 1, 0x27);
976 dd_emit(ctx, 1, 0xcf);
983 dd_emit(ctx, 1, 0x80);
996 dd_emit(ctx, 1, 0x12);
997 dd_emit(ctx, 1, 0x10);
998 dd_emit(ctx, 1, 0
xc);
1010 dd_emit(ctx, 1, 0x3fffff);
1011 dd_emit(ctx, 1, 0x1fff);
1015 if (device->
chipset >= 0xa0) {
1022 dd_emit(ctx, 1, 0x14);
1038 dd_emit(ctx, 1, 0x1000);
1039 if (device->
chipset != 0x50) {
1040 dd_emit(ctx, 1, 0xe00);
1041 dd_emit(ctx, 1, 0x1000);
1042 dd_emit(ctx, 1, 0x1e00);
1053 dd_emit(ctx, 1, 0x200);
1055 dd_emit(ctx, 1, 0x200);
1059 dd_emit(ctx, 1, 0x70);
1060 dd_emit(ctx, 1, 0x80);
1064 dd_emit(ctx, 1, 0x70);
1065 dd_emit(ctx, 1, 0x80);
1069 dd_emit(ctx, 1, 0xf0);
1070 dd_emit(ctx, 1, 0xff);
1074 dd_emit(ctx, 1, 0xf0);
1075 dd_emit(ctx, 1, 0xff);
1084 dd_emit(ctx, 1, 0xcf);
1090 dd_emit(ctx, 1, 0xcf);
1098 dd_emit(ctx, 1, 0xcf);
1099 dd_emit(ctx, 1, 0xcf);
1105 cp_ctx(ctx, 0x404800, num);
1107 cp_ctx(ctx, 0x405400, num);
1155 if (val && ctx->
mode == NOUVEAU_GRCTX_VALS)
1156 for (i = 0; i < num; i++)
1163 static void nv50_graph_construct_gene_dispatch(
struct nouveau_grctx *ctx);
1164 static void nv50_graph_construct_gene_m2mf(
struct nouveau_grctx *ctx);
1165 static void nv50_graph_construct_gene_ccache(
struct nouveau_grctx *ctx);
1166 static void nv50_graph_construct_gene_unk10xx(
struct nouveau_grctx *ctx);
1167 static void nv50_graph_construct_gene_unk14xx(
struct nouveau_grctx *ctx);
1168 static void nv50_graph_construct_gene_zcull(
struct nouveau_grctx *ctx);
1169 static void nv50_graph_construct_gene_clipid(
struct nouveau_grctx *ctx);
1170 static void nv50_graph_construct_gene_unk24xx(
struct nouveau_grctx *ctx);
1171 static void nv50_graph_construct_gene_vfetch(
struct nouveau_grctx *ctx);
1172 static void nv50_graph_construct_gene_eng2d(
struct nouveau_grctx *ctx);
1173 static void nv50_graph_construct_gene_csched(
struct nouveau_grctx *ctx);
1174 static void nv50_graph_construct_gene_unk1cxx(
struct nouveau_grctx *ctx);
1175 static void nv50_graph_construct_gene_strmout(
struct nouveau_grctx *ctx);
1176 static void nv50_graph_construct_gene_unk34xx(
struct nouveau_grctx *ctx);
1177 static void nv50_graph_construct_gene_ropm1(
struct nouveau_grctx *ctx);
1178 static void nv50_graph_construct_gene_ropm2(
struct nouveau_grctx *ctx);
1179 static void nv50_graph_construct_gene_ropc(
struct nouveau_grctx *ctx);
1180 static void nv50_graph_construct_xfer_tp(
struct nouveau_grctx *ctx);
1189 u32 units = nv_rd32 (ctx->
device, 0x1540);
1197 nv50_graph_construct_gene_dispatch(ctx);
1198 nv50_graph_construct_gene_m2mf(ctx);
1199 nv50_graph_construct_gene_unk24xx(ctx);
1200 nv50_graph_construct_gene_clipid(ctx);
1201 nv50_graph_construct_gene_zcull(ctx);
1207 nv50_graph_construct_gene_vfetch(ctx);
1208 nv50_graph_construct_gene_eng2d(ctx);
1209 nv50_graph_construct_gene_csched(ctx);
1210 nv50_graph_construct_gene_ropm1(ctx);
1211 nv50_graph_construct_gene_ropm2(ctx);
1217 nv50_graph_construct_gene_ccache(ctx);
1218 nv50_graph_construct_gene_unk1cxx(ctx);
1219 nv50_graph_construct_gene_strmout(ctx);
1220 nv50_graph_construct_gene_unk14xx(ctx);
1221 nv50_graph_construct_gene_unk10xx(ctx);
1222 nv50_graph_construct_gene_unk34xx(ctx);
1228 for (i = 0; i < 6; i++)
1229 if (units & (1 << (i + 16)))
1230 nv50_graph_construct_gene_ropc(ctx);
1235 for (i = 0; i < 4; i++) {
1237 if (units & (1 << (2 * i)))
1238 nv50_graph_construct_xfer_tp(ctx);
1239 if (units & (1 << (2 * i + 1)))
1240 nv50_graph_construct_xfer_tp(ctx);
1247 nv50_graph_construct_gene_dispatch(ctx);
1248 nv50_graph_construct_gene_m2mf(ctx);
1249 nv50_graph_construct_gene_unk34xx(ctx);
1250 nv50_graph_construct_gene_csched(ctx);
1251 nv50_graph_construct_gene_unk1cxx(ctx);
1252 nv50_graph_construct_gene_strmout(ctx);
1258 nv50_graph_construct_gene_unk10xx(ctx);
1265 nv50_graph_construct_gene_unk14xx(ctx);
1266 nv50_graph_construct_gene_unk24xx(ctx);
1272 nv50_graph_construct_gene_vfetch(ctx);
1278 nv50_graph_construct_gene_ccache(ctx);
1284 nv50_graph_construct_gene_ropm2(ctx);
1285 nv50_graph_construct_gene_ropm1(ctx);
1287 for (i = 0; i < 8; i++)
1288 if (units & (1<<(i+16)))
1289 nv50_graph_construct_gene_ropc(ctx);
1295 nv50_graph_construct_gene_zcull(ctx);
1296 nv50_graph_construct_gene_clipid(ctx);
1297 nv50_graph_construct_gene_eng2d(ctx);
1298 if (units & (1 << 0))
1299 nv50_graph_construct_xfer_tp(ctx);
1300 if (units & (1 << 1))
1301 nv50_graph_construct_xfer_tp(ctx);
1302 if (units & (1 << 2))
1303 nv50_graph_construct_xfer_tp(ctx);
1304 if (units & (1 << 3))
1305 nv50_graph_construct_xfer_tp(ctx);
1311 if (device->
chipset == 0xa0) {
1312 if (units & (1 << 4))
1313 nv50_graph_construct_xfer_tp(ctx);
1314 if (units & (1 << 5))
1315 nv50_graph_construct_xfer_tp(ctx);
1316 if (units & (1 << 6))
1317 nv50_graph_construct_xfer_tp(ctx);
1318 if (units & (1 << 7))
1319 nv50_graph_construct_xfer_tp(ctx);
1320 if (units & (1 << 8))
1321 nv50_graph_construct_xfer_tp(ctx);
1322 if (units & (1 << 9))
1323 nv50_graph_construct_xfer_tp(ctx);
1325 nv50_graph_construct_gene_unk14xx(ctx);
1333 cp_lsr (ctx, offset);
1346 nv50_graph_construct_gene_dispatch(
struct nouveau_grctx *ctx)
1360 xf_emit(ctx, 8*3, 0);
1362 xf_emit(ctx, 0x100*3, 0);
1383 xf_emit(ctx, 6*2, 0);
1388 xf_emit(ctx, 6*2, 0);
1392 xf_emit(ctx, 0x1c, 0);
1393 else if (device->
chipset < 0xa0)
1394 xf_emit(ctx, 0x1e, 0);
1396 xf_emit(ctx, 0x22, 0);
1398 xf_emit(ctx, 0x15, 0);
1410 xf_emit (ctx, 1, 0);
1411 xf_emit (ctx, 1, 0);
1412 xf_emit (ctx, 1, 0);
1413 xf_emit (ctx, 1, 0);
1414 xf_emit (ctx, 1, 0);
1415 xf_emit (ctx, 1, 0);
1416 xf_emit (ctx, 1, 0);
1417 xf_emit (ctx, 1, 0);
1418 xf_emit (ctx, 1, 0);
1419 xf_emit (ctx, 1, 0x21);
1420 xf_emit (ctx, 1, 1);
1421 xf_emit (ctx, 1, 0x2);
1422 xf_emit (ctx, 1, 0x100);
1423 xf_emit (ctx, 1, 0x100);
1424 xf_emit (ctx, 1, 1);
1425 xf_emit (ctx, 1, 0);
1426 xf_emit (ctx, 1, 0);
1427 xf_emit (ctx, 1, 1);
1428 xf_emit (ctx, 1, 0x2);
1429 xf_emit (ctx, 1, 0x100);
1430 xf_emit (ctx, 1, 0x100);
1431 xf_emit (ctx, 1, 1);
1432 xf_emit (ctx, 1, 0);
1433 xf_emit (ctx, 1, 0);
1434 xf_emit (ctx, 1, 0);
1435 xf_emit (ctx, 1, 0);
1438 xf_emit(ctx, 0x40, 0);
1440 xf_emit(ctx, 0x100, 0);
1444 xf_emit(ctx, 0x400, 0);
1446 xf_emit(ctx, 0x800, 0);
1449 xf_emit(ctx, 0x40, 0);
1450 xf_emit(ctx, 0x6, 0);
1458 xf_emit(ctx, 0x800, 0);
1463 xf_emit(ctx, 0x2b, 0);
1466 xf_emit(ctx, 0x29, 0);
1471 xf_emit(ctx, 0x27, 0);
1480 xf_emit(ctx, 0x25, 0);
1485 xf_emit(ctx, 0x100, 0);
1488 xf_emit(ctx, 0x30, 0);
1491 xf_emit(ctx, 0x100, 0);
1503 xf_emit(ctx, 1, 0x3fffff);
1506 xf_emit(ctx, 1, 0x1fff);
1522 nv50_graph_construct_gene_unk10xx(
struct nouveau_grctx *ctx)
1530 xf_emit(ctx, 1, 0x80);
1532 xf_emit(ctx, 1, 0x80c14);
1535 xf_emit(ctx, 1, 0x3ff);
1537 xf_emit(ctx, 1, 0x7ff);
1540 for (i = 0; i < 8; i++) {
1547 xf_emit(ctx, 0xa0, 0);
1553 xf_emit(ctx, 0x120, 0);
1557 xf_emit(ctx, 0x100, 0);
1562 xf_emit(ctx, 0x400, 0);
1571 xf_emit(ctx, 1, 0x80);
1575 xf_emit(ctx, 1, 0x27);
1577 xf_emit(ctx, 1, 0x26);
1582 nv50_graph_construct_gene_unk34xx(
struct nouveau_grctx *ctx)
1588 xf_emit(ctx, 0x10, 0x04000000);
1590 xf_emit(ctx, 0x20, 0);
1593 xf_emit(ctx, 1, 0x04e3bfdf);
1594 xf_emit(ctx, 1, 0x04e3bfdf);
1597 xf_emit(ctx, 1, 0x1fe21);
1599 xf_emit(ctx, 1, 0x0fac6881);
1607 nv50_graph_construct_gene_unk14xx(
struct nouveau_grctx *ctx)
1611 if (device->
chipset != 0x50) {
1613 xf_emit(ctx, 1, 0x80c14);
1616 xf_emit(ctx, 1, 0x804);
1619 xf_emit(ctx, 1, 0x8100c12);
1625 xf_emit(ctx, 1, 0x10);
1631 xf_emit(ctx, 1, 0x804);
1633 xf_emit(ctx, 1, 0x1a);
1635 xf_emit(ctx, 1, 0x7f);
1638 xf_emit(ctx, 1, 0x80c14);
1640 xf_emit(ctx, 1, 0x8100c12);
1644 xf_emit(ctx, 1, 0x10);
1649 xf_emit(ctx, 1, 0x8100c12);
1654 xf_emit(ctx, 1, 0x3ff);
1656 xf_emit(ctx, 1, 0x7ff);
1657 xf_emit(ctx, 1, 0x80c14);
1659 xf_emit(ctx, 0x30, 0);
1666 xf_emit(ctx, 1, 0x10);
1668 xf_emit(ctx, 0x30, 0);
1672 xf_emit(ctx, 2, 0x88);
1679 xf_emit(ctx, 0x10, 0);
1681 xf_emit(ctx, 1, 0x26);
1684 xf_emit(ctx, 1, 0x3f800000);
1690 xf_emit(ctx, 1, 0x1a);
1691 xf_emit(ctx, 1, 0x10);
1692 if (device->
chipset != 0x50) {
1697 xf_emit(ctx, 0x20, 0);
1703 xf_emit(ctx, 1, 0x52);
1705 xf_emit(ctx, 1, 0x26);
1710 xf_emit(ctx, 1, 0x1a);
1713 xf_emit(ctx, 1, 0x00ffff00);
1723 xf_emit(ctx, 1, 0x3f);
1733 xf_emit(ctx, 2, 0x04000000);
1763 xf_emit(ctx, 1, 0x1001);
1765 xf_emit(ctx, 4, 0xffff);
1766 xf_emit(ctx, 0x10, 0);
1767 xf_emit(ctx, 0x10, 0);
1768 xf_emit(ctx, 0x10, 0x3f800000);
1769 xf_emit(ctx, 1, 0x10);
1788 xf_emit(ctx, 2, 0x04000000);
1790 xf_emit(ctx, 1, 0x80);
1794 xf_emit(ctx, 1, 0x80);
1799 nv50_graph_construct_gene_unk24xx(
struct nouveau_grctx *ctx)
1805 xf_emit(ctx, 0x33, 0);
1815 xf_emit(ctx, 0xe10, 0);
1821 xf_emit(ctx, 0xe10, 0);
1826 xf_emit(ctx, 0
xc, 0);
1828 xf_emit(ctx, 0xe10, 0);
1833 xf_emit(ctx, 0
xc, 0);
1835 xf_emit(ctx, 0xe10, 0);
1843 xf_emit(ctx, 1, 0x8100c12);
1848 xf_emit(ctx, 1, 0x8100c12);
1850 xf_emit(ctx, 1, 0x80c14);
1855 xf_emit(ctx, 1, 0x80c14);
1858 xf_emit(ctx, 1, 0x8100c12);
1859 xf_emit(ctx, 1, 0x27);
1863 for (i = 0; i < 10; i++) {
1865 xf_emit(ctx, 0x40, 0);
1866 xf_emit(ctx, 0x10, 0);
1867 xf_emit(ctx, 0x10, 0);
1874 xf_emit(ctx, 0x10, 0);
1876 xf_emit(ctx, 1, 0x8100c12);
1885 int acnt = 0x10,
rep,
i;
1890 if (device->
chipset >= 0xa0) {
1898 xf_emit(ctx, 1, 0xf);
1899 xf_emit(ctx, (acnt/8)-1, 0);
1900 xf_emit(ctx, acnt/8, 0);
1902 xf_emit(ctx, 1, 0x20);
1908 xf_emit(ctx, 0
xb, 0);
1909 else if (device->
chipset >= 0xa0)
1910 xf_emit(ctx, 0x9, 0);
1912 xf_emit(ctx, 0x8, 0);
1917 xf_emit(ctx, 1, 0x1a);
1919 xf_emit(ctx, 0
xc, 0);
1929 xf_emit(ctx, 1, 0x3ff);
1931 xf_emit(ctx, 1, 0x7ff);
1933 xf_emit(ctx, 1, 0x1e00);
1935 xf_emit(ctx, 0
xc, 0);
1937 xf_emit(ctx, 1, 0xf);
1938 xf_emit(ctx, (acnt/8)-1, 0);
1947 xf_emit(ctx, 0x10, 0);
1958 xf_emit(ctx, acnt, 0);
1962 xf_emit(ctx, acnt, 0);
1965 xf_emit(ctx, acnt, 0);
1968 xf_emit(ctx, acnt, 0);
1979 xf_emit(ctx, acnt, 0);
1982 xf_emit(ctx, acnt, 0);
1985 xf_emit(ctx, acnt, 0);
1988 xf_emit(ctx, acnt, 0);
1991 xf_emit(ctx, acnt, 0);
1994 xf_emit(ctx, acnt, 0);
1998 xf_emit(ctx, acnt, 0);
2010 xf_emit(ctx, 0x41, 0);
2012 xf_emit(ctx, 0x11, 0);
2014 xf_emit(ctx, 0x50, 0);
2016 xf_emit(ctx, 0x58, 0);
2018 xf_emit(ctx, 1, 0xf);
2019 xf_emit(ctx, (acnt/8)-1, 0);
2022 xf_emit(ctx, acnt*4, 0);
2026 xf_emit(ctx, 0x1d, 0);
2028 xf_emit(ctx, 0x16, 0);
2030 xf_emit(ctx, 1, 0xf);
2031 xf_emit(ctx, (acnt/8)-1, 0);
2036 xf_emit(ctx, 0
xc, 0);
2040 xf_emit(ctx, 0xa, 0);
2045 for (i = 0; i <
rep; i++) {
2048 xf_emit(ctx, 0x20, 0);
2049 xf_emit(ctx, 0x200, 0);
2055 xf_emit(ctx, 1, 0xf);
2056 xf_emit(ctx, (acnt/8)-1, 0);
2057 xf_emit(ctx, acnt/8, 0);
2084 xf_emit(ctx, 1, 0x100);
2085 xf_emit(ctx, 1, 0x100);
2086 xf_emit(ctx, 1, 0x11);
2099 xf_emit(ctx, 1, 0xcf);
2119 xf_emit(ctx, 1, 0x15);
2122 xf_emit(ctx, 1, 0x4444480);
2124 xf_emit(ctx, 0x10, 0);
2126 xf_emit(ctx, 0x27, 0);
2138 xf_emit(ctx, 1, 0x8100c12);
2144 xf_emit(ctx, 1, 0x100);
2147 xf_emit(ctx, 1, 0x10001);
2149 xf_emit(ctx, 1, 0x10001);
2151 xf_emit(ctx, 1, 0x10001);
2156 xf_emit(ctx, 0x40, 0);
2161 xf_emit(ctx, 0x80, 0);
2163 xf_emit(ctx, 0x10*2, 0);
2167 xf_emit(ctx, 0x60, 0);
2169 xf_emit(ctx, 0
xc*2, 0);
2174 xf_emit(ctx, 0x40, 0);
2176 xf_emit(ctx, 8*2, 0);
2181 xf_emit(ctx, 0x10, 0);
2183 xf_emit(ctx, 2*2, 0);
2187 xf_emit(ctx, 0xf0, 0);
2189 xf_emit(ctx, 0x1e*2, 0);
2193 xf_emit(ctx, 0x60, 0);
2195 xf_emit(ctx, 0
xc*2, 0);
2200 xf_emit(ctx, 0x30, 0);
2202 xf_emit(ctx, 6*2, 0);
2205 xf_emit(ctx, 0x12, 0);
2210 xf_emit(ctx, 0x10, 0);
2212 xf_emit(ctx, 2*2, 0);
2229 nv50_graph_construct_gene_unk1cxx(
struct nouveau_grctx *ctx)
2233 xf_emit(ctx, 1, 0x3f800000);
2239 xf_emit(ctx, 1, 0x1a);
2243 xf_emit(ctx, 0x10, 0);
2246 xf_emit(ctx, 1, 0x00ffff00);
2252 xf_emit(ctx, 1, 0xf);
2254 xf_emit(ctx, 1, 0x0fac6881);
2255 xf_emit(ctx, 1, 0x11);
2263 else if (device->
chipset >= 0xa0)
2268 xf_emit(ctx, 2, 0x04000000);
2273 xf_emit(ctx, 1, 0x52);
2277 if (device->
chipset != 0x50) {
2283 xf_emit(ctx, 0x10, 0);
2284 xf_emit(ctx, 0x10, 0x3f800000);
2285 xf_emit(ctx, 1, 0x10);
2286 xf_emit(ctx, 0x20, 0);
2293 xf_emit(ctx, 1, 0x8100c12);
2299 xf_emit(ctx, 4, 0xffff);
2303 xf_emit(ctx, 0x1c, 0);
2305 xf_emit(ctx, 0x9, 0);
2309 xf_emit(ctx, 1, 0x00ffff00);
2310 xf_emit(ctx, 1, 0x1a);
2312 if (device->
chipset != 0x50) {
2319 xf_emit(ctx, 0x25, 0);
2321 xf_emit(ctx, 0x3b, 0);
2325 nv50_graph_construct_gene_strmout(
struct nouveau_grctx *ctx)
2328 xf_emit(ctx, 1, 0x102);
2331 if (device->
chipset >= 0xa0) {
2339 xf_emit(ctx, 1, 0x3ff);
2341 xf_emit(ctx, 1, 0x7ff);
2344 xf_emit(ctx, 1, 0x102);
2349 if (device->
chipset >= 0xa0) {
2360 xf_emit(ctx, 0x20, 0);
2370 xf_emit(ctx, 1, 0x4e3bfdf);
2371 xf_emit(ctx, 1, 0x4e3bfdf);
2375 xf_emit(ctx, 1, 0x11);
2385 xf_emit(ctx, 1, 0x0fac6881);
2395 xf_emit(ctx, 1, 0x4e3bfdf);
2396 xf_emit(ctx, 1, 0x4e3bfdf);
2401 xf_emit(ctx, 1, 0x11);
2410 if (device->
chipset == 0x50) {
2411 magic2 = 0x00003e60;
2413 magic2 = 0x001ffe67;
2415 magic2 = 0x00087e67;
2425 xf_emit(ctx, 1, magic2);
2438 xf_emit(ctx, 1, 0x15);
2441 xf_emit(ctx, 1, 0x10);
2449 xf_emit(ctx, 1, 0x400);
2450 xf_emit(ctx, 1, 0x300);
2451 xf_emit(ctx, 1, 0x1001);
2452 if (device->
chipset != 0xa0) {
2456 xf_emit(ctx, 1, 0x15);
2474 xf_emit(ctx, 1, 0x10);
2495 xf_emit(ctx, 1, 0x10);
2496 xf_emit(ctx, 0x10, 0);
2497 xf_emit(ctx, 0x10, 0x3f800000);
2518 xf_emit(ctx, 1, 0x10);
2520 xf_emit(ctx, 1, 0x3f);
2531 if (device->
chipset >= 0xa0) {
2533 xf_emit(ctx, 1, 0x1001);
2534 xf_emit(ctx, 0
xb, 0);
2542 xf_emit(ctx, 1, 0x11);
2544 xf_emit(ctx, 1, 0xf);
2546 xf_emit(ctx, 1, 0x11);
2548 if (device->
chipset != 0x50) {
2562 xf_emit(ctx, 1, magic2);
2564 xf_emit(ctx, 1, 0x0fac6881);
2584 }
else if (device->
chipset >= 0xa0) {
2626 xf_emit(ctx, 1, 0x11);
2637 xf_emit(ctx, 0x50, 0);
2641 nv50_graph_construct_xfer_unk84xx(
struct nouveau_grctx *ctx)
2666 xf_emit(ctx, 0x1f, 0);
2667 else if (device->
chipset >= 0xa0)
2668 xf_emit(ctx, 0x0f, 0);
2670 xf_emit(ctx, 0x10, 0);
2675 xf_emit(ctx, 1, 0x03020100);
2677 xf_emit(ctx, 1, 0x00608080);
2686 xf_emit(ctx, 1, 0x80);
2688 xf_emit(ctx, 1, magic3);
2692 xf_emit(ctx, 0x1f, 0);
2697 xf_emit(ctx, 1, 0x80);
2699 xf_emit(ctx, 1, 0x03020100);
2702 xf_emit(ctx, 1, magic3);
2718 xf_emit(ctx, 0x1020, 0);
2719 else if (device->
chipset < 0xa0)
2720 xf_emit(ctx, 0xa20, 0);
2722 xf_emit(ctx, 0x210, 0);
2724 xf_emit(ctx, 0x410, 0);
2737 if (device->
chipset == 0x50) {
2739 magic2 = 0x00003e60;
2742 magic2 = 0x001ffe67;
2745 magic2 = 0x00087e67;
2759 xf_emit(ctx, 1, 0xf);
2766 xf_emit(ctx, 4, 0xffff);
2788 }
else if (device->
chipset >= 0xa0) {
2815 xf_emit(ctx, 1, 0x11);
2817 xf_emit(ctx, 1, 0x0fac6881);
2824 xf_emit(ctx, 1, 0x11);
2827 xf_emit(ctx, 1, 0xcf);
2828 xf_emit(ctx, 1, 0xcf);
2829 xf_emit(ctx, 1, 0xcf);
2844 xf_emit(ctx, 1, 0x11);
2846 xf_emit(ctx, 1, 0x0fac6881);
2847 xf_emit(ctx, 1, 0xf);
2849 xf_emit(ctx, 1, magic2);
2852 xf_emit(ctx, 1, 0x11);
2871 xf_emit(ctx, 1, 0x11);
2873 xf_emit(ctx, 1, 0x0fac6881);
2877 xf_emit(ctx, 1, 0x11);
2884 xf_emit(ctx, 1, magic1);
2906 xf_emit(ctx, 1, 0x11);
2908 xf_emit(ctx, 1, 0x0fac6881);
2909 xf_emit(ctx, 8, 0x400);
2910 xf_emit(ctx, 8, 0x300);
2912 xf_emit(ctx, 1, 0xf);
2914 xf_emit(ctx, 1, 0x20);
2915 xf_emit(ctx, 1, 0x11);
2916 xf_emit(ctx, 1, 0x100);
2921 xf_emit(ctx, 1, 0x40);
2922 xf_emit(ctx, 1, 0x100);
2931 xf_emit(ctx, 1, magic2);
2936 xf_emit(ctx, 1, 0x0fac6881);
2953 xf_emit(ctx, 1, 0x400);
2954 xf_emit(ctx, 1, 0x300);
2955 xf_emit(ctx, 1, 0x1001);
2961 xf_emit(ctx, 1, 0x11);
2963 xf_emit(ctx, 1, 0x0fac6881);
2964 xf_emit(ctx, 1, 0xf);
2980 xf_emit(ctx, 1, 0x0fac6881);
2981 xf_emit(ctx, 1, magic2);
2985 xf_emit(ctx, 1, 0x11);
3001 if (device->
chipset >= 0xa0) {
3003 xf_emit(ctx, 1, 0xfac6881);
3012 xf_emit(ctx, 0x9, 0);
3014 xf_emit(ctx, 0x8, 0);
3017 xf_emit(ctx, 1, 0x11);
3019 xf_emit(ctx, 1, 0xfac6881);
3020 xf_emit(ctx, 1, 0xf);
3022 xf_emit(ctx, 1, 0x11);
3047 xf_emit(ctx, 1, 0x2a712488);
3049 xf_emit(ctx, 1, 0x4085c000);
3050 xf_emit(ctx, 1, 0x40);
3051 xf_emit(ctx, 1, 0x100);
3052 xf_emit(ctx, 1, 0x10100);
3053 xf_emit(ctx, 1, 0x02800000);
3055 if (device->
chipset == 0x50) {
3071 xf_emit(ctx, 0x6, 0);
3079 nv50_graph_construct_xfer_unk8cxx(
struct nouveau_grctx *ctx)
3087 xf_emit(ctx, 1, 0x04e3bfdf);
3088 xf_emit(ctx, 1, 0x04e3bfdf);
3091 xf_emit(ctx, 1, 0x00ffff00);
3097 xf_emit(ctx, 1, 0x00ffff00);
3109 xf_emit(ctx, 1, 0x30201000);
3110 xf_emit(ctx, 1, 0x70605040);
3111 xf_emit(ctx, 1, 0xb8a89888);
3112 xf_emit(ctx, 1, 0xf8e8d8c8);
3114 xf_emit(ctx, 1, 0x1a);
3122 nv50_graph_construct_xfer_unk84xx(ctx);
3123 nv50_graph_construct_xfer_tprop(ctx);
3124 nv50_graph_construct_xfer_tex(ctx);
3125 nv50_graph_construct_xfer_unk8cxx(ctx);
3127 nv50_graph_construct_xfer_tex(ctx);
3128 nv50_graph_construct_xfer_tprop(ctx);
3129 nv50_graph_construct_xfer_unk8cxx(ctx);
3130 nv50_graph_construct_xfer_unk84xx(ctx);
3161 for (i = 0; i < mpcnt; i++) {
3163 xf_emit(ctx, 1, 0x80);
3164 xf_emit(ctx, 1, 0x80007004);
3165 xf_emit(ctx, 1, 0x04000400);
3167 xf_emit(ctx, 1, 0xc0);
3168 xf_emit(ctx, 1, 0x1000);
3172 xf_emit(ctx, 1, 0xe00);
3173 xf_emit(ctx, 1, 0x1e00);
3179 xf_emit(ctx, 2, 0x1000);
3185 xf_emit(ctx, 0
xb, 0);
3186 else if (device->
chipset >= 0xa0)
3187 xf_emit(ctx, 0
xc, 0);
3189 xf_emit(ctx, 0xa, 0);
3191 xf_emit(ctx, 1, 0x08100c12);
3193 if (device->
chipset >= 0xa0) {
3194 xf_emit(ctx, 1, 0x1fe21);
3199 xf_emit(ctx, 4, 0xffff);
3201 xf_emit(ctx, 1, 0x10001);
3202 xf_emit(ctx, 1, 0x10001);
3205 xf_emit(ctx, 1, 0x1fe21);
3213 xf_emit(ctx, 1, 0x08100c12);
3217 xf_emit(ctx, 1, 0x11);
3220 xf_emit(ctx, 1, 0xfac6881);
3253 xf_emit(ctx, 0x3a0, 0);
3254 else if (device->
chipset < 0x94)
3255 xf_emit(ctx, 0x3a2, 0);
3257 xf_emit(ctx, 0x39f, 0);
3259 xf_emit(ctx, 0x3a3, 0);
3260 xf_emit(ctx, 1, 0x11);
3263 xf_emit(ctx, 0x2d, 0);
3272 u32 units = nv_rd32 (ctx->
device, 0x1540);
3278 for (i = 0; i < 8; i++) {
3283 xf_emit(ctx, 1, 0x08100c12);
3284 if (units & (1 << i))
3285 nv50_graph_construct_xfer_mpc(ctx);
3294 xf_emit(ctx, 1, 0x08100c12);
3295 if (units & (1 << 0))
3296 nv50_graph_construct_xfer_mpc(ctx);
3297 if (units & (1 << 1))
3298 nv50_graph_construct_xfer_mpc(ctx);
3304 if (units & (1 << 2))
3305 nv50_graph_construct_xfer_mpc(ctx);
3306 if (units & (1 << 3))
3307 nv50_graph_construct_xfer_mpc(ctx);
3313 if (units & (1 << 4))
3314 nv50_graph_construct_xfer_mpc(ctx);
3315 if (units & (1 << 5))
3316 nv50_graph_construct_xfer_mpc(ctx);
3317 if (units & (1 << 6))
3318 nv50_graph_construct_xfer_mpc(ctx);
3324 if (units & (1 << 7))
3325 nv50_graph_construct_xfer_mpc(ctx);
3326 if (units & (1 << 8))
3327 nv50_graph_construct_xfer_mpc(ctx);
3328 if (units & (1 << 9))
3329 nv50_graph_construct_xfer_mpc(ctx);
3335 cp_lsr (ctx, offset);