blob: fc17470d6aac41e86c2097aa232536dc9ccca210 [file] [log] [blame]
Shrenuj Bansala419c792016-10-20 14:05:11 -07001/* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved.
2 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 *
12 */
13
14#ifndef _A300_REG_H
15#define _A300_REG_H
16
17/* Interrupt bit positions within RBBM_INT_0 */
18
19#define A3XX_INT_RBBM_GPU_IDLE 0
20#define A3XX_INT_RBBM_AHB_ERROR 1
21#define A3XX_INT_RBBM_REG_TIMEOUT 2
22#define A3XX_INT_RBBM_ME_MS_TIMEOUT 3
23#define A3XX_INT_RBBM_PFP_MS_TIMEOUT 4
24#define A3XX_INT_RBBM_ATB_BUS_OVERFLOW 5
25#define A3XX_INT_VFD_ERROR 6
26#define A3XX_INT_CP_SW_INT 7
27#define A3XX_INT_CP_T0_PACKET_IN_IB 8
28#define A3XX_INT_CP_OPCODE_ERROR 9
29#define A3XX_INT_CP_RESERVED_BIT_ERROR 10
30#define A3XX_INT_CP_HW_FAULT 11
31#define A3XX_INT_CP_DMA 12
32#define A3XX_INT_CP_IB2_INT 13
33#define A3XX_INT_CP_IB1_INT 14
34#define A3XX_INT_CP_RB_INT 15
35#define A3XX_INT_CP_REG_PROTECT_FAULT 16
36#define A3XX_INT_CP_RB_DONE_TS 17
37#define A3XX_INT_CP_VS_DONE_TS 18
38#define A3XX_INT_CP_PS_DONE_TS 19
39#define A3XX_INT_CACHE_FLUSH_TS 20
40#define A3XX_INT_CP_AHB_ERROR_HALT 21
41#define A3XX_INT_MISC_HANG_DETECT 24
42#define A3XX_INT_UCHE_OOB_ACCESS 25
43
44/* CP_EVENT_WRITE events */
45#define CACHE_FLUSH_TS 4
46
47/* Register definitions */
48
49#define A3XX_RBBM_CLOCK_CTL 0x010
50#define A3XX_RBBM_SP_HYST_CNT 0x012
51#define A3XX_RBBM_SW_RESET_CMD 0x018
52#define A3XX_RBBM_AHB_CTL0 0x020
53#define A3XX_RBBM_AHB_CTL1 0x021
54#define A3XX_RBBM_AHB_CMD 0x022
55#define A3XX_RBBM_AHB_ERROR_STATUS 0x027
56#define A3XX_RBBM_GPR0_CTL 0x02E
57/* This the same register as on A2XX, just in a different place */
58#define A3XX_RBBM_STATUS 0x030
59#define A3XX_RBBM_WAIT_IDLE_CLOCKS_CTL 0x33
60#define A3XX_RBBM_INTERFACE_HANG_INT_CTL 0x50
61#define A3XX_RBBM_INT_CLEAR_CMD 0x061
62#define A3XX_RBBM_INT_0_MASK 0x063
63#define A3XX_RBBM_INT_0_STATUS 0x064
64#define A3XX_RBBM_PERFCTR_CTL 0x80
65#define A3XX_RBBM_PERFCTR_LOAD_CMD0 0x81
66#define A3XX_RBBM_PERFCTR_LOAD_CMD1 0x82
67#define A3XX_RBBM_PERFCTR_LOAD_VALUE_LO 0x84
68#define A3XX_RBBM_PERFCTR_LOAD_VALUE_HI 0x85
69#define A3XX_RBBM_PERFCOUNTER0_SELECT 0x86
70#define A3XX_RBBM_PERFCOUNTER1_SELECT 0x87
71#define A3XX_RBBM_GPU_BUSY_MASKED 0x88
72#define A3XX_RBBM_PERFCTR_CP_0_LO 0x90
73#define A3XX_RBBM_PERFCTR_CP_0_HI 0x91
74#define A3XX_RBBM_PERFCTR_RBBM_0_LO 0x92
75#define A3XX_RBBM_PERFCTR_RBBM_0_HI 0x93
76#define A3XX_RBBM_PERFCTR_RBBM_1_LO 0x94
77#define A3XX_RBBM_PERFCTR_RBBM_1_HI 0x95
78#define A3XX_RBBM_PERFCTR_PC_0_LO 0x96
79#define A3XX_RBBM_PERFCTR_PC_0_HI 0x97
80#define A3XX_RBBM_PERFCTR_PC_1_LO 0x98
81#define A3XX_RBBM_PERFCTR_PC_1_HI 0x99
82#define A3XX_RBBM_PERFCTR_PC_2_LO 0x9A
83#define A3XX_RBBM_PERFCTR_PC_2_HI 0x9B
84#define A3XX_RBBM_PERFCTR_PC_3_LO 0x9C
85#define A3XX_RBBM_PERFCTR_PC_3_HI 0x9D
86#define A3XX_RBBM_PERFCTR_VFD_0_LO 0x9E
87#define A3XX_RBBM_PERFCTR_VFD_0_HI 0x9F
88#define A3XX_RBBM_PERFCTR_VFD_1_LO 0xA0
89#define A3XX_RBBM_PERFCTR_VFD_1_HI 0xA1
90#define A3XX_RBBM_PERFCTR_HLSQ_0_LO 0xA2
91#define A3XX_RBBM_PERFCTR_HLSQ_0_HI 0xA3
92#define A3XX_RBBM_PERFCTR_HLSQ_1_LO 0xA4
93#define A3XX_RBBM_PERFCTR_HLSQ_1_HI 0xA5
94#define A3XX_RBBM_PERFCTR_HLSQ_2_LO 0xA6
95#define A3XX_RBBM_PERFCTR_HLSQ_2_HI 0xA7
96#define A3XX_RBBM_PERFCTR_HLSQ_3_LO 0xA8
97#define A3XX_RBBM_PERFCTR_HLSQ_3_HI 0xA9
98#define A3XX_RBBM_PERFCTR_HLSQ_4_LO 0xAA
99#define A3XX_RBBM_PERFCTR_HLSQ_4_HI 0xAB
100#define A3XX_RBBM_PERFCTR_HLSQ_5_LO 0xAC
101#define A3XX_RBBM_PERFCTR_HLSQ_5_HI 0xAD
102#define A3XX_RBBM_PERFCTR_VPC_0_LO 0xAE
103#define A3XX_RBBM_PERFCTR_VPC_0_HI 0xAF
104#define A3XX_RBBM_PERFCTR_VPC_1_LO 0xB0
105#define A3XX_RBBM_PERFCTR_VPC_1_HI 0xB1
106#define A3XX_RBBM_PERFCTR_TSE_0_LO 0xB2
107#define A3XX_RBBM_PERFCTR_TSE_0_HI 0xB3
108#define A3XX_RBBM_PERFCTR_TSE_1_LO 0xB4
109#define A3XX_RBBM_PERFCTR_TSE_1_HI 0xB5
110#define A3XX_RBBM_PERFCTR_RAS_0_LO 0xB6
111#define A3XX_RBBM_PERFCTR_RAS_0_HI 0xB7
112#define A3XX_RBBM_PERFCTR_RAS_1_LO 0xB8
113#define A3XX_RBBM_PERFCTR_RAS_1_HI 0xB9
114#define A3XX_RBBM_PERFCTR_UCHE_0_LO 0xBA
115#define A3XX_RBBM_PERFCTR_UCHE_0_HI 0xBB
116#define A3XX_RBBM_PERFCTR_UCHE_1_LO 0xBC
117#define A3XX_RBBM_PERFCTR_UCHE_1_HI 0xBD
118#define A3XX_RBBM_PERFCTR_UCHE_2_LO 0xBE
119#define A3XX_RBBM_PERFCTR_UCHE_2_HI 0xBF
120#define A3XX_RBBM_PERFCTR_UCHE_3_LO 0xC0
121#define A3XX_RBBM_PERFCTR_UCHE_3_HI 0xC1
122#define A3XX_RBBM_PERFCTR_UCHE_4_LO 0xC2
123#define A3XX_RBBM_PERFCTR_UCHE_4_HI 0xC3
124#define A3XX_RBBM_PERFCTR_UCHE_5_LO 0xC4
125#define A3XX_RBBM_PERFCTR_UCHE_5_HI 0xC5
126#define A3XX_RBBM_PERFCTR_TP_0_LO 0xC6
127#define A3XX_RBBM_PERFCTR_TP_0_HI 0xC7
128#define A3XX_RBBM_PERFCTR_TP_1_LO 0xC8
129#define A3XX_RBBM_PERFCTR_TP_1_HI 0xC9
130#define A3XX_RBBM_PERFCTR_TP_2_LO 0xCA
131#define A3XX_RBBM_PERFCTR_TP_2_HI 0xCB
132#define A3XX_RBBM_PERFCTR_TP_3_LO 0xCC
133#define A3XX_RBBM_PERFCTR_TP_3_HI 0xCD
134#define A3XX_RBBM_PERFCTR_TP_4_LO 0xCE
135#define A3XX_RBBM_PERFCTR_TP_4_HI 0xCF
136#define A3XX_RBBM_PERFCTR_TP_5_LO 0xD0
137#define A3XX_RBBM_PERFCTR_TP_5_HI 0xD1
138#define A3XX_RBBM_PERFCTR_SP_0_LO 0xD2
139#define A3XX_RBBM_PERFCTR_SP_0_HI 0xD3
140#define A3XX_RBBM_PERFCTR_SP_1_LO 0xD4
141#define A3XX_RBBM_PERFCTR_SP_1_HI 0xD5
142#define A3XX_RBBM_PERFCTR_SP_2_LO 0xD6
143#define A3XX_RBBM_PERFCTR_SP_2_HI 0xD7
144#define A3XX_RBBM_PERFCTR_SP_3_LO 0xD8
145#define A3XX_RBBM_PERFCTR_SP_3_HI 0xD9
146#define A3XX_RBBM_PERFCTR_SP_4_LO 0xDA
147#define A3XX_RBBM_PERFCTR_SP_4_HI 0xDB
148#define A3XX_RBBM_PERFCTR_SP_5_LO 0xDC
149#define A3XX_RBBM_PERFCTR_SP_5_HI 0xDD
150#define A3XX_RBBM_PERFCTR_SP_6_LO 0xDE
151#define A3XX_RBBM_PERFCTR_SP_6_HI 0xDF
152#define A3XX_RBBM_PERFCTR_SP_7_LO 0xE0
153#define A3XX_RBBM_PERFCTR_SP_7_HI 0xE1
154#define A3XX_RBBM_PERFCTR_RB_0_LO 0xE2
155#define A3XX_RBBM_PERFCTR_RB_0_HI 0xE3
156#define A3XX_RBBM_PERFCTR_RB_1_LO 0xE4
157#define A3XX_RBBM_PERFCTR_RB_1_HI 0xE5
158
159#define A3XX_RBBM_RBBM_CTL 0x100
160#define A3XX_RBBM_PERFCTR_PWR_0_LO 0x0EA
161#define A3XX_RBBM_PERFCTR_PWR_0_HI 0x0EB
162#define A3XX_RBBM_PERFCTR_PWR_1_LO 0x0EC
163#define A3XX_RBBM_PERFCTR_PWR_1_HI 0x0ED
164#define A3XX_RBBM_DEBUG_BUS_CTL 0x111
165#define A3XX_RBBM_DEBUG_BUS_DATA_STATUS 0x112
166#define A3XX_RBBM_DEBUG_BUS_STB_CTL0 0x11B
167#define A3XX_RBBM_DEBUG_BUS_STB_CTL1 0x11C
168#define A3XX_RBBM_INT_TRACE_BUS_CTL 0x11D
169#define A3XX_RBBM_EXT_TRACE_BUS_CTL 0x11E
170#define A3XX_RBBM_EXT_TRACE_STOP_CNT 0x11F
171#define A3XX_RBBM_EXT_TRACE_START_CNT 0x120
172#define A3XX_RBBM_EXT_TRACE_PERIOD_CNT 0x121
173#define A3XX_RBBM_EXT_TRACE_CMD 0x122
174#define A3XX_CP_RB_BASE 0x01C0
175#define A3XX_CP_RB_CNTL 0x01C1
176#define A3XX_CP_RB_RPTR 0x01C4
177#define A3XX_CP_RB_WPTR 0x01C5
178/* Following two are same as on A2XX, just in a different place */
179#define A3XX_CP_PFP_UCODE_ADDR 0x1C9
180#define A3XX_CP_PFP_UCODE_DATA 0x1CA
181#define A3XX_CP_ROQ_ADDR 0x1CC
182#define A3XX_CP_ROQ_DATA 0x1CD
183#define A3XX_CP_MERCIU_ADDR 0x1D1
184#define A3XX_CP_MERCIU_DATA 0x1D2
185#define A3XX_CP_MERCIU_DATA2 0x1D3
186#define A3XX_CP_QUEUE_THRESHOLDS 0x01D5
187#define A3XX_CP_MEQ_ADDR 0x1DA
188#define A3XX_CP_MEQ_DATA 0x1DB
189#define A3XX_CP_STATE_DEBUG_INDEX 0x01EC
190#define A3XX_CP_STATE_DEBUG_DATA 0x01ED
191#define A3XX_CP_CNTL 0x01F4
192#define A3XX_CP_WFI_PEND_CTR 0x01F5
193#define A3XX_CP_ME_CNTL 0x01F6
194#define A3XX_CP_ME_STATUS 0x01F7
195#define A3XX_CP_ME_RAM_WADDR 0x01F8
196#define A3XX_CP_ME_RAM_RADDR 0x01F9
197#define A3XX_CP_ME_RAM_DATA 0x01FA
198#define A3XX_CP_DEBUG 0x01FC
199
200#define A3XX_RBBM_PM_OVERRIDE2 0x039D
201
202#define A3XX_CP_PERFCOUNTER_SELECT 0x445
203#define A3XX_CP_IB1_BASE 0x0458
204#define A3XX_CP_IB1_BUFSZ 0x0459
205#define A3XX_CP_IB2_BASE 0x045A
206#define A3XX_CP_IB2_BUFSZ 0x045B
207
208#define A3XX_CP_HW_FAULT 0x45C
209#define A3XX_CP_PROTECT_CTRL 0x45E
210#define A3XX_CP_PROTECT_STATUS 0x45F
211#define A3XX_CP_PROTECT_REG_0 0x460
212#define A3XX_CP_STAT 0x047F
213#define A3XX_CP_SCRATCH_REG0 0x578
214#define A3XX_CP_SCRATCH_REG6 0x57E
215#define A3XX_CP_SCRATCH_REG7 0x57F
216#define A3XX_VSC_SIZE_ADDRESS 0xC02
217#define A3XX_VSC_PIPE_DATA_ADDRESS_0 0xC07
218#define A3XX_VSC_PIPE_DATA_LENGTH_0 0xC08
219#define A3XX_VSC_PIPE_DATA_ADDRESS_1 0xC0A
220#define A3XX_VSC_PIPE_DATA_LENGTH_1 0xC0B
221#define A3XX_VSC_PIPE_DATA_ADDRESS_2 0xC0D
222#define A3XX_VSC_PIPE_DATA_LENGTH_2 0xC0E
223#define A3XX_VSC_PIPE_DATA_ADDRESS_3 0xC10
224#define A3XX_VSC_PIPE_DATA_LENGTH_3 0xC11
225#define A3XX_VSC_PIPE_DATA_ADDRESS_4 0xC13
226#define A3XX_VSC_PIPE_DATA_LENGTH_4 0xC14
227#define A3XX_VSC_PIPE_DATA_ADDRESS_5 0xC16
228#define A3XX_VSC_PIPE_DATA_LENGTH_5 0xC17
229#define A3XX_VSC_PIPE_DATA_ADDRESS_6 0xC19
230#define A3XX_VSC_PIPE_DATA_LENGTH_6 0xC1A
231#define A3XX_VSC_PIPE_DATA_ADDRESS_7 0xC1C
232#define A3XX_VSC_PIPE_DATA_LENGTH_7 0xC1D
233#define A3XX_PC_PERFCOUNTER0_SELECT 0xC48
234#define A3XX_PC_PERFCOUNTER1_SELECT 0xC49
235#define A3XX_PC_PERFCOUNTER2_SELECT 0xC4A
236#define A3XX_PC_PERFCOUNTER3_SELECT 0xC4B
237#define A3XX_GRAS_TSE_DEBUG_ECO 0xC81
238#define A3XX_GRAS_PERFCOUNTER0_SELECT 0xC88
239#define A3XX_GRAS_PERFCOUNTER1_SELECT 0xC89
240#define A3XX_GRAS_PERFCOUNTER2_SELECT 0xC8A
241#define A3XX_GRAS_PERFCOUNTER3_SELECT 0xC8B
242#define A3XX_GRAS_CL_USER_PLANE_X0 0xCA0
243#define A3XX_GRAS_CL_USER_PLANE_Y0 0xCA1
244#define A3XX_GRAS_CL_USER_PLANE_Z0 0xCA2
245#define A3XX_GRAS_CL_USER_PLANE_W0 0xCA3
246#define A3XX_GRAS_CL_USER_PLANE_X1 0xCA4
247#define A3XX_GRAS_CL_USER_PLANE_Y1 0xCA5
248#define A3XX_GRAS_CL_USER_PLANE_Z1 0xCA6
249#define A3XX_GRAS_CL_USER_PLANE_W1 0xCA7
250#define A3XX_GRAS_CL_USER_PLANE_X2 0xCA8
251#define A3XX_GRAS_CL_USER_PLANE_Y2 0xCA9
252#define A3XX_GRAS_CL_USER_PLANE_Z2 0xCAA
253#define A3XX_GRAS_CL_USER_PLANE_W2 0xCAB
254#define A3XX_GRAS_CL_USER_PLANE_X3 0xCAC
255#define A3XX_GRAS_CL_USER_PLANE_Y3 0xCAD
256#define A3XX_GRAS_CL_USER_PLANE_Z3 0xCAE
257#define A3XX_GRAS_CL_USER_PLANE_W3 0xCAF
258#define A3XX_GRAS_CL_USER_PLANE_X4 0xCB0
259#define A3XX_GRAS_CL_USER_PLANE_Y4 0xCB1
260#define A3XX_GRAS_CL_USER_PLANE_Z4 0xCB2
261#define A3XX_GRAS_CL_USER_PLANE_W4 0xCB3
262#define A3XX_GRAS_CL_USER_PLANE_X5 0xCB4
263#define A3XX_GRAS_CL_USER_PLANE_Y5 0xCB5
264#define A3XX_GRAS_CL_USER_PLANE_Z5 0xCB6
265#define A3XX_GRAS_CL_USER_PLANE_W5 0xCB7
266#define A3XX_RB_GMEM_BASE_ADDR 0xCC0
267#define A3XX_RB_DEBUG_ECO_CONTROLS_ADDR 0xCC1
268#define A3XX_RB_PERFCOUNTER0_SELECT 0xCC6
269#define A3XX_RB_PERFCOUNTER1_SELECT 0xCC7
270#define A3XX_RB_FRAME_BUFFER_DIMENSION 0xCE0
271#define A3XX_SQ_GPR_MANAGEMENT 0x0D00
272#define A3XX_SQ_INST_STORE_MANAGEMENT 0x0D02
273#define A3XX_HLSQ_PERFCOUNTER0_SELECT 0xE00
274#define A3XX_HLSQ_PERFCOUNTER1_SELECT 0xE01
275#define A3XX_HLSQ_PERFCOUNTER2_SELECT 0xE02
276#define A3XX_HLSQ_PERFCOUNTER3_SELECT 0xE03
277#define A3XX_HLSQ_PERFCOUNTER4_SELECT 0xE04
278#define A3XX_HLSQ_PERFCOUNTER5_SELECT 0xE05
279#define A3XX_TP0_CHICKEN 0x0E1E
280#define A3XX_VFD_PERFCOUNTER0_SELECT 0xE44
281#define A3XX_VFD_PERFCOUNTER1_SELECT 0xE45
282#define A3XX_VPC_VPC_DEBUG_RAM_SEL 0xE61
283#define A3XX_VPC_VPC_DEBUG_RAM_READ 0xE62
284#define A3XX_VPC_PERFCOUNTER0_SELECT 0xE64
285#define A3XX_VPC_PERFCOUNTER1_SELECT 0xE65
286#define A3XX_UCHE_CACHE_MODE_CONTROL_REG 0xE82
287#define A3XX_UCHE_PERFCOUNTER0_SELECT 0xE84
288#define A3XX_UCHE_PERFCOUNTER1_SELECT 0xE85
289#define A3XX_UCHE_PERFCOUNTER2_SELECT 0xE86
290#define A3XX_UCHE_PERFCOUNTER3_SELECT 0xE87
291#define A3XX_UCHE_PERFCOUNTER4_SELECT 0xE88
292#define A3XX_UCHE_PERFCOUNTER5_SELECT 0xE89
293#define A3XX_UCHE_CACHE_INVALIDATE0_REG 0xEA0
294#define A3XX_UCHE_CACHE_INVALIDATE1_REG 0xEA1
295#define A3XX_UCHE_CACHE_WAYS_VFD 0xEA6
296#define A3XX_SP_PERFCOUNTER0_SELECT 0xEC4
297#define A3XX_SP_PERFCOUNTER1_SELECT 0xEC5
298#define A3XX_SP_PERFCOUNTER2_SELECT 0xEC6
299#define A3XX_SP_PERFCOUNTER3_SELECT 0xEC7
300#define A3XX_SP_PERFCOUNTER4_SELECT 0xEC8
301#define A3XX_SP_PERFCOUNTER5_SELECT 0xEC9
302#define A3XX_SP_PERFCOUNTER6_SELECT 0xECA
303#define A3XX_SP_PERFCOUNTER7_SELECT 0xECB
304#define A3XX_TP_PERFCOUNTER0_SELECT 0xF04
305#define A3XX_TP_PERFCOUNTER1_SELECT 0xF05
306#define A3XX_TP_PERFCOUNTER2_SELECT 0xF06
307#define A3XX_TP_PERFCOUNTER3_SELECT 0xF07
308#define A3XX_TP_PERFCOUNTER4_SELECT 0xF08
309#define A3XX_TP_PERFCOUNTER5_SELECT 0xF09
310#define A3XX_GRAS_CL_CLIP_CNTL 0x2040
311#define A3XX_GRAS_CL_GB_CLIP_ADJ 0x2044
312#define A3XX_GRAS_CL_VPORT_XOFFSET 0x2048
313#define A3XX_GRAS_CL_VPORT_XSCALE 0x2049
314#define A3XX_GRAS_CL_VPORT_YOFFSET 0x204A
315#define A3XX_GRAS_CL_VPORT_YSCALE 0x204B
316#define A3XX_GRAS_CL_VPORT_ZOFFSET 0x204C
317#define A3XX_GRAS_CL_VPORT_ZSCALE 0x204D
318#define A3XX_GRAS_SU_POINT_MINMAX 0x2068
319#define A3XX_GRAS_SU_POINT_SIZE 0x2069
320#define A3XX_GRAS_SU_POLY_OFFSET_SCALE 0x206C
321#define A3XX_GRAS_SU_POLY_OFFSET_OFFSET 0x206D
322#define A3XX_GRAS_SU_MODE_CONTROL 0x2070
323#define A3XX_GRAS_SC_CONTROL 0x2072
324#define A3XX_GRAS_SC_SCREEN_SCISSOR_TL 0x2074
325#define A3XX_GRAS_SC_SCREEN_SCISSOR_BR 0x2075
326#define A3XX_GRAS_SC_WINDOW_SCISSOR_TL 0x2079
327#define A3XX_GRAS_SC_WINDOW_SCISSOR_BR 0x207A
328#define A3XX_RB_MODE_CONTROL 0x20C0
329#define A3XX_RB_RENDER_CONTROL 0x20C1
330#define A3XX_RB_MSAA_CONTROL 0x20C2
331#define A3XX_RB_ALPHA_REFERENCE 0x20C3
332#define A3XX_RB_MRT_CONTROL0 0x20C4
333#define A3XX_RB_MRT_BUF_INFO0 0x20C5
334#define A3XX_RB_MRT_BUF_BASE0 0x20C6
335#define A3XX_RB_MRT_BLEND_CONTROL0 0x20C7
336#define A3XX_RB_MRT_CONTROL1 0x20C8
337#define A3XX_RB_MRT_BUF_INFO1 0x20C9
338#define A3XX_RB_MRT_BUF_BASE1 0x20CA
339#define A3XX_RB_MRT_BLEND_CONTROL1 0x20CB
340#define A3XX_RB_MRT_CONTROL2 0x20CC
341#define A3XX_RB_MRT_BUF_INFO2 0x20CD
342#define A3XX_RB_MRT_BUF_BASE2 0x20CE
343#define A3XX_RB_MRT_BLEND_CONTROL2 0x20CF
344#define A3XX_RB_MRT_CONTROL3 0x20D0
345#define A3XX_RB_MRT_BUF_INFO3 0x20D1
346#define A3XX_RB_MRT_BUF_BASE3 0x20D2
347#define A3XX_RB_MRT_BLEND_CONTROL3 0x20D3
348#define A3XX_RB_BLEND_RED 0x20E4
349#define A3XX_RB_BLEND_GREEN 0x20E5
350#define A3XX_RB_BLEND_BLUE 0x20E6
351#define A3XX_RB_BLEND_ALPHA 0x20E7
352#define A3XX_RB_CLEAR_COLOR_DW0 0x20E8
353#define A3XX_RB_CLEAR_COLOR_DW1 0x20E9
354#define A3XX_RB_CLEAR_COLOR_DW2 0x20EA
355#define A3XX_RB_CLEAR_COLOR_DW3 0x20EB
356#define A3XX_RB_COPY_CONTROL 0x20EC
357#define A3XX_RB_COPY_DEST_BASE 0x20ED
358#define A3XX_RB_COPY_DEST_PITCH 0x20EE
359#define A3XX_RB_COPY_DEST_INFO 0x20EF
360#define A3XX_RB_DEPTH_CONTROL 0x2100
361#define A3XX_RB_DEPTH_CLEAR 0x2101
362#define A3XX_RB_DEPTH_BUF_INFO 0x2102
363#define A3XX_RB_DEPTH_BUF_PITCH 0x2103
364#define A3XX_RB_STENCIL_CONTROL 0x2104
365#define A3XX_RB_STENCIL_CLEAR 0x2105
366#define A3XX_RB_STENCIL_BUF_INFO 0x2106
367#define A3XX_RB_STENCIL_BUF_PITCH 0x2107
368#define A3XX_RB_STENCIL_REF_MASK 0x2108
369#define A3XX_RB_STENCIL_REF_MASK_BF 0x2109
370#define A3XX_RB_LRZ_VSC_CONTROL 0x210C
371#define A3XX_RB_WINDOW_OFFSET 0x210E
372#define A3XX_RB_SAMPLE_COUNT_CONTROL 0x2110
373#define A3XX_RB_SAMPLE_COUNT_ADDR 0x2111
374#define A3XX_RB_Z_CLAMP_MIN 0x2114
375#define A3XX_RB_Z_CLAMP_MAX 0x2115
376#define A3XX_HLSQ_CONTROL_0_REG 0x2200
377#define A3XX_HLSQ_CONTROL_1_REG 0x2201
378#define A3XX_HLSQ_CONTROL_2_REG 0x2202
379#define A3XX_HLSQ_CONTROL_3_REG 0x2203
380#define A3XX_HLSQ_VS_CONTROL_REG 0x2204
381#define A3XX_HLSQ_FS_CONTROL_REG 0x2205
382#define A3XX_HLSQ_CONST_VSPRESV_RANGE_REG 0x2206
383#define A3XX_HLSQ_CONST_FSPRESV_RANGE_REG 0x2207
384#define A3XX_HLSQ_CL_NDRANGE_0_REG 0x220A
385#define A3XX_HLSQ_CL_NDRANGE_1_REG 0x220B
386#define A3XX_HLSQ_CL_NDRANGE_2_REG 0x220C
387#define A3XX_HLSQ_CL_NDRANGE_3_REG 0x220D
388#define A3XX_HLSQ_CL_NDRANGE_4_REG 0x220E
389#define A3XX_HLSQ_CL_NDRANGE_5_REG 0x220F
390#define A3XX_HLSQ_CL_NDRANGE_6_REG 0x2210
391#define A3XX_HLSQ_CL_CONTROL_0_REG 0x2211
392#define A3XX_HLSQ_CL_CONTROL_1_REG 0x2212
393#define A3XX_HLSQ_CL_KERNEL_CONST_REG 0x2214
394#define A3XX_HLSQ_CL_KERNEL_GROUP_X_REG 0x2215
395#define A3XX_HLSQ_CL_KERNEL_GROUP_Y_REG 0x2216
396#define A3XX_HLSQ_CL_KERNEL_GROUP_Z_REG 0x2217
397#define A3XX_HLSQ_CL_WG_OFFSET_REG 0x221A
398#define A3XX_VFD_FETCH_INSTR_1_0 0x2247
399#define A3XX_VFD_FETCH_INSTR_1_1 0x2249
400#define A3XX_VFD_FETCH_INSTR_1_2 0x224B
401#define A3XX_VFD_FETCH_INSTR_1_3 0x224D
402#define A3XX_VFD_FETCH_INSTR_1_4 0x224F
403#define A3XX_VFD_FETCH_INSTR_1_5 0x2251
404#define A3XX_VFD_FETCH_INSTR_1_6 0x2253
405#define A3XX_VFD_FETCH_INSTR_1_7 0x2255
406#define A3XX_VFD_FETCH_INSTR_1_8 0x2257
407#define A3XX_VFD_FETCH_INSTR_1_9 0x2259
408#define A3XX_VFD_FETCH_INSTR_1_A 0x225B
409#define A3XX_VFD_FETCH_INSTR_1_B 0x225D
410#define A3XX_VFD_FETCH_INSTR_1_C 0x225F
411#define A3XX_VFD_FETCH_INSTR_1_D 0x2261
412#define A3XX_VFD_FETCH_INSTR_1_E 0x2263
413#define A3XX_VFD_FETCH_INSTR_1_F 0x2265
414#define A3XX_SP_SP_CTRL_REG 0x22C0
415#define A3XX_SP_VS_CTRL_REG0 0x22C4
416#define A3XX_SP_VS_CTRL_REG1 0x22C5
417#define A3XX_SP_VS_PARAM_REG 0x22C6
418#define A3XX_SP_VS_OUT_REG_0 0x22C7
419#define A3XX_SP_VS_OUT_REG_1 0x22C8
420#define A3XX_SP_VS_OUT_REG_2 0x22C9
421#define A3XX_SP_VS_OUT_REG_3 0x22CA
422#define A3XX_SP_VS_OUT_REG_4 0x22CB
423#define A3XX_SP_VS_OUT_REG_5 0x22CC
424#define A3XX_SP_VS_OUT_REG_6 0x22CD
425#define A3XX_SP_VS_OUT_REG_7 0x22CE
426#define A3XX_SP_VS_VPC_DST_REG_0 0x22D0
427#define A3XX_SP_VS_VPC_DST_REG_1 0x22D1
428#define A3XX_SP_VS_VPC_DST_REG_2 0x22D2
429#define A3XX_SP_VS_VPC_DST_REG_3 0x22D3
430#define A3XX_SP_VS_OBJ_OFFSET_REG 0x22D4
431#define A3XX_SP_VS_OBJ_START_REG 0x22D5
432#define A3XX_SP_VS_PVT_MEM_PARAM_REG 0x22D6
433#define A3XX_SP_VS_PVT_MEM_ADDR_REG 0x22D7
434#define A3XX_SP_VS_PVT_MEM_SIZE_REG 0x22D8
435#define A3XX_SP_VS_LENGTH_REG 0x22DF
436#define A3XX_SP_FS_CTRL_REG0 0x22E0
437#define A3XX_SP_FS_CTRL_REG1 0x22E1
438#define A3XX_SP_FS_OBJ_OFFSET_REG 0x22E2
439#define A3XX_SP_FS_OBJ_START_REG 0x22E3
440#define A3XX_SP_FS_PVT_MEM_PARAM_REG 0x22E4
441#define A3XX_SP_FS_PVT_MEM_ADDR_REG 0x22E5
442#define A3XX_SP_FS_PVT_MEM_SIZE_REG 0x22E6
443#define A3XX_SP_FS_FLAT_SHAD_MODE_REG_0 0x22E8
444#define A3XX_SP_FS_FLAT_SHAD_MODE_REG_1 0x22E9
445#define A3XX_SP_FS_OUTPUT_REG 0x22EC
446#define A3XX_SP_FS_MRT_REG_0 0x22F0
447#define A3XX_SP_FS_MRT_REG_1 0x22F1
448#define A3XX_SP_FS_MRT_REG_2 0x22F2
449#define A3XX_SP_FS_MRT_REG_3 0x22F3
450#define A3XX_SP_FS_IMAGE_OUTPUT_REG_0 0x22F4
451#define A3XX_SP_FS_IMAGE_OUTPUT_REG_1 0x22F5
452#define A3XX_SP_FS_IMAGE_OUTPUT_REG_2 0x22F6
453#define A3XX_SP_FS_IMAGE_OUTPUT_REG_3 0x22F7
454#define A3XX_SP_FS_LENGTH_REG 0x22FF
455#define A3XX_PA_SC_AA_CONFIG 0x2301
456#define A3XX_VBIF_CLKON 0x3001
457#define A3XX_VBIF_ABIT_SORT 0x301C
458#define A3XX_VBIF_ABIT_SORT_CONF 0x301D
459#define A3XX_VBIF_GATE_OFF_WRREQ_EN 0x302A
460#define A3XX_VBIF_IN_RD_LIM_CONF0 0x302C
461#define A3XX_VBIF_IN_RD_LIM_CONF1 0x302D
462#define A3XX_VBIF_IN_WR_LIM_CONF0 0x3030
463#define A3XX_VBIF_IN_WR_LIM_CONF1 0x3031
464#define A3XX_VBIF_OUT_RD_LIM_CONF0 0x3034
465#define A3XX_VBIF_OUT_WR_LIM_CONF0 0x3035
466#define A3XX_VBIF_DDR_OUT_MAX_BURST 0x3036
467#define A3XX_VBIF_ARB_CTL 0x303C
468#define A3XX_VBIF_ROUND_ROBIN_QOS_ARB 0x3049
469#define A3XX_VBIF_OUT_AXI_AOOO_EN 0x305E
470#define A3XX_VBIF_OUT_AXI_AOOO 0x305F
471#define A3XX_VBIF_PERF_CNT0_LO 0x3073
472#define A3XX_VBIF_PERF_CNT0_HI 0x3074
473#define A3XX_VBIF_PERF_CNT1_LO 0x3075
474#define A3XX_VBIF_PERF_CNT1_HI 0x3076
475#define A3XX_VBIF_PERF_PWR_CNT0_LO 0x3077
476#define A3XX_VBIF_PERF_PWR_CNT0_HI 0x3078
477#define A3XX_VBIF_PERF_PWR_CNT1_LO 0x3079
478#define A3XX_VBIF_PERF_PWR_CNT1_HI 0x307a
479#define A3XX_VBIF_PERF_PWR_CNT2_LO 0x307b
480#define A3XX_VBIF_PERF_PWR_CNT2_HI 0x307c
481
482#define A3XX_VBIF_XIN_HALT_CTRL0 0x3080
483#define A3XX_VBIF_XIN_HALT_CTRL0_MASK 0x3F
484#define A30X_VBIF_XIN_HALT_CTRL0_MASK 0x7
485
486#define A3XX_VBIF_XIN_HALT_CTRL1 0x3081
487
488/* VBIF register offsets for A306 */
489#define A3XX_VBIF2_PERF_CNT_SEL0 0x30d0
490#define A3XX_VBIF2_PERF_CNT_SEL1 0x30d1
491#define A3XX_VBIF2_PERF_CNT_SEL2 0x30d2
492#define A3XX_VBIF2_PERF_CNT_SEL3 0x30d3
493#define A3XX_VBIF2_PERF_CNT_LOW0 0x30d8
494#define A3XX_VBIF2_PERF_CNT_LOW1 0x30d9
495#define A3XX_VBIF2_PERF_CNT_LOW2 0x30da
496#define A3XX_VBIF2_PERF_CNT_LOW3 0x30db
497#define A3XX_VBIF2_PERF_CNT_HIGH0 0x30e0
498#define A3XX_VBIF2_PERF_CNT_HIGH1 0x30e1
499#define A3XX_VBIF2_PERF_CNT_HIGH2 0x30e2
500#define A3XX_VBIF2_PERF_CNT_HIGH3 0x30e3
501
502#define A3XX_VBIF2_PERF_PWR_CNT_EN0 0x3100
503#define A3XX_VBIF2_PERF_PWR_CNT_EN1 0x3101
504#define A3XX_VBIF2_PERF_PWR_CNT_EN2 0x3102
505#define A3XX_VBIF2_PERF_PWR_CNT_LOW0 0x3110
506#define A3XX_VBIF2_PERF_PWR_CNT_LOW1 0x3111
507#define A3XX_VBIF2_PERF_PWR_CNT_LOW2 0x3112
508#define A3XX_VBIF2_PERF_PWR_CNT_HIGH0 0x3118
509#define A3XX_VBIF2_PERF_PWR_CNT_HIGH1 0x3119
510#define A3XX_VBIF2_PERF_PWR_CNT_HIGH2 0x311a
511
512#define A3XX_VBIF_DDR_OUTPUT_RECOVERABLE_HALT_CTRL0 0x3800
513#define A3XX_VBIF_DDR_OUTPUT_RECOVERABLE_HALT_CTRL1 0x3801
514
515/* RBBM Debug bus block IDs */
516#define RBBM_BLOCK_ID_CP 0x1
517#define RBBM_BLOCK_ID_RBBM 0x2
518#define RBBM_BLOCK_ID_VBIF 0x3
519#define RBBM_BLOCK_ID_HLSQ 0x4
520#define RBBM_BLOCK_ID_UCHE 0x5
521#define RBBM_BLOCK_ID_PC 0x8
522#define RBBM_BLOCK_ID_VFD 0x9
523#define RBBM_BLOCK_ID_VPC 0xa
524#define RBBM_BLOCK_ID_TSE 0xb
525#define RBBM_BLOCK_ID_RAS 0xc
526#define RBBM_BLOCK_ID_VSC 0xd
527#define RBBM_BLOCK_ID_SP_0 0x10
528#define RBBM_BLOCK_ID_SP_1 0x11
529#define RBBM_BLOCK_ID_SP_2 0x12
530#define RBBM_BLOCK_ID_SP_3 0x13
531#define RBBM_BLOCK_ID_TPL1_0 0x18
532#define RBBM_BLOCK_ID_TPL1_1 0x19
533#define RBBM_BLOCK_ID_TPL1_2 0x1a
534#define RBBM_BLOCK_ID_TPL1_3 0x1b
535#define RBBM_BLOCK_ID_RB_0 0x20
536#define RBBM_BLOCK_ID_RB_1 0x21
537#define RBBM_BLOCK_ID_RB_2 0x22
538#define RBBM_BLOCK_ID_RB_3 0x23
539#define RBBM_BLOCK_ID_MARB_0 0x28
540#define RBBM_BLOCK_ID_MARB_1 0x29
541#define RBBM_BLOCK_ID_MARB_2 0x2a
542#define RBBM_BLOCK_ID_MARB_3 0x2b
543
544/* RBBM_CLOCK_CTL default value */
545#define A3XX_RBBM_CLOCK_CTL_DEFAULT 0xAAAAAAAA
546#define A320_RBBM_CLOCK_CTL_DEFAULT 0xBFFFFFFF
547#define A330_RBBM_CLOCK_CTL_DEFAULT 0xBFFCFFFF
548
549#define A330_RBBM_GPR0_CTL_DEFAULT 0x00000000
550#define A330v2_RBBM_GPR0_CTL_DEFAULT 0x05515455
551#define A310_RBBM_GPR0_CTL_DEFAULT 0x000000AA
552
553/* COUNTABLE FOR SP PERFCOUNTER */
554#define SP_ALU_ACTIVE_CYCLES 0x1D
555#define SP0_ICL1_MISSES 0x1A
556#define SP_FS_CFLOW_INSTRUCTIONS 0x0C
557
558/* COUNTABLE FOR TSE PERFCOUNTER */
559#define TSE_INPUT_PRIM_NUM 0x0
560
561/* VBIF countables */
562#define VBIF_AXI_TOTAL_BEATS 85
563
564/* VBIF Recoverable HALT bit value */
565#define VBIF_RECOVERABLE_HALT_CTRL 0x1
566
567/*
568 * CP DEBUG settings for A3XX core:
569 * DYNAMIC_CLK_DISABLE [27] - turn off the dynamic clock control
570 * MIU_128BIT_WRITE_ENABLE [25] - Allow 128 bit writes to the VBIF
571 */
572#define A3XX_CP_DEBUG_DEFAULT ((1 << 27) | (1 << 25))
573
574
575#endif