blob: 2639c494206db94bfc96d266eed423a1be60f802 [file] [log] [blame]
Shrenuj Bansalacf1ef42016-06-01 11:11:27 -07001/* Copyright (c) 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 _A6XX_REG_H
15#define _A6XX_REG_H
16
17/* A6XX interrupt bits */
18#define A6XX_INT_RBBM_GPU_IDLE 0
19#define A6XX_INT_CP_AHB_ERROR 1
20#define A6XX_INT_ATB_ASYNCFIFO_OVERFLOW 6
21#define A6XX_INT_RBBM_GPC_ERROR 7
22#define A6XX_INT_CP_SW 8
23#define A6XX_INT_CP_HW_ERROR 9
24#define A6XX_INT_CP_CCU_FLUSH_DEPTH_TS 10
25#define A6XX_INT_CP_CCU_FLUSH_COLOR_TS 11
26#define A6XX_INT_CP_CCU_RESOLVE_TS 12
27#define A6XX_INT_CP_IB2 13
28#define A6XX_INT_CP_IB1 14
29#define A6XX_INT_CP_RB 15
30#define A6XX_INT_CP_RB_DONE_TS 17
31#define A6XX_INT_CP_WT_DONE_TS 18
32#define A6XX_INT_CP_CACHE_FLUSH_TS 20
33#define A6XX_INT_RBBM_ATB_BUS_OVERFLOW 22
34#define A6XX_INT_RBBM_HANG_DETECT 23
35#define A6XX_INT_UCHE_OOB_ACCESS 24
36#define A6XX_INT_UCHE_TRAP_INTR 25
37#define A6XX_INT_DEBBUS_INTR_0 26
38#define A6XX_INT_DEBBUS_INTR_1 27
39#define A6XX_INT_ISDB_CPU_IRQ 30
40#define A6XX_INT_ISDB_UNDER_DEBUG 31
41
42/* CP Interrupt bits */
43#define A6XX_CP_OPCODE_ERROR 0
44#define A6XX_CP_UCODE_ERROR 1
45#define A6XX_CP_HW_FAULT_ERROR 2
46#define A6XX_CP_REGISTER_PROTECTION_ERROR 4
47#define A6XX_CP_AHB_ERROR 5
48#define A6XX_CP_VSD_PARITY_ERROR 6
49#define A6XX_CP_ILLEGAL_INSTR_ERROR 7
50
51/* CP registers */
52#define A6XX_CP_RB_BASE 0x800
53#define A6XX_CP_RB_BASE_HI 0x801
54#define A6XX_CP_RB_CNTL 0x802
55#define A6XX_CP_RB_RPTR_ADDR_LO 0x804
56#define A6XX_CP_RB_RPTR_ADDR_HI 0x805
57#define A6XX_CP_RB_RPTR 0x806
58#define A6XX_CP_RB_WPTR 0x807
59#define A6XX_CP_SQE_CNTL 0x808
60#define A6XX_CP_HW_FAULT 0x821
61#define A6XX_CP_INTERRUPT_STATUS 0x823
62#define A6XX_CP_PROTECT_STATUS 0X824
63#define A6XX_CP_SQE_INSTR_BASE_LO 0x830
64#define A6XX_CP_SQE_INSTR_BASE_HI 0x831
65#define A6XX_CP_MISC_CNTL 0x840
66#define A6XX_CP_ROQ_THRESHOLDS_1 0x8C1
67#define A6XX_CP_ROQ_THRESHOLDS_2 0x8C2
68#define A6XX_CP_MEM_POOL_SIZE 0x8C3
69#define A6XX_CP_CHICKEN_DBG 0x841
70#define A6XX_CP_ADDR_MODE_CNTL 0x842
71#define A6XX_CP_PROTECT_CNTL 0x84F
72#define A6XX_CP_PROTECT_REG 0x850
Shrenuj Bansal41665402016-12-16 15:25:54 -080073#define A6XX_CP_CRASH_SCRIPT_BASE_LO 0x900
74#define A6XX_CP_CRASH_SCRIPT_BASE_HI 0x901
75#define A6XX_CP_CRASH_DUMP_CNTL 0x902
76#define A6XX_CP_CRASH_DUMP_STATUS 0x903
Shrenuj Bansala602c022017-03-08 10:40:34 -080077#define A6XX_CP_SQE_STAT_ADDR 0x908
78#define A6XX_CP_SQE_STAT_DATA 0x909
Shrenuj Bansal41665402016-12-16 15:25:54 -080079#define A6XX_CP_DRAW_STATE_ADDR 0x90A
80#define A6XX_CP_DRAW_STATE_DATA 0x90B
81#define A6XX_CP_ROQ_DBG_ADDR 0x90C
82#define A6XX_CP_ROQ_DBG_DATA 0x90D
Lynus Vaza5922742017-03-14 18:50:54 +053083#define A6XX_CP_MEM_POOL_DBG_ADDR 0x90E
84#define A6XX_CP_MEM_POOL_DBG_DATA 0x90F
Shrenuj Bansal41665402016-12-16 15:25:54 -080085#define A6XX_CP_SQE_UCODE_DBG_ADDR 0x910
86#define A6XX_CP_SQE_UCODE_DBG_DATA 0x911
87#define A6XX_CP_IB1_BASE 0x928
88#define A6XX_CP_IB1_BASE_HI 0x929
89#define A6XX_CP_IB1_REM_SIZE 0x92A
90#define A6XX_CP_IB2_BASE 0x92B
91#define A6XX_CP_IB2_BASE_HI 0x92C
92#define A6XX_CP_IB2_REM_SIZE 0x92D
Shrenuj Bansalacf1ef42016-06-01 11:11:27 -070093#define A6XX_CP_ALWAYS_ON_COUNTER_LO 0x980
94#define A6XX_CP_ALWAYS_ON_COUNTER_HI 0x981
95#define A6XX_CP_AHB_CNTL 0x98D
Shrenuj Bansal41665402016-12-16 15:25:54 -080096#define A6XX_CP_APERTURE_CNTL_HOST 0xA00
Shrenuj Bansalacf1ef42016-06-01 11:11:27 -070097#define A6XX_VSC_ADDR_MODE_CNTL 0xC01
98
99/* RBBM registers */
100#define A6XX_RBBM_VBIF_CLIENT_QOS_CNTL 0x10
101#define A6XX_RBBM_INTERFACE_HANG_INT_CNTL 0x1f
102#define A6XX_RBBM_INT_CLEAR_CMD 0x37
103#define A6XX_RBBM_INT_0_MASK 0x38
104#define A6XX_RBBM_SW_RESET_CMD 0x43
105#define A6XX_RBBM_BLOCK_SW_RESET_CMD 0x45
106#define A6XX_RBBM_BLOCK_SW_RESET_CMD2 0x46
107#define A6XX_RBBM_CLOCK_CNTL 0xAE
108#define A6XX_RBBM_INT_0_STATUS 0x201
109#define A6XX_RBBM_STATUS 0x210
110#define A6XX_RBBM_STATUS3 0x213
111#define A6XX_RBBM_SECVID_TRUST_CNTL 0xF400
112#define A6XX_RBBM_SECVID_TSB_ADDR_MODE_CNTL 0xF810
113
Lynus Vaz20c81272017-02-10 16:22:12 +0530114/* DBGC_CFG registers */
115#define A6XX_DBGC_CFG_DBGBUS_SEL_A 0x600
116#define A6XX_DBGC_CFG_DBGBUS_SEL_B 0x601
117#define A6XX_DBGC_CFG_DBGBUS_SEL_C 0x602
118#define A6XX_DBGC_CFG_DBGBUS_SEL_D 0x603
119#define A6XX_DBGC_CFG_DBGBUS_SEL_PING_INDEX_SHIFT 0x0
120#define A6XX_DBGC_CFG_DBGBUS_SEL_PING_BLK_SEL_SHIFT 0x8
121#define A6XX_DBGC_CFG_DBGBUS_CNTLT 0x604
122#define A6XX_DBGC_CFG_DBGBUS_CNTLT_TRACEEN_SHIFT 0x0
123#define A6XX_DBGC_CFG_DBGBUS_CNTLT_GRANU_SHIFT 0xC
124#define A6XX_DBGC_CFG_DBGBUS_CNTLT_SEGT_SHIFT 0x1C
125#define A6XX_DBGC_CFG_DBGBUS_CNTLM 0x605
126#define A6XX_DBGC_CFG_DBGBUS_CTLTM_ENABLE_SHIFT 0x18
127#define A6XX_DBGC_CFG_DBGBUS_IVTL_0 0x608
128#define A6XX_DBGC_CFG_DBGBUS_IVTL_1 0x609
129#define A6XX_DBGC_CFG_DBGBUS_IVTL_2 0x60a
130#define A6XX_DBGC_CFG_DBGBUS_IVTL_3 0x60b
131#define A6XX_DBGC_CFG_DBGBUS_MASKL_0 0x60c
132#define A6XX_DBGC_CFG_DBGBUS_MASKL_1 0x60d
133#define A6XX_DBGC_CFG_DBGBUS_MASKL_2 0x60e
134#define A6XX_DBGC_CFG_DBGBUS_MASKL_3 0x60f
135#define A6XX_DBGC_CFG_DBGBUS_BYTEL_0 0x610
136#define A6XX_DBGC_CFG_DBGBUS_BYTEL_1 0x611
137#define A6XX_DBGC_CFG_DBGBUS_BYTEL0_SHIFT 0x0
138#define A6XX_DBGC_CFG_DBGBUS_BYTEL1_SHIFT 0x4
139#define A6XX_DBGC_CFG_DBGBUS_BYTEL2_SHIFT 0x8
140#define A6XX_DBGC_CFG_DBGBUS_BYTEL3_SHIFT 0xC
141#define A6XX_DBGC_CFG_DBGBUS_BYTEL4_SHIFT 0x10
142#define A6XX_DBGC_CFG_DBGBUS_BYTEL5_SHIFT 0x14
143#define A6XX_DBGC_CFG_DBGBUS_BYTEL6_SHIFT 0x18
144#define A6XX_DBGC_CFG_DBGBUS_BYTEL7_SHIFT 0x1C
145#define A6XX_DBGC_CFG_DBGBUS_BYTEL8_SHIFT 0x0
146#define A6XX_DBGC_CFG_DBGBUS_BYTEL9_SHIFT 0x4
147#define A6XX_DBGC_CFG_DBGBUS_BYTEL10_SHIFT 0x8
148#define A6XX_DBGC_CFG_DBGBUS_BYTEL11_SHIFT 0xC
149#define A6XX_DBGC_CFG_DBGBUS_BYTEL12_SHIFT 0x10
150#define A6XX_DBGC_CFG_DBGBUS_BYTEL13_SHIFT 0x14
151#define A6XX_DBGC_CFG_DBGBUS_BYTEL14_SHIFT 0x18
152#define A6XX_DBGC_CFG_DBGBUS_BYTEL15_SHIFT 0x1C
153#define A6XX_DBGC_CFG_DBGBUS_TRACE_BUF1 0x62f
154#define A6XX_DBGC_CFG_DBGBUS_TRACE_BUF2 0x630
155
Shrenuj Bansalacf1ef42016-06-01 11:11:27 -0700156/* VSC registers */
157#define A6XX_GRAS_ADDR_MODE_CNTL 0x8601
158
159/* RB registers */
160#define A6XX_RB_ADDR_MODE_CNTL 0x8E05
161#define A6XX_RB_NC_MODE_CNTL 0x8E08
162
163/* PC registers */
164#define A6XX_PC_DBG_ECO_CNTL 0x9E00
165#define A6XX_PC_ADDR_MODE_CNTL 0x9E01
166
167/* HLSQ registers */
168#define A6XX_HLSQ_ADDR_MODE_CNTL 0xBE05
Lynus Vaz461e2382017-01-16 19:35:41 +0530169#define A6XX_HLSQ_DBG_AHB_READ_APERTURE 0xC800
170#define A6XX_HLSQ_DBG_READ_SEL 0xD000
Shrenuj Bansalacf1ef42016-06-01 11:11:27 -0700171
172/* VFD registers */
173#define A6XX_VFD_ADDR_MODE_CNTL 0xA601
174
175/* VPC registers */
176#define A6XX_VPC_ADDR_MODE_CNTL 0x9601
177
178/* UCHE registers */
179#define A6XX_UCHE_ADDR_MODE_CNTL 0xE00
180#define A6XX_UCHE_MODE_CNTL 0xE01
181#define A6XX_UCHE_WRITE_RANGE_MAX_LO 0xE05
182#define A6XX_UCHE_WRITE_RANGE_MAX_HI 0xE06
183#define A6XX_UCHE_WRITE_THRU_BASE_LO 0xE07
184#define A6XX_UCHE_WRITE_THRU_BASE_HI 0xE08
185#define A6XX_UCHE_TRAP_BASE_LO 0xE09
186#define A6XX_UCHE_TRAP_BASE_HI 0xE0A
187#define A6XX_UCHE_GMEM_RANGE_MIN_LO 0xE0B
188#define A6XX_UCHE_GMEM_RANGE_MIN_HI 0xE0C
189#define A6XX_UCHE_GMEM_RANGE_MAX_LO 0xE0D
190#define A6XX_UCHE_GMEM_RANGE_MAX_HI 0xE0E
191#define A6XX_UCHE_CACHE_WAYS 0xE17
192#define A6XX_UCHE_FILTER_CNTL 0xE18
193
194/* SP registers */
195#define A6XX_SP_ADDR_MODE_CNTL 0xAE01
196#define A6XX_SP_NC_MODE_CNTL 0xAE02
197
198/* TP registers */
199#define A6XX_TPL1_ADDR_MODE_CNTL 0xB601
200#define A6XX_TPL1_NC_MODE_CNTL 0xB604
201
202/* VBIF registers */
203#define A6XX_VBIF_VERSION 0x3000
204#define A6XX_VBIF_GATE_OFF_WRREQ_EN 0x302A
205#define A6XX_VBIF_XIN_HALT_CTRL0 0x3080
206#define A6XX_VBIF_XIN_HALT_CTRL1 0x3081
207
Kyle Pieferb1027b02017-02-10 13:58:58 -0800208/* GMU control registers */
209#define A6XX_GMU_GX_SPTPRAC_POWER_CONTROL 0x1A881
210#define A6XX_GMU_CM3_ITCM_START 0x1B400
211#define A6XX_GMU_CM3_DTCM_START 0x1C400
212#define A6XX_GMU_BOOT_SLUMBER_OPTION 0x1CBF8
213#define A6XX_GMU_GX_VOTE_IDX 0x1CBF9
214#define A6XX_GMU_MX_VOTE_IDX 0x1CBFA
215#define A6XX_GMU_DCVS_ACK_OPTION 0x1CBFC
216#define A6XX_GMU_DCVS_PERF_SETTING 0x1CBFD
217#define A6XX_GMU_DCVS_BW_SETTING 0x1CBFE
218#define A6XX_GMU_DCVS_RETURN 0x1CBFF
219#define A6XX_GMU_CM3_SYSRESET 0x1F800
220#define A6XX_GMU_CM3_BOOT_CONFIG 0x1F801
221#define A6XX_GMU_CM3_FW_INIT_RESULT 0x1F81C
222#define A6XX_GMU_PWR_COL_INTER_FRAME_CTRL 0x1F8C0
223#define A6XX_GMU_PWR_COL_INTER_FRAME_HYST 0x1F8C1
224#define A6XX_GMU_PWR_COL_SPTPRAC_HYST 0x1F8C2
225#define A6XX_GMU_SPTPRAC_PWR_CLK_STATUS 0x1F8D0
226#define A6XX_GMU_GPU_NAP_CTRL 0x1F8E4
227#define A6XX_GMU_RPMH_CTRL 0x1F8E8
228#define A6XX_GMU_RPMH_HYST_CTRL 0x1F8E9
229#define A6XX_GMU_RPMH_POWER_STATE 0x1F8EC
230
231/* HFI registers*/
232#define A6XX_GMU_ALWAYS_ON_COUNTER_L 0x1F888
233#define A6XX_GMU_ALWAYS_ON_COUNTER_H 0x1F889
234#define A6XX_GMU_GMU_PWR_COL_KEEPALIVE 0x1F8C3
235#define A6XX_GMU_HFI_CTRL_STATUS 0x1F980
236#define A6XX_GMU_HFI_VERSION_INFO 0x1F981
237#define A6XX_GMU_HFI_SFR_ADDR 0x1F982
238#define A6XX_GMU_HFI_MMAP_ADDR 0x1F983
239#define A6XX_GMU_HFI_QTBL_INFO 0x1F984
240#define A6XX_GMU_HFI_QTBL_ADDR 0x1F985
241#define A6XX_GMU_HFI_CTRL_INIT 0x1F986
242#define A6XX_GMU_GMU2HOST_INTR_SET 0x1F990
243#define A6XX_GMU_GMU2HOST_INTR_CLR 0x1F991
244#define A6XX_GMU_GMU2HOST_INTR_INFO 0x1F992
245#define A6XX_GMU_GMU2HOST_INTR_MASK 0x1F993
246#define A6XX_GMU_HOST2GMU_INTR_SET 0x1F994
247#define A6XX_GMU_HOST2GMU_INTR_CLR 0x1F995
248#define A6XX_GMU_HOST2GMU_INTR_RAW_INFO 0x1F996
249#define A6XX_GMU_HOST2GMU_INTR_EN_0 0x1F997
250#define A6XX_GMU_HOST2GMU_INTR_EN_1 0x1F998
251#define A6XX_GMU_HOST2GMU_INTR_EN_2 0x1F999
252#define A6XX_GMU_HOST2GMU_INTR_EN_3 0x1F99A
253#define A6XX_GMU_HOST2GMU_INTR_INFO_0 0x1F99B
254#define A6XX_GMU_HOST2GMU_INTR_INFO_1 0x1F99C
255#define A6XX_GMU_HOST2GMU_INTR_INFO_2 0x1F99D
256#define A6XX_GMU_HOST2GMU_INTR_INFO_3 0x1F99E
257#define A6XX_GMU_GENERAL_7 0x1F9CC
258
259#define A6XX_GMU_AO_INTERRUPT_EN 0x23B03
260#define A6XX_GMU_HOST_INTERRUPT_CLR 0x23B04
261#define A6XX_GMU_HOST_INTERRUPT_STATUS 0x23B05
262#define A6XX_GMU_HOST_INTERRUPT_MASK 0x23B06
263#define A6XX_GMU_GPU_CX_BUSY_STATUS 0x23B0C
264#define A6XX_GMU_AHB_FENCE_STATUS 0x23B13
265#define A6XX_GMU_RBBM_INT_UNMASKED_STATUS 0x23B15
266#define A6XX_GMU_AO_SPARE_CNTL 0x23B16
267
268/* GMU RSC control registers */
269#define A6XX_GMU_RSCC_CONTROL_REQ 0x23B07
270#define A6XX_GMU_RSCC_CONTROL_ACK 0x23B08
271
272/* FENCE control registers */
273#define A6XX_GMU_AHB_FENCE_RANGE_0 0x23B11
274#define A6XX_GMU_AHB_FENCE_RANGE_1 0x23B12
275
276/* GPU RSC sequencer registers */
277#define A6XX_RSCC_PDC_SEQ_START_ADDR 0x23408
278#define A6XX_RSCC_PDC_MATCH_VALUE_LO 0x23409
279#define A6XX_RSCC_PDC_MATCH_VALUE_HI 0x2340A
280#define A6XX_RSCC_PDC_SLAVE_ID_DRV0 0x2340B
281#define A6XX_RSCC_HIDDEN_TCS_CMD0_ADDR 0x2340D
282#define A6XX_RSCC_HIDDEN_TCS_CMD0_DATA 0x2340E
283#define A6XX_RSCC_TIMESTAMP_UNIT0_TIMESTAMP_L_DRV0 0x23482
284#define A6XX_RSCC_TIMESTAMP_UNIT0_TIMESTAMP_H_DRV0 0x23483
285#define A6XX_RSCC_TIMESTAMP_UNIT1_EN_DRV0 0x23489
286#define A6XX_RSCC_TIMESTAMP_UNIT1_OUTPUT_DRV0 0x2348C
287#define A6XX_RSCC_OVERRIDE_START_ADDR 0x23500
288#define A6XX_RSCC_SEQ_BUSY_DRV0 0x23501
289#define A6XX_RSCC_SEQ_MEM_0_DRV0 0x23580
290
291/* GPU PDC sequencer registers in AOSS.RPMh domain */
292#define PDC_GPU_ENABLE_PDC 0x21140
293#define PDC_GPU_SEQ_START_ADDR 0x21148
294#define PDC_GPU_TCS0_CONTROL 0x21540
295#define PDC_GPU_TCS0_CMD_ENABLE_BANK 0x21541
296#define PDC_GPU_TCS0_CMD_WAIT_FOR_CMPL_BANK 0x21542
297#define PDC_GPU_TCS0_CMD0_MSGID 0x21543
298#define PDC_GPU_TCS0_CMD0_ADDR 0x21544
299#define PDC_GPU_TCS0_CMD0_DATA 0x21545
300#define PDC_GPU_TCS1_CONTROL 0x21572
301#define PDC_GPU_TCS1_CMD_ENABLE_BANK 0x21573
302#define PDC_GPU_TCS1_CMD_WAIT_FOR_CMPL_BANK 0x21574
303#define PDC_GPU_TCS1_CMD0_MSGID 0x21575
304#define PDC_GPU_TCS1_CMD0_ADDR 0x21576
305#define PDC_GPU_TCS1_CMD0_DATA 0x21577
306#define PDC_GPU_TIMESTAMP_UNIT1_EN_DRV0 0x23489
307#define PDC_GPU_SEQ_MEM_0 0xA0000
Shrenuj Bansalacf1ef42016-06-01 11:11:27 -0700308
309#endif /* _A6XX_REG_H */
310