Shrenuj Bansal | a419c79 | 2016-10-20 14:05:11 -0700 | [diff] [blame] | 1 | /* 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 |