1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
|
/* Copyright (c) 2013-2016, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#ifndef _A4XX_REG_H
#define _A4XX_REG_H
/* A4XX interrupt bits */
#define A4XX_INT_RBBM_GPU_IDLE 0
#define A4XX_INT_RBBM_AHB_ERROR 1
#define A4XX_INT_RBBM_REG_TIMEOUT 2
#define A4XX_INT_RBBM_ME_MS_TIMEOUT 3
#define A4XX_INT_RBBM_PFP_MS_TIMEOUT 4
#define A4XX_INT_RBBM_ETS_MS_TIMEOUT 5
#define A4XX_INT_RBBM_ASYNC_OVERFLOW 6
#define A4XX_INT_RBBM_GPC_ERR 7
#define A4XX_INT_CP_SW 8
#define A4XX_INT_CP_OPCODE_ERROR 9
#define A4XX_INT_CP_RESERVED_BIT_ERROR 10
#define A4XX_INT_CP_HW_FAULT 11
#define A4XX_INT_CP_DMA 12
#define A4XX_INT_CP_IB2_INT 13
#define A4XX_INT_CP_IB1_INT 14
#define A4XX_INT_CP_RB_INT 15
#define A4XX_INT_CP_REG_PROTECT_FAULT 16
#define A4XX_INT_CP_RB_DONE_TS 17
#define A4XX_INT_CP_VS_DONE_TS 18
#define A4XX_INT_CP_PS_DONE_TS 19
#define A4XX_INT_CACHE_FLUSH_TS 20
#define A4XX_INT_CP_AHB_ERROR_HALT 21
#define A4XX_INT_RBBM_ATB_BUS_OVERFLOW 22
#define A4XX_INT_MISC_HANG_DETECT 24
#define A4XX_INT_UCHE_OOB_ACCESS 25
#define A4XX_INT_RBBM_DPM_CALC_ERR 28
#define A4XX_INT_RBBM_DPM_EPOCH_ERR 29
#define A4XX_INT_RBBM_DPM_THERMAL_YELLOW_ERR 30
#define A4XX_INT_RBBM_DPM_THERMAL_RED_ERR 31
/* RB registers */
#define A4XX_RB_GMEM_BASE_ADDR 0xcc0
#define A4XX_RB_PERFCTR_RB_SEL_0 0xcc7
#define A4XX_RB_PERFCTR_RB_SEL_1 0xcc8
#define A4XX_RB_PERFCTR_RB_SEL_2 0xcc9
#define A4XX_RB_PERFCTR_RB_SEL_3 0xcca
#define A4XX_RB_PERFCTR_RB_SEL_4 0xccb
#define A4XX_RB_PERFCTR_RB_SEL_5 0xccc
#define A4XX_RB_PERFCTR_RB_SEL_6 0xccd
#define A4XX_RB_PERFCTR_RB_SEL_7 0xcce
enum a4xx_rb_perfctr_rb_sel {
RB_VALID_SAMPLES = 0x25,
RB_Z_FAIL = 0x28,
RB_S_FAIL = 0x29,
};
/* RBBM registers */
#define A4XX_RBBM_CLOCK_CTL_TP0 0x4
#define A4XX_RBBM_CLOCK_CTL_TP1 0x5
#define A4XX_RBBM_CLOCK_CTL_TP2 0x6
#define A4XX_RBBM_CLOCK_CTL_TP3 0x7
#define A4XX_RBBM_CLOCK_CTL2_TP0 0x8
#define A4XX_RBBM_CLOCK_CTL2_TP1 0x9
#define A4XX_RBBM_CLOCK_CTL2_TP2 0xA
#define A4XX_RBBM_CLOCK_CTL2_TP3 0xB
#define A4XX_RBBM_CLOCK_HYST_TP0 0xC
#define A4XX_RBBM_CLOCK_HYST_TP1 0xD
#define A4XX_RBBM_CLOCK_HYST_TP2 0xE
#define A4XX_RBBM_CLOCK_HYST_TP3 0xF
#define A4XX_RBBM_CLOCK_DELAY_TP0 0x10
#define A4XX_RBBM_CLOCK_DELAY_TP1 0x11
#define A4XX_RBBM_CLOCK_DELAY_TP2 0x12
#define A4XX_RBBM_CLOCK_DELAY_TP3 0x13
#define A4XX_RBBM_CLOCK_CTL_UCHE 0x14
#define A4XX_RBBM_CLOCK_CTL2_UCHE 0x15
#define A4XX_RBBM_CLOCK_CTL3_UCHE 0x16
#define A4XX_RBBM_CLOCK_CTL4_UCHE 0x17
#define A4XX_RBBM_CLOCK_HYST_UCHE 0x18
#define A4XX_RBBM_CLOCK_DELAY_UCHE 0x19
#define A4XX_RBBM_CLOCK_MODE_GPC 0x1a
#define A4XX_RBBM_CLOCK_DELAY_GPC 0x1b
#define A4XX_RBBM_CLOCK_HYST_GPC 0x1c
#define A4XX_RBBM_CLOCK_CTL_TSE_RAS_RBBM 0x1d
#define A4XX_RBBM_CLOCK_HYST_TSE_RAS_RBBM 0x1e
#define A4XX_RBBM_CLOCK_DELAY_TSE_RAS_RBBM 0x1f
#define A4XX_RBBM_CLOCK_CTL 0x20
#define A4XX_RBBM_SP_HYST_CNT 0x21
#define A4XX_RBBM_SW_RESET_CMD 0x22
#define A4XX_RBBM_AHB_CTL0 0x23
#define A4XX_RBBM_AHB_CTL1 0x24
#define A4XX_RBBM_AHB_CMD 0x25
#define A4XX_RBBM_WAIT_IDLE_CLOCKS_CTL 0x2b
#define A4XX_RBBM_INTERFACE_HANG_INT_CTL 0x2f
#define A4XX_RBBM_INT_CLEAR_CMD 0x36
#define A4XX_RBBM_INT_0_MASK 0x37
#define A4XX_RBBM_RBBM_CTL 0x3e
#define A4XX_RBBM_CLOCK_CTL2 0x42
#define A4XX_RBBM_BLOCK_SW_RESET_CMD 0x45
#define A4XX_RBBM_EXT_TRACE_BUS_CTL 0x49
#define A4XX_RBBM_CFG_DEBBUS_SEL_A 0x4a
#define A4XX_RBBM_CFG_DEBBUS_SEL_B 0x4b
#define A4XX_RBBM_CFG_DEBBUS_SEL_C 0x4c
#define A4XX_RBBM_CFG_DEBBUS_SEL_D 0x4d
#define A4XX_RBBM_CFG_DEBBUS_SEL_PING_INDEX_SHIFT 0
#define A4XX_RBBM_CFG_DEBBUS_SEL_PING_BLK_SEL_SHIFT 8
#define A4XX_RBBM_CFG_DEBBUS_CTLT 0x4e
#define A4XX_RBBM_CFG_DEBBUS_CTLM 0x4f
#define A4XX_RBBM_CFG_DEBBUS_CTLT_ENABLE_SHIFT 24
#define A4XX_RBBM_CFG_DEBBUS_OPL 0x50
#define A4XX_RBBM_CFG_DEBBUS_OPE 0x51
#define A4XX_RBBM_CFG_DEBBUS_IVTL_0 0x52
#define A4XX_RBBM_CFG_DEBBUS_IVTL_1 0x53
#define A4XX_RBBM_CFG_DEBBUS_IVTL_2 0x54
#define A4XX_RBBM_CFG_DEBBUS_IVTL_3 0x55
#define A4XX_RBBM_CFG_DEBBUS_MASKL_0 0x56
#define A4XX_RBBM_CFG_DEBBUS_MASKL_1 0x57
#define A4XX_RBBM_CFG_DEBBUS_MASKL_2 0x58
#define A4XX_RBBM_CFG_DEBBUS_MASKL_3 0x59
#define A4XX_RBBM_CFG_DEBBUS_BYTEL_0 0x5a
#define A4XX_RBBM_CFG_DEBBUS_BYTEL_1 0x5b
#define A4XX_RBBM_CFG_DEBBUS_IVTE_0 0x5c
#define A4XX_RBBM_CFG_DEBBUS_IVTE_1 0x5d
#define A4XX_RBBM_CFG_DEBBUS_IVTE_2 0x5e
#define A4XX_RBBM_CFG_DEBBUS_IVTE_3 0x5f
#define A4XX_RBBM_CFG_DEBBUS_MASKE_0 0x60
#define A4XX_RBBM_CFG_DEBBUS_MASKE_1 0x61
#define A4XX_RBBM_CFG_DEBBUS_MASKE_2 0x62
#define A4XX_RBBM_CFG_DEBBUS_MASKE_3 0x63
#define A4XX_RBBM_CFG_DEBBUS_NIBBLEE 0x64
#define A4XX_RBBM_CFG_DEBBUS_PTRC0 0x65
#define A4XX_RBBM_CFG_DEBBUS_PTRC1 0x66
#define A4XX_RBBM_CFG_DEBBUS_LOADREG 0x67
#define A4XX_RBBM_CLOCK_CTL_SP0 0x68
#define A4XX_RBBM_CLOCK_CTL_SP1 0x69
#define A4XX_RBBM_CLOCK_CTL_SP2 0x6A
#define A4XX_RBBM_CLOCK_CTL_SP3 0x6B
#define A4XX_RBBM_CLOCK_CTL2_SP0 0x6C
#define A4XX_RBBM_CLOCK_CTL2_SP1 0x6D
#define A4XX_RBBM_CLOCK_CTL2_SP2 0x6E
#define A4XX_RBBM_CLOCK_CTL2_SP3 0x6F
#define A4XX_RBBM_CLOCK_HYST_SP0 0x70
#define A4XX_RBBM_CLOCK_HYST_SP1 0x71
#define A4XX_RBBM_CLOCK_HYST_SP2 0x72
#define A4XX_RBBM_CLOCK_HYST_SP3 0x73
#define A4XX_RBBM_CLOCK_DELAY_SP0 0x74
#define A4XX_RBBM_CLOCK_DELAY_SP1 0x75
#define A4XX_RBBM_CLOCK_DELAY_SP2 0x76
#define A4XX_RBBM_CLOCK_DELAY_SP3 0x77
#define A4XX_RBBM_CLOCK_CTL_RB0 0x78
#define A4XX_RBBM_CLOCK_CTL_RB1 0x79
#define A4XX_RBBM_CLOCK_CTL_RB2 0x7A
#define A4XX_RBBM_CLOCK_CTL_RB3 0x7B
#define A4XX_RBBM_CLOCK_CTL2_RB0 0x7C
#define A4XX_RBBM_CLOCK_CTL2_RB1 0x7D
#define A4XX_RBBM_CLOCK_CTL2_RB2 0x7E
#define A4XX_RBBM_CLOCK_CTL2_RB3 0x7F
#define A4XX_RBBM_CLOCK_HYST_COM_DCOM 0x80
#define A4XX_RBBM_CLOCK_CTL_COM_DCOM 0x81
#define A4XX_RBBM_CLOCK_CTL_MARB_CCU0 0x82
#define A4XX_RBBM_CLOCK_CTL_MARB_CCU1 0x83
#define A4XX_RBBM_CLOCK_CTL_MARB_CCU2 0x84
#define A4XX_RBBM_CLOCK_CTL_MARB_CCU3 0x85
#define A4XX_RBBM_CLOCK_HYST_RB_MARB_CCU0 0x86
#define A4XX_RBBM_CLOCK_HYST_RB_MARB_CCU1 0x87
#define A4XX_RBBM_CLOCK_HYST_RB_MARB_CCU2 0x88
#define A4XX_RBBM_CLOCK_HYST_RB_MARB_CCU3 0x89
#define A4XX_RBBM_CLOCK_CTL_HLSQ 0x8a
#define A4XX_RBBM_CLOCK_HYST_HLSQ 0x8b
#define A4XX_RBBM_CLOCK_DELAY_HLSQ 0x8c
#define A4XX_CGC_HLSQ_TP_EARLY_CYC_MASK 0x00700000
#define A4XX_CGC_HLSQ_TP_EARLY_CYC_SHIFT 20
#define A4XX_RBBM_CLOCK_DELAY_COM_DCOM 0x8d
#define A4XX_RBBM_CLOCK_DELAY_RB_MARB_CCU_L1_0 0x8e
#define A4XX_RBBM_CLOCK_DELAY_RB_MARB_CCU_L1_1 0x8f
#define A4XX_RBBM_CLOCK_DELAY_RB_MARB_CCU_L1_2 0x90
#define A4XX_RBBM_CLOCK_DELAY_RB_MARB_CCU_L1_3 0x91
#define A4XX_RBBM_CFG_DEBBUS_IDX 0x93
#define A4XX_RBBM_CFG_DEBBUS_CLRC 0x94
#define A4XX_RBBM_CFG_DEBBUS_LOADIVT 0x95
#define A4XX_RBBM_CLOCK_CTL_IP 0x97
#define A4XX_RBBM_POWER_CNTL_IP 0x98
#define A4XX_RBBM_SP_REGFILE_SLEEP_CNTL_0 0x99
#define A4XX_RBBM_SP_REGFILE_SLEEP_CNTL_1 0x9a
#define A4XX_RBBM_PERFCTR_CP_0_LO 0x9c
#define A4XX_RBBM_PERFCTR_CP_0_HI 0x9d
#define A4XX_RBBM_PERFCTR_CP_1_LO 0x9e
#define A4XX_RBBM_PERFCTR_CP_1_HI 0x9f
#define A4XX_RBBM_PERFCTR_CP_2_LO 0xa0
#define A4XX_RBBM_PERFCTR_CP_2_HI 0xa1
#define A4XX_RBBM_PERFCTR_CP_3_LO 0xa2
#define A4XX_RBBM_PERFCTR_CP_3_HI 0xa3
#define A4XX_RBBM_PERFCTR_CP_4_LO 0xa4
#define A4XX_RBBM_PERFCTR_CP_4_HI 0xa5
#define A4XX_RBBM_PERFCTR_CP_5_LO 0xa6
#define A4XX_RBBM_PERFCTR_CP_5_HI 0xa7
#define A4XX_RBBM_PERFCTR_CP_6_LO 0xa8
#define A4XX_RBBM_PERFCTR_CP_6_HI 0xa9
#define A4XX_RBBM_PERFCTR_CP_7_LO 0xaa
#define A4XX_RBBM_PERFCTR_CP_7_HI 0xab
#define A4XX_RBBM_PERFCTR_RBBM_0_LO 0xac
#define A4XX_RBBM_PERFCTR_RBBM_0_HI 0xad
#define A4XX_RBBM_PERFCTR_RBBM_1_LO 0xae
#define A4XX_RBBM_PERFCTR_RBBM_1_HI 0xaf
#define A4XX_RBBM_PERFCTR_RBBM_2_LO 0xb0
#define A4XX_RBBM_PERFCTR_RBBM_2_HI 0xb1
#define A4XX_RBBM_PERFCTR_RBBM_3_LO 0xb2
#define A4XX_RBBM_PERFCTR_RBBM_3_HI 0xb3
#define A4XX_RBBM_PERFCTR_PC_0_LO 0xb4
#define A4XX_RBBM_PERFCTR_PC_0_HI 0xb5
#define A4XX_RBBM_PERFCTR_PC_1_LO 0xb6
#define A4XX_RBBM_PERFCTR_PC_1_HI 0xb7
#define A4XX_RBBM_PERFCTR_PC_2_LO 0xb8
#define A4XX_RBBM_PERFCTR_PC_2_HI 0xb9
#define A4XX_RBBM_PERFCTR_PC_3_LO 0xba
#define A4XX_RBBM_PERFCTR_PC_3_HI 0xbb
#define A4XX_RBBM_PERFCTR_PC_4_LO 0xbc
#define A4XX_RBBM_PERFCTR_PC_4_HI 0xbd
#define A4XX_RBBM_PERFCTR_PC_5_LO 0xbe
#define A4XX_RBBM_PERFCTR_PC_5_HI 0xbf
#define A4XX_RBBM_PERFCTR_PC_6_LO 0xc0
#define A4XX_RBBM_PERFCTR_PC_6_HI 0xc1
#define A4XX_RBBM_PERFCTR_PC_7_LO 0xc2
#define A4XX_RBBM_PERFCTR_PC_7_HI 0xc3
#define A4XX_RBBM_PERFCTR_VFD_0_LO 0xc4
#define A4XX_RBBM_PERFCTR_VFD_0_HI 0xc5
#define A4XX_RBBM_PERFCTR_VFD_1_LO 0xc6
#define A4XX_RBBM_PERFCTR_VFD_1_HI 0xc7
#define A4XX_RBBM_PERFCTR_VFD_2_LO 0xc8
#define A4XX_RBBM_PERFCTR_VFD_2_HI 0xc9
#define A4XX_RBBM_PERFCTR_VFD_3_LO 0xca
#define A4XX_RBBM_PERFCTR_VFD_3_HI 0xcb
#define A4XX_RBBM_PERFCTR_VFD_4_LO 0xcc
#define A4XX_RBBM_PERFCTR_VFD_4_HI 0xcd
#define A4XX_RBBM_PERFCTR_VFD_5_LO 0xce
#define A4XX_RBBM_PERFCTR_VFD_5_HI 0xcf
#define A4XX_RBBM_PERFCTR_VFD_6_LO 0xd0
#define A4XX_RBBM_PERFCTR_VFD_6_HI 0xd1
#define A4XX_RBBM_PERFCTR_VFD_7_LO 0xd2
#define A4XX_RBBM_PERFCTR_VFD_7_HI 0xd3
#define A4XX_RBBM_PERFCTR_HLSQ_0_LO 0xd4
#define A4XX_RBBM_PERFCTR_HLSQ_0_HI 0xd5
#define A4XX_RBBM_PERFCTR_HLSQ_1_LO 0xd6
#define A4XX_RBBM_PERFCTR_HLSQ_1_HI 0xd7
#define A4XX_RBBM_PERFCTR_HLSQ_2_LO 0xd8
#define A4XX_RBBM_PERFCTR_HLSQ_2_HI 0xd9
#define A4XX_RBBM_PERFCTR_HLSQ_3_LO 0xda
#define A4XX_RBBM_PERFCTR_HLSQ_3_HI 0xdb
#define A4XX_RBBM_PERFCTR_HLSQ_4_LO 0xdc
#define A4XX_RBBM_PERFCTR_HLSQ_4_HI 0xdd
#define A4XX_RBBM_PERFCTR_HLSQ_5_LO 0xde
#define A4XX_RBBM_PERFCTR_HLSQ_5_HI 0xdf
#define A4XX_RBBM_PERFCTR_HLSQ_6_LO 0xe0
#define A4XX_RBBM_PERFCTR_HLSQ_6_HI 0xe1
#define A4XX_RBBM_PERFCTR_HLSQ_7_LO 0xe2
#define A4XX_RBBM_PERFCTR_HLSQ_7_HI 0xe3
#define A4XX_RBBM_PERFCTR_VPC_0_LO 0xe4
#define A4XX_RBBM_PERFCTR_VPC_0_HI 0xe5
#define A4XX_RBBM_PERFCTR_VPC_1_LO 0xe6
#define A4XX_RBBM_PERFCTR_VPC_1_HI 0xe7
#define A4XX_RBBM_PERFCTR_VPC_2_LO 0xe8
#define A4XX_RBBM_PERFCTR_VPC_2_HI 0xe9
#define A4XX_RBBM_PERFCTR_VPC_3_LO 0xea
#define A4XX_RBBM_PERFCTR_VPC_3_HI 0xeb
#define A4XX_RBBM_PERFCTR_CCU_0_LO 0xec
#define A4XX_RBBM_PERFCTR_CCU_0_HI 0xed
#define A4XX_RBBM_PERFCTR_CCU_1_LO 0xee
#define A4XX_RBBM_PERFCTR_CCU_1_HI 0xef
#define A4XX_RBBM_PERFCTR_CCU_2_LO 0xf0
#define A4XX_RBBM_PERFCTR_CCU_2_HI 0xf1
#define A4XX_RBBM_PERFCTR_CCU_3_LO 0xf2
#define A4XX_RBBM_PERFCTR_CCU_3_HI 0xf3
#define A4XX_RBBM_PERFCTR_TSE_0_LO 0xf4
#define A4XX_RBBM_PERFCTR_TSE_0_HI 0xf5
#define A4XX_RBBM_PERFCTR_TSE_1_LO 0xf6
#define A4XX_RBBM_PERFCTR_TSE_1_HI 0xf7
#define A4XX_RBBM_PERFCTR_TSE_2_LO 0xf8
#define A4XX_RBBM_PERFCTR_TSE_2_HI 0xf9
#define A4XX_RBBM_PERFCTR_TSE_3_LO 0xfa
#define A4XX_RBBM_PERFCTR_TSE_3_HI 0xfb
#define A4XX_RBBM_PERFCTR_RAS_0_LO 0xfc
#define A4XX_RBBM_PERFCTR_RAS_0_HI 0xfd
#define A4XX_RBBM_PERFCTR_RAS_1_LO 0xfe
#define A4XX_RBBM_PERFCTR_RAS_1_HI 0xff
#define A4XX_RBBM_PERFCTR_RAS_2_LO 0x100
#define A4XX_RBBM_PERFCTR_RAS_2_HI 0x101
#define A4XX_RBBM_PERFCTR_RAS_3_LO 0x102
#define A4XX_RBBM_PERFCTR_RAS_3_HI 0x103
#define A4XX_RBBM_PERFCTR_UCHE_0_LO 0x104
#define A4XX_RBBM_PERFCTR_UCHE_0_HI 0x105
#define A4XX_RBBM_PERFCTR_UCHE_1_LO 0x106
#define A4XX_RBBM_PERFCTR_UCHE_1_HI 0x107
#define A4XX_RBBM_PERFCTR_UCHE_2_LO 0x108
#define A4XX_RBBM_PERFCTR_UCHE_2_HI 0x109
#define A4XX_RBBM_PERFCTR_UCHE_3_LO 0x10a
#define A4XX_RBBM_PERFCTR_UCHE_3_HI 0x10b
#define A4XX_RBBM_PERFCTR_UCHE_4_LO 0x10c
#define A4XX_RBBM_PERFCTR_UCHE_4_HI 0x10d
#define A4XX_RBBM_PERFCTR_UCHE_5_LO 0x10e
#define A4XX_RBBM_PERFCTR_UCHE_5_HI 0x10f
#define A4XX_RBBM_PERFCTR_UCHE_6_LO 0x110
#define A4XX_RBBM_PERFCTR_UCHE_6_HI 0x111
#define A4XX_RBBM_PERFCTR_UCHE_7_LO 0x112
#define A4XX_RBBM_PERFCTR_UCHE_7_HI 0x113
#define A4XX_RBBM_PERFCTR_TP_0_LO 0x114
#define A4XX_RBBM_PERFCTR_TP_0_HI 0x115
#define A4XX_RBBM_PERFCTR_TP_1_LO 0x116
#define A4XX_RBBM_PERFCTR_TP_1_HI 0x117
#define A4XX_RBBM_PERFCTR_TP_2_LO 0x118
#define A4XX_RBBM_PERFCTR_TP_2_HI 0x119
#define A4XX_RBBM_PERFCTR_TP_3_LO 0x11a
#define A4XX_RBBM_PERFCTR_TP_3_HI 0x11b
#define A4XX_RBBM_PERFCTR_TP_4_LO 0x11c
#define A4XX_RBBM_PERFCTR_TP_4_HI 0x11d
#define A4XX_RBBM_PERFCTR_TP_5_LO 0x11e
#define A4XX_RBBM_PERFCTR_TP_5_HI 0x11f
#define A4XX_RBBM_PERFCTR_TP_6_LO 0x120
#define A4XX_RBBM_PERFCTR_TP_6_HI 0x121
#define A4XX_RBBM_PERFCTR_TP_7_LO 0x122
#define A4XX_RBBM_PERFCTR_TP_7_HI 0x123
#define A4XX_RBBM_PERFCTR_SP_0_LO 0x124
#define A4XX_RBBM_PERFCTR_SP_0_HI 0x125
#define A4XX_RBBM_PERFCTR_SP_1_LO 0x126
#define A4XX_RBBM_PERFCTR_SP_1_HI 0x127
#define A4XX_RBBM_PERFCTR_SP_2_LO 0x128
#define A4XX_RBBM_PERFCTR_SP_2_HI 0x129
#define A4XX_RBBM_PERFCTR_SP_3_LO 0x12a
#define A4XX_RBBM_PERFCTR_SP_3_HI 0x12b
#define A4XX_RBBM_PERFCTR_SP_4_LO 0x12c
#define A4XX_RBBM_PERFCTR_SP_4_HI 0x12d
#define A4XX_RBBM_PERFCTR_SP_5_LO 0x12e
#define A4XX_RBBM_PERFCTR_SP_5_HI 0x12f
#define A4XX_RBBM_PERFCTR_SP_6_LO 0x130
#define A4XX_RBBM_PERFCTR_SP_6_HI 0x131
#define A4XX_RBBM_PERFCTR_SP_7_LO 0x132
#define A4XX_RBBM_PERFCTR_SP_7_HI 0x133
#define A4XX_RBBM_PERFCTR_SP_8_LO 0x134
#define A4XX_RBBM_PERFCTR_SP_8_HI 0x135
#define A4XX_RBBM_PERFCTR_SP_9_LO 0x136
#define A4XX_RBBM_PERFCTR_SP_9_HI 0x137
#define A4XX_RBBM_PERFCTR_SP_10_LO 0x138
#define A4XX_RBBM_PERFCTR_SP_10_HI 0x139
#define A4XX_RBBM_PERFCTR_SP_11_LO 0x13a
#define A4XX_RBBM_PERFCTR_SP_11_HI 0x13b
#define A4XX_RBBM_PERFCTR_RB_0_LO 0x13c
#define A4XX_RBBM_PERFCTR_RB_0_HI 0x13d
#define A4XX_RBBM_PERFCTR_RB_1_LO 0x13e
#define A4XX_RBBM_PERFCTR_RB_1_HI 0x13f
#define A4XX_RBBM_PERFCTR_RB_2_LO 0x140
#define A4XX_RBBM_PERFCTR_RB_2_HI 0x141
#define A4XX_RBBM_PERFCTR_RB_3_LO 0x142
#define A4XX_RBBM_PERFCTR_RB_3_HI 0x143
#define A4XX_RBBM_PERFCTR_RB_4_LO 0x144
#define A4XX_RBBM_PERFCTR_RB_4_HI 0x145
#define A4XX_RBBM_PERFCTR_RB_5_LO 0x146
#define A4XX_RBBM_PERFCTR_RB_5_HI 0x147
#define A4XX_RBBM_PERFCTR_RB_6_LO 0x148
#define A4XX_RBBM_PERFCTR_RB_6_HI 0x149
#define A4XX_RBBM_PERFCTR_RB_7_LO 0x14a
#define A4XX_RBBM_PERFCTR_RB_7_HI 0x14b
#define A4XX_RBBM_PERFCTR_VSC_0_LO 0x14c
#define A4XX_RBBM_PERFCTR_VSC_0_HI 0x14d
#define A4XX_RBBM_PERFCTR_VSC_1_LO 0x14e
#define A4XX_RBBM_PERFCTR_VSC_1_HI 0x14f
#define A4XX_RBBM_PERFCTR_PWR_0_LO 0x166
#define A4XX_RBBM_PERFCTR_PWR_0_HI 0x167
#define A4XX_RBBM_PERFCTR_PWR_1_LO 0x168
#define A4XX_RBBM_PERFCTR_PWR_1_HI 0x169
#define A4XX_RBBM_ALWAYSON_COUNTER_LO 0x16e
#define A4XX_RBBM_ALWAYSON_COUNTER_HI 0x16f
#define A4XX_RBBM_PERFCTR_CTL 0x170
#define A4XX_RBBM_PERFCTR_LOAD_CMD0 0x171
#define A4XX_RBBM_PERFCTR_LOAD_CMD1 0x172
#define A4XX_RBBM_PERFCTR_LOAD_CMD2 0x173
#define A4XX_RBBM_PERFCTR_LOAD_VALUE_LO 0x174
#define A4XX_RBBM_PERFCTR_LOAD_VALUE_HI 0x175
#define A4XX_RBBM_PERFCTR_RBBM_SEL_0 0x176
#define A4XX_RBBM_PERFCTR_RBBM_SEL_1 0x177
#define A4XX_RBBM_PERFCTR_RBBM_SEL_2 0x178
#define A4XX_RBBM_PERFCTR_RBBM_SEL_3 0x179
#define A4XX_RBBM_GPU_BUSY_MASKED 0x17a
#define A4XX_RBBM_INT_0_STATUS 0x17d
#define A4XX_RBBM_AHB_ME_SPLIT_STATUS 0x18c
#define A4XX_RBBM_AHB_PFP_SPLIT_STATUS 0x18d
#define A4XX_RBBM_AHB_ERROR_STATUS 0x18f
#define A4XX_RBBM_STATUS 0x191
#define A4XX_RBBM_CFG_DEBBUS_TRACE_BUF4 0x1ad
#define A4XX_RBBM_POWER_STATUS 0x1b0
#define A4XX_RBBM_PPD_V2_SP_PWR_WEIGHTS 0x1b2
#define A4XX_RBBM_PPD_V2_SP_RB_EPOCH_TH 0x1b3
#define A4XX_RBBM_PPD_V2_TP_CONFIG 0x1b4
#define A4XX_RBBM_PPD_RAMP_V2_CONTROL 0x1b5
#define A4XX_RBBM_WAIT_IDLE_CLOCKS_CTL2 0x1b8
#define A4XX_RBBM_PPD_CTRL 0x1b9
#define A4XX_RBBM_PPD_EPOCH_INTER_TH_HIGH_CLEAR_THR 0x1bc
#define A4XX_RBBM_PPD_EPOCH_INTER_TH_LOW 0x1bd
/* SECVID registers */
#define A4XX_RBBM_SECVID_TRUST_CONFIG 0xf000
#define A4XX_RBBM_SECVID_TRUST_CONTROL 0xf400
#define A4XX_RBBM_SECVID_TSB_TRUSTED_BASE 0xf800
#define A4XX_RBBM_SECVID_TSB_TRUSTED_SIZE 0xf801
#define A4XX_RBBM_SECVID_TSB_CONTROL 0xf802
/* CP registers */
#define A4XX_CP_RB_BASE 0x200
#define A4XX_CP_RB_CNTL 0x201
#define A4XX_CP_RB_RPTR_ADDR 0x203
#define A4XX_CP_RB_RPTR 0x204
#define A4XX_CP_RB_WPTR 0x205
#define A4XX_CP_IB1_BASE 0x206
#define A4XX_CP_IB1_BUFSZ 0x207
#define A4XX_CP_IB2_BASE 0x208
#define A4XX_CP_IB2_BUFSZ 0x209
#define A4XX_CP_ROQ_ADDR 0x21C
#define A4XX_CP_ROQ_DATA 0x21D
#define A4XX_CP_MEQ_ADDR 0x21E
#define A4XX_CP_MEQ_DATA 0x21F
#define A4XX_CP_MERCIU_ADDR 0x220
#define A4XX_CP_MERCIU_DATA 0x221
#define A4XX_CP_MERCIU_DATA2 0x222
#define A4XX_CP_PFP_UCODE_ADDR 0x223
#define A4XX_CP_PFP_UCODE_DATA 0x224
#define A4XX_CP_ME_RAM_WADDR 0x225
#define A4XX_CP_ME_RAM_RADDR 0x226
#define A4XX_CP_ME_RAM_DATA 0x227
#define A4XX_CP_PREEMPT 0x22a
#define A4XX_CP_PREEMPT_DISABLE 0x22b
#define A4XX_CP_CNTL 0x22c
#define A4XX_CP_ME_CNTL 0x22d
#define A4XX_CP_DEBUG 0x22e
#define A4XX_CP_STATE_DEBUG_INDEX 0x22f
#define A4XX_CP_STATE_DEBUG_DATA 0x230
#define A4XX_CP_POWER_COLLAPSE_CNTL 0x234
/*
* CP debug settings for A4xx cores
* MIU_128BIT_WRITE_ENABLE [25] - Allow 128 bit writes to the VBIF
*/
#define A4XX_CP_DEBUG_DEFAULT (1 << 25)
#define A4XX_CP_PROTECT_REG_0 0x240
#define A4XX_CP_PROTECT_CTRL 0x250
#define A4XX_CP_PROTECT_REG_10 0x251
#define A4XX_CP_ME_STATUS 0x4d1
#define A4XX_CP_CNTL 0x22c
#define A4XX_CP_WFI_PEND_CTR 0x4d2
#define A4XX_CP_PREEMPT_DEBUG 0x4d6
#define A4XX_CP_HW_FAULT 0x4d8
#define A4XX_CP_PROTECT_STATUS 0x4da
#define A4XX_CP_PERFCTR_CP_SEL_0 0x500
#define A4XX_CP_PERFCTR_CP_SEL_1 0x501
#define A4XX_CP_PERFCTR_CP_SEL_2 0x502
#define A4XX_CP_PERFCTR_CP_SEL_3 0x503
#define A4XX_CP_PERFCTR_CP_SEL_4 0x504
#define A4XX_CP_PERFCTR_CP_SEL_5 0x505
#define A4XX_CP_PERFCTR_CP_SEL_6 0x506
#define A4XX_CP_PERFCTR_CP_SEL_7 0x507
#define A4XX_CP_SCRATCH_REG6 0x57e
#define A4XX_CP_SCRATCH_REG7 0x57f
#define A4XX_CP_SCRATCH_REG8 0x580
#define A4XX_CP_SCRATCH_REG9 0x581
#define A4XX_CP_SCRATCH_REG10 0x582
#define A4XX_CP_SCRATCH_REG11 0x583
#define A4XX_CP_SCRATCH_REG12 0x584
#define A4XX_CP_SCRATCH_REG13 0x585
#define A4XX_CP_SCRATCH_REG14 0x586
#define A4XX_CP_SCRATCH_REG15 0x587
#define A4XX_CP_SCRATCH_REG16 0x588
#define A4XX_CP_SCRATCH_REG17 0x589
#define A4XX_CP_SCRATCH_REG18 0x58a
#define A4XX_CP_SCRATCH_REG23 0x58f
/* SP registers */
#define A4XX_SP_SP_CTRL 0x22C0
#define A4XX_SP_INSTR_CACHE_CTRL 0x22c1
#define A4XX_SP_VS_OBJ_START 0x22e1
#define A4XX_SP_VS_PVT_MEM_ADDR 0x22e3
#define A4XX_SP_FS_CTRL_1 0x22e9
#define A4XX_SP_FS_OBJ_START 0x22eb
#define A4XX_SP_FS_PVT_MEM_ADDR 0x22ed
#define A4XX_SP_CS_CTRL_0 0x2300
#define A4XX_SP_CS_OBJ_OFFSET 0x2301
#define A4XX_SP_CS_OBJ_START 0x2302
#define A4XX_SP_CS_LENGTH 0x2306
#define A4XX_SP_MODE_CONTROL 0xec3
#define A4XX_SP_PERFCTR_SP_SEL_0 0xec4
#define A4XX_SP_PERFCTR_SP_SEL_1 0xec5
#define A4XX_SP_PERFCTR_SP_SEL_2 0xec6
#define A4XX_SP_PERFCTR_SP_SEL_3 0xec7
#define A4XX_SP_PERFCTR_SP_SEL_4 0xec8
#define A4XX_SP_PERFCTR_SP_SEL_5 0xec9
#define A4XX_SP_PERFCTR_SP_SEL_6 0xeca
#define A4XX_SP_PERFCTR_SP_SEL_7 0xecb
#define A4XX_SP_PERFCTR_SP_SEL_8 0xecc
#define A4XX_SP_PERFCTR_SP_SEL_9 0xecd
#define A4XX_SP_PERFCTR_SP_SEL_10 0xece
#define A4XX_SP_PERFCTR_SP_SEL_11 0xecf
#define A4XX_SP_VS_PVT_MEM_ADDR 0x22e3
#define A4XX_SP_FS_PVT_MEM_ADDR 0x22ed
#define A4XX_SP_VS_OBJ_START 0x22e1
#define A4XX_SP_FS_OBJ_START 0x22eb
/* COUNTABLE FOR SP PERFCOUNTER */
#define A4XX_SP_ALU_ACTIVE_CYCLES 0x1D
#define A4XX_SP0_ICL1_MISSES 0x1A
#define A4XX_SP_FS_CFLOW_INSTRUCTIONS 0x0C
/* COUNTABLE FOR TSE PERFCOUNTER */
#define A4XX_TSE_INPUT_PRIM_NUM 0x0
enum a4xx_sp_perfctr_sp_sel {
SP_FS_STAGE_BARY_INSTRUCTIONS = 0x10,
};
/* VPC registers */
#define A4XX_VPC_DEBUG_RAM_SEL 0xe60
#define A4XX_VPC_DEBUG_RAM_READ 0xe61
#define A4XX_VPC_PERFCTR_VPC_SEL_0 0xe65
#define A4XX_VPC_PERFCTR_VPC_SEL_1 0xe66
#define A4XX_VPC_PERFCTR_VPC_SEL_2 0xe67
#define A4XX_VPC_PERFCTR_VPC_SEL_3 0xe68
/* UCHE register */
#define UCHE_TRAP_BASE_LO 0xe83
#define UCHE_TRAP_BASE_HI 0xe84
#define A4XX_UCHE_INVALIDATE0 0xe8a
#define A4XX_UCHE_INVALIDATE1 0xe8b
#define A4XX_UCHE_CACHE_WAYS_VFD 0xe8c
/* VSC registers */
#define A4XX_VSC_SIZE_ADDRESS 0xc01
#define A4XX_VSC_PIPE_DATA_ADDRESS_0 0xc10
#define A4XX_VSC_PIPE_DATA_ADDRESS_1 0xc11
#define A4XX_VSC_PIPE_DATA_ADDRESS_2 0xc12
#define A4XX_VSC_PIPE_DATA_ADDRESS_3 0xc13
#define A4XX_VSC_PIPE_DATA_ADDRESS_4 0xc14
#define A4XX_VSC_PIPE_DATA_ADDRESS_5 0xc15
#define A4XX_VSC_PIPE_DATA_ADDRESS_6 0xc16
#define A4XX_VSC_PIPE_DATA_ADDRESS_7 0xc17
#define A4XX_VSC_PIPE_DATA_LENGTH_0 0xc18
#define A4XX_VSC_PIPE_DATA_LENGTH_1 0xc19
#define A4XX_VSC_PIPE_DATA_LENGTH_2 0xc1a
#define A4XX_VSC_PIPE_DATA_LENGTH_3 0xc1b
#define A4XX_VSC_PIPE_DATA_LENGTH_4 0xc1c
#define A4XX_VSC_PIPE_DATA_LENGTH_5 0xc1d
#define A4XX_VSC_PIPE_DATA_LENGTH_6 0xc1e
#define A4XX_VSC_PIPE_DATA_LENGTH_7 0xc1f
#define A4XX_VSC_PERFCTR_VSC_SEL_0 0xc50
#define A4XX_VSC_PERFCTR_VSC_SEL_1 0xc51
/* VFD registers */
#define A4XX_VFD_FETCH_INSTR_1_31 0x2287
#define A4XX_VFD_PERFCTR_VFD_SEL_0 0xe43
#define A4XX_VFD_PERFCTR_VFD_SEL_1 0xe44
#define A4XX_VFD_PERFCTR_VFD_SEL_2 0xe45
#define A4XX_VFD_PERFCTR_VFD_SEL_3 0xe46
#define A4XX_VFD_PERFCTR_VFD_SEL_4 0xe47
#define A4XX_VFD_PERFCTR_VFD_SEL_5 0xe48
#define A4XX_VFD_PERFCTR_VFD_SEL_6 0xe49
#define A4XX_VFD_PERFCTR_VFD_SEL_7 0xe4a
#define A4XX_VFD_FETCH_INSTR_1_0 0x220b
#define A4XX_VFD_FETCH_INSTR_1_1 0x220f
#define A4XX_VFD_FETCH_INSTR_1_2 0x2213
#define A4XX_VFD_FETCH_INSTR_1_3 0x2217
#define A4XX_VFD_FETCH_INSTR_1_4 0x221b
#define A4XX_VFD_FETCH_INSTR_1_5 0x221f
#define A4XX_VFD_FETCH_INSTR_1_6 0x2223
#define A4XX_VFD_FETCH_INSTR_1_7 0x2227
#define A4XX_VFD_FETCH_INSTR_1_8 0x222b
#define A4XX_VFD_FETCH_INSTR_1_9 0x222f
#define A4XX_VFD_FETCH_INSTR_1_10 0x2233
#define A4XX_VFD_FETCH_INSTR_1_11 0x2237
#define A4XX_VFD_FETCH_INSTR_1_12 0x223b
#define A4XX_VFD_FETCH_INSTR_1_13 0x223f
#define A4XX_VFD_FETCH_INSTR_1_14 0x2243
#define A4XX_VFD_FETCH_INSTR_1_15 0x2247
#define A4XX_VFD_FETCH_INSTR_1_16 0x224b
#define A4XX_VFD_FETCH_INSTR_1_17 0x224f
#define A4XX_VFD_FETCH_INSTR_1_18 0x2253
#define A4XX_VFD_FETCH_INSTR_1_19 0x2257
#define A4XX_VFD_FETCH_INSTR_1_20 0x225b
#define A4XX_VFD_FETCH_INSTR_1_21 0x225f
#define A4XX_VFD_FETCH_INSTR_1_22 0x2263
#define A4XX_VFD_FETCH_INSTR_1_23 0x2267
#define A4XX_VFD_FETCH_INSTR_1_24 0x226b
#define A4XX_VFD_FETCH_INSTR_1_25 0x226f
#define A4XX_VFD_FETCH_INSTR_1_26 0x2273
#define A4XX_VFD_FETCH_INSTR_1_27 0x2277
#define A4XX_VFD_FETCH_INSTR_1_28 0x227b
#define A4XX_VFD_FETCH_INSTR_1_29 0x227f
#define A4XX_VFD_FETCH_INSTR_1_30 0x2283
#define A4XX_VFD_FETCH_INSTR_1_31 0x2287
enum a4xx_vfd_perfctr_vfd_sel {
VFD_VPC_BYPASS_TRANS = 0x2,
VFD_UPPER_SHADER_FIBERS = 0xb,
VFD_LOWER_SHADER_FIBERS = 0xc,
};
/* VBIF registers */
#define A4XX_VBIF_VERSION 0x3000
#define A4XX_VBIF_CLKON 0x3001
#define A4XX_VBIF_CLKON_FORCE_ON_TESTBUS_MASK 0x1
#define A4XX_VBIF_CLKON_FORCE_ON_TESTBUS_SHIFT 0x1
#define A4XX_VBIF_ABIT_SORT 0x301c
#define A4XX_VBIF_ABIT_SORT_CONF 0x301d
#define A4XX_VBIF_GATE_OFF_WRREQ_EN 0x302a
#define A4XX_VBIF_IN_RD_LIM_CONF0 0x302c
#define A4XX_VBIF_IN_RD_LIM_CONF1 0x302d
#define A4XX_VBIF_IN_WR_LIM_CONF0 0x3030
#define A4XX_VBIF_IN_WR_LIM_CONF1 0x3031
#define A4XX_VBIF_ROUND_ROBIN_QOS_ARB 0x3049
#define A4XX_VBIF_XIN_HALT_CTRL0 0x3080
#define A4XX_VBIF_XIN_HALT_CTRL0_MASK 0x1F
#define A405_VBIF_XIN_HALT_CTRL0_MASK 0x3
#define A4XX_VBIF_XIN_HALT_CTRL1 0x3081
#define A4XX_VBIF_TEST_BUS_OUT_CTRL 0x3084
#define A4XX_VBIF_TEST_BUS_OUT_CTRL_EN_MASK 0x1
#define A4XX_VBIF_TEST_BUS_OUT_CTRL_EN_SHIFT 0x0
#define A4XX_VBIF_TEST_BUS1_CTRL0 0x3085
#define A4XX_VBIF_TEST_BUS1_CTRL1 0x3086
#define A4XX_VBIF_TEST_BUS1_CTRL1_DATA_SEL_MASK 0xF
#define A4XX_VBIF_TEST_BUS1_CTRL1_DATA_SEL_SHIFT 0
#define A4XX_VBIF_TEST_BUS2_CTRL0 0x3087
#define A4XX_VBIF_TEST_BUS2_CTRL1 0x3088
#define A4XX_VBIF_TEST_BUS2_CTRL1_DATA_SEL_MASK 0xF
#define A4XX_VBIF_TEST_BUS2_CTRL1_DATA_SEL_SHIFT 0x0
#define A4XX_VBIF_TEST_BUS_OUT 0x308c
#define A4XX_VBIF_PERF_CNT_SEL0 0x30d0
#define A4XX_VBIF_PERF_CNT_SEL1 0x30d1
#define A4XX_VBIF_PERF_CNT_SEL2 0x30d2
#define A4XX_VBIF_PERF_CNT_SEL3 0x30d3
#define A4XX_VBIF_PERF_CNT_LOW0 0x30d8
#define A4XX_VBIF_PERF_CNT_LOW1 0x30d9
#define A4XX_VBIF_PERF_CNT_LOW2 0x30da
#define A4XX_VBIF_PERF_CNT_LOW3 0x30db
#define A4XX_VBIF_PERF_CNT_HIGH0 0x30e0
#define A4XX_VBIF_PERF_CNT_HIGH1 0x30e1
#define A4XX_VBIF_PERF_CNT_HIGH2 0x30e2
#define A4XX_VBIF_PERF_CNT_HIGH3 0x30e3
#define A4XX_VBIF_PERF_PWR_CNT_EN0 0x3100
#define A4XX_VBIF_PERF_PWR_CNT_EN1 0x3101
#define A4XX_VBIF_PERF_PWR_CNT_EN2 0x3102
#define A4XX_VBIF_PERF_PWR_CNT_EN3 0x3103
#define A4XX_VBIF_PERF_PWR_CNT_LOW0 0x3110
#define A4XX_VBIF_PERF_PWR_CNT_LOW1 0x3111
#define A4XX_VBIF_PERF_PWR_CNT_LOW2 0x3112
#define A4XX_VBIF_PERF_PWR_CNT_LOW3 0x3113
#define A4XX_VBIF_PERF_PWR_CNT_HIGH0 0x3118
#define A4XX_VBIF_PERF_PWR_CNT_HIGH1 0x3119
#define A4XX_VBIF_PERF_PWR_CNT_HIGH2 0x311a
#define A4XX_VBIF_PERF_PWR_CNT_HIGH3 0x311b
/* GRAS registers */
#define A4XX_GRAS_PERFCTR_TSE_SEL_0 0xc88
#define A4XX_GRAS_PERFCTR_TSE_SEL_1 0xc89
#define A4XX_GRAS_PERFCTR_TSE_SEL_2 0xc8a
#define A4XX_GRAS_PERFCTR_TSE_SEL_3 0xc8b
#define A4XX_GRAS_PERFCTR_RAS_SEL_0 0xc8c
#define A4XX_GRAS_PERFCTR_RAS_SEL_1 0xc8d
#define A4XX_GRAS_PERFCTR_RAS_SEL_2 0xc8e
#define A4XX_GRAS_PERFCTR_RAS_SEL_3 0xc8f
/* PC registers */
#define A4XX_PC_PERFCTR_PC_SEL_0 0xd10
#define A4XX_PC_PERFCTR_PC_SEL_1 0xd11
#define A4XX_PC_PERFCTR_PC_SEL_2 0xd12
#define A4XX_PC_PERFCTR_PC_SEL_3 0xd13
#define A4XX_PC_PERFCTR_PC_SEL_4 0xd14
#define A4XX_PC_PERFCTR_PC_SEL_5 0xd15
#define A4XX_PC_PERFCTR_PC_SEL_6 0xd16
#define A4XX_PC_PERFCTR_PC_SEL_7 0xd17
enum a4xx_pc_perfctr_pc_sel {
PC_INSTANCES = 0x1,
PC_VERTEX_HITS = 0x8,
PC_GENERATED_FIBERS = 0x12,
PC_GENERATED_WAVES = 0x13,
};
/* HLSQ registers */
#define A4XX_HLSQ_TIMEOUT_THRESHOLD 0xe00
#define A4XX_HLSQ_MODE_CONTROL 0xe05
#define A4XX_HLSQ_PERFCTR_HLSQ_SEL_0 0xe06
#define A4XX_HLSQ_PERFCTR_HLSQ_SEL_1 0xe07
#define A4XX_HLSQ_PERFCTR_HLSQ_SEL_2 0xe08
#define A4XX_HLSQ_PERFCTR_HLSQ_SEL_3 0xe09
#define A4XX_HLSQ_PERFCTR_HLSQ_SEL_4 0xe0a
#define A4XX_HLSQ_PERFCTR_HLSQ_SEL_5 0xe0b
#define A4XX_HLSQ_PERFCTR_HLSQ_SEL_6 0xe0c
#define A4XX_HLSQ_PERFCTR_HLSQ_SEL_7 0xe0d
#define A4XX_HLSQ_SPTP_RDSEL 0xe30
#define A4xx_HLSQ_CONTROL_0 0x23c0
#define A4XX_HLSQ_CS_CONTROL 0x23ca
#define A4XX_HLSQ_CL_NDRANGE_0 0x23cd
#define A4XX_HLSQ_CL_CONTROL_0 0x23d4
#define A4XX_HLSQ_CL_KERNEL_CONST 0x23d6
#define A4XX_HLSQ_CL_KERNEL_GROUP_X 0x23d7
#define A4XX_HLSQ_CL_WG_OFFSET 0x23da
#define A4XX_HLSQ_UPDATE_CONTROL 0x23db
enum a4xx_hlsq_perfctr_hlsq_sel {
HLSQ_SP_VS_STAGE_CONSTANT = 0x0,
HLSQ_SP_VS_STAGE_INSTRUCTIONS = 0x1,
HLSQ_SP_FS_STAGE_CONSTANT = 0x2,
HLSQ_SP_FS_STAGE_INSTRUCTIONS = 0x3,
HLSQ_FS_STAGE_16_WAVES = 0x8,
HLSQ_FS_STAGE_32_WAVES = 0x9,
HLSQ_FS_STAGE_64_WAVES = 0xa,
HLSQ_VS_STAGE_16_WAVES = 0xb,
HLSQ_VS_STAGE_32_WAVES = 0xc,
};
/* CCU registers */
#define A4XX_RB_PERFCTR_CCU_SEL_0 0xccf
#define A4XX_RB_PERFCTR_CCU_SEL_1 0xcd0
#define A4XX_RB_PERFCTR_CCU_SEL_2 0xcd1
#define A4XX_RB_PERFCTR_CCU_SEL_3 0xcd2
enum a4xx_cu_perfctr_ccu_sel {
CCU_VBIF_STALL = 0x1,
CCU_VBIF_LATENCY_CYCLES = 0x4,
CCU_VBIF_LATENCY_SAMPLES = 0x5,
CCU_Z_READ = 0x13,
CCU_Z_WRITE = 0x14,
CCU_C_READ = 0x15,
CCU_C_WRITE = 0x16,
};
/* UCHE registers */
#define A4XX_UCHE_PERFCTR_UCHE_SEL_0 0xe8e
#define A4XX_UCHE_PERFCTR_UCHE_SEL_1 0xe8f
#define A4XX_UCHE_PERFCTR_UCHE_SEL_2 0xe90
#define A4XX_UCHE_PERFCTR_UCHE_SEL_3 0xe91
#define A4XX_UCHE_PERFCTR_UCHE_SEL_4 0xe92
#define A4XX_UCHE_PERFCTR_UCHE_SEL_5 0xe93
#define A4XX_UCHE_PERFCTR_UCHE_SEL_6 0xe94
#define A4XX_UCHE_PERFCTR_UCHE_SEL_7 0xe95
/* TPL1 registers */
enum a4xx_uche_perfctr_uche_sel {
UCHE_READ_REQUESTS_MARB = 0x8,
UCHE_READ_REQUESTS_SP = 0x9,
UCHE_WRITE_REQUESTS_MARB = 0xa,
UCHE_WRITE_REQUESTS_SP = 0xb,
UCHE_WRITE_REQUESTS_VPC = 0x14,
};
/* TPL1 registers */
#define A4XX_TPL1_TP_MODE_CONTROL 0xf03
#define A4XX_TPL1_PERFCTR_TP_SEL_0 0xf04
#define A4XX_TPL1_PERFCTR_TP_SEL_1 0xf05
#define A4XX_TPL1_PERFCTR_TP_SEL_2 0xf06
#define A4XX_TPL1_PERFCTR_TP_SEL_3 0xf07
#define A4XX_TPL1_PERFCTR_TP_SEL_4 0xf08
#define A4XX_TPL1_PERFCTR_TP_SEL_5 0xf09
#define A4XX_TPL1_PERFCTR_TP_SEL_6 0xf0a
#define A4XX_TPL1_PERFCTR_TP_SEL_7 0xf0b
#define A4XX_TPL1_TP_TEX_TSIZE_1 0x23a0
enum a4xx_tpl1_perfctr_tp_sel {
TP_OUTPUT_TEXELS_POINT = 0x2,
TP_OUTPUT_TEXELS_BILINEAR = 0x3,
TP_OUTPUT_TEXELS_MIP = 0x4,
TP_OUTPUT_TEXELS_ANISO = 0x5,
TP_OUTPUT_TEXELS_OPS16 = 0x6,
TP_OUTPUT_TEXELS_OPS32 = 0x7,
TP_ZERO_LOD = 0xe,
TP_LATENCY = 0x12,
TP_LATENCY_TRANS = 0x13,
};
/* Enum for debug bus */
enum a4xx_rbbm_debbus_id {
A4XX_RBBM_DEBBUS_CP_ID = 0x1,
A4XX_RBBM_DEBBUS_RBBM_ID = 0x2,
A4XX_RBBM_DEBBUS_VBIF_ID = 0x3,
A4XX_RBBM_DEBBUS_HLSQ_ID = 0x4,
A4XX_RBBM_DEBBUS_UCHE_ID = 0x5,
A4XX_RBBM_DEBBUS_DPM_ID = 0x6,
A4XX_RBBM_DEBBUS_TESS_ID = 0x7,
A4XX_RBBM_DEBBUS_PC_ID = 0x8,
A4XX_RBBM_DEBBUS_VFD_ID = 0x9,
A4XX_RBBM_DEBBUS_VPC_ID = 0xa,
A4XX_RBBM_DEBBUS_TSE_ID = 0xb,
A4XX_RBBM_DEBBUS_RAS_ID = 0xc,
A4XX_RBBM_DEBBUS_VSC_ID = 0xd,
A4XX_RBBM_DEBBUS_COM_ID = 0xe,
A4XX_RBBM_DEBBUS_DCOM_ID = 0xf,
A4XX_RBBM_DEBBUS_SP_0_ID = 0x10,
A4XX_RBBM_DEBBUS_SP_1_ID = 0x11,
A4XX_RBBM_DEBBUS_SP_2_ID = 0x12,
A4XX_RBBM_DEBBUS_SP_3_ID = 0x13,
A4XX_RBBM_DEBBUS_TPL1_0_ID = 0x18,
A4XX_RBBM_DEBBUS_TPL1_1_ID = 0x19,
A4XX_RBBM_DEBBUS_TPL1_2_ID = 0x1a,
A4XX_RBBM_DEBBUS_TPL1_3_ID = 0x1b,
A4XX_RBBM_DEBBUS_RB_0_ID = 0x20,
A4XX_RBBM_DEBBUS_RB_1_ID = 0x21,
A4XX_RBBM_DEBBUS_RB_2_ID = 0x22,
A4XX_RBBM_DEBBUS_RB_3_ID = 0x23,
A4XX_RBBM_DEBBUS_MARB_0_ID = 0x28,
A4XX_RBBM_DEBBUS_MARB_1_ID = 0x29,
A4XX_RBBM_DEBBUS_MARB_2_ID = 0x2a,
A4XX_RBBM_DEBBUS_MARB_3_ID = 0x2b,
A4XX_RBBM_DEBBUS_CCU_0_ID = 0x30,
A4XX_RBBM_DEBBUS_CCU_1_ID = 0x31,
A4XX_RBBM_DEBBUS_CCU_2_ID = 0x32,
A4XX_RBBM_DEBBUS_CCU_3_ID = 0x33
};
#define A4XX_NUM_AXI_ARB_BLOCKS 2
#define A4XX_NUM_XIN_BLOCKS 5
#endif /* _A4XX_REG_H */
|