1 // SPDX-License-Identifier: GPL-2.0 2 /* Copyright (c) 2018 The Linux Foundation. All rights reserved. */ 3 4 #ifndef _A6XX_CRASH_DUMP_H_ 5 #define _A6XX_CRASH_DUMP_H_ 6 7 #include "a6xx.xml.h" 8 9 #define A6XX_NUM_CONTEXTS 2 10 #define A6XX_NUM_SHADER_BANKS 3 11 12 static const u32 a6xx_gras_cluster[] = { 13 0x8000, 0x8006, 0x8010, 0x8092, 0x8094, 0x809d, 0x80a0, 0x80a6, 14 0x80af, 0x80f1, 0x8100, 0x8107, 0x8109, 0x8109, 0x8110, 0x8110, 15 0x8400, 0x840b, 16 }; 17 18 static const u32 a6xx_ps_cluster_rac[] = { 19 0x8800, 0x8806, 0x8809, 0x8811, 0x8818, 0x881e, 0x8820, 0x8865, 20 0x8870, 0x8879, 0x8880, 0x8889, 0x8890, 0x8891, 0x8898, 0x8898, 21 0x88c0, 0x88c1, 0x88d0, 0x88e3, 0x8900, 0x890c, 0x890f, 0x891a, 22 0x8c00, 0x8c01, 0x8c08, 0x8c10, 0x8c17, 0x8c1f, 0x8c26, 0x8c33, 23 }; 24 25 static const u32 a6xx_ps_cluster_rbp[] = { 26 0x88f0, 0x88f3, 0x890d, 0x890e, 0x8927, 0x8928, 0x8bf0, 0x8bf1, 27 0x8c02, 0x8c07, 0x8c11, 0x8c16, 0x8c20, 0x8c25, 28 }; 29 30 static const u32 a6xx_ps_cluster[] = { 31 0x9200, 0x9216, 0x9218, 0x9236, 0x9300, 0x9306, 32 }; 33 34 static const u32 a6xx_fe_cluster[] = { 35 0x9300, 0x9306, 0x9800, 0x9806, 0x9b00, 0x9b07, 0xa000, 0xa009, 36 0xa00e, 0xa0ef, 0xa0f8, 0xa0f8, 37 }; 38 39 static const u32 a6xx_pc_vs_cluster[] = { 40 0x9100, 0x9108, 0x9300, 0x9306, 0x9980, 0x9981, 0x9b00, 0x9b07, 41 }; 42 43 #define CLUSTER_FE 0 44 #define CLUSTER_SP_VS 1 45 #define CLUSTER_PC_VS 2 46 #define CLUSTER_GRAS 3 47 #define CLUSTER_SP_PS 4 48 #define CLUSTER_PS 5 49 50 #define CLUSTER(_id, _reg, _sel_reg, _sel_val) \ 51 { .id = _id, .name = #_id,\ 52 .registers = _reg, \ 53 .count = ARRAY_SIZE(_reg), \ 54 .sel_reg = _sel_reg, .sel_val = _sel_val } 55 56 static const struct a6xx_cluster { 57 u32 id; 58 const char *name; 59 const u32 *registers; 60 size_t count; 61 u32 sel_reg; 62 u32 sel_val; 63 } a6xx_clusters[] = { 64 CLUSTER(CLUSTER_GRAS, a6xx_gras_cluster, 0, 0), 65 CLUSTER(CLUSTER_PS, a6xx_ps_cluster_rac, REG_A6XX_RB_RB_SUB_BLOCK_SEL_CNTL_CD, 0x0), 66 CLUSTER(CLUSTER_PS, a6xx_ps_cluster_rbp, REG_A6XX_RB_RB_SUB_BLOCK_SEL_CNTL_CD, 0x9), 67 CLUSTER(CLUSTER_PS, a6xx_ps_cluster, 0, 0), 68 CLUSTER(CLUSTER_FE, a6xx_fe_cluster, 0, 0), 69 CLUSTER(CLUSTER_PC_VS, a6xx_pc_vs_cluster, 0, 0), 70 }; 71 72 static const u32 a6xx_sp_vs_hlsq_cluster[] = { 73 0xb800, 0xb803, 0xb820, 0xb822, 74 }; 75 76 static const u32 a6xx_sp_vs_sp_cluster[] = { 77 0xa800, 0xa824, 0xa830, 0xa83c, 0xa840, 0xa864, 0xa870, 0xa895, 78 0xa8a0, 0xa8af, 0xa8c0, 0xa8c3, 79 }; 80 81 static const u32 a6xx_hlsq_duplicate_cluster[] = { 82 0xbb10, 0xbb11, 0xbb20, 0xbb29, 83 }; 84 85 static const u32 a6xx_hlsq_2d_duplicate_cluster[] = { 86 0xbd80, 0xbd80, 87 }; 88 89 static const u32 a6xx_sp_duplicate_cluster[] = { 90 0xab00, 0xab00, 0xab04, 0xab05, 0xab10, 0xab1b, 0xab20, 0xab20, 91 }; 92 93 static const u32 a6xx_tp_duplicate_cluster[] = { 94 0xb300, 0xb307, 0xb309, 0xb309, 0xb380, 0xb382, 95 }; 96 97 static const u32 a6xx_sp_ps_hlsq_cluster[] = { 98 0xb980, 0xb980, 0xb982, 0xb987, 0xb990, 0xb99b, 0xb9a0, 0xb9a2, 99 0xb9c0, 0xb9c9, 100 }; 101 102 static const u32 a6xx_sp_ps_hlsq_2d_cluster[] = { 103 0xbd80, 0xbd80, 104 }; 105 106 static const u32 a6xx_sp_ps_sp_cluster[] = { 107 0xa980, 0xa9a8, 0xa9b0, 0xa9bc, 0xa9d0, 0xa9d3, 0xa9e0, 0xa9f3, 108 0xaa00, 0xaa00, 0xaa30, 0xaa31, 109 }; 110 111 static const u32 a6xx_sp_ps_sp_2d_cluster[] = { 112 0xacc0, 0xacc0, 113 }; 114 115 static const u32 a6xx_sp_ps_tp_cluster[] = { 116 0xb180, 0xb183, 0xb190, 0xb191, 117 }; 118 119 static const u32 a6xx_sp_ps_tp_2d_cluster[] = { 120 0xb4c0, 0xb4d1, 121 }; 122 123 #define CLUSTER_DBGAHB(_id, _base, _type, _reg) \ 124 { .name = #_id, .statetype = _type, .base = _base, \ 125 .registers = _reg, .count = ARRAY_SIZE(_reg) } 126 127 static const struct a6xx_dbgahb_cluster { 128 const char *name; 129 u32 statetype; 130 u32 base; 131 const u32 *registers; 132 size_t count; 133 } a6xx_dbgahb_clusters[] = { 134 CLUSTER_DBGAHB(CLUSTER_SP_VS, 0x0002e000, 0x41, a6xx_sp_vs_hlsq_cluster), 135 CLUSTER_DBGAHB(CLUSTER_SP_VS, 0x0002a000, 0x21, a6xx_sp_vs_sp_cluster), 136 CLUSTER_DBGAHB(CLUSTER_SP_VS, 0x0002e000, 0x41, a6xx_hlsq_duplicate_cluster), 137 CLUSTER_DBGAHB(CLUSTER_SP_VS, 0x0002f000, 0x45, a6xx_hlsq_2d_duplicate_cluster), 138 CLUSTER_DBGAHB(CLUSTER_SP_VS, 0x0002a000, 0x21, a6xx_sp_duplicate_cluster), 139 CLUSTER_DBGAHB(CLUSTER_SP_VS, 0x0002c000, 0x1, a6xx_tp_duplicate_cluster), 140 CLUSTER_DBGAHB(CLUSTER_SP_PS, 0x0002e000, 0x42, a6xx_sp_ps_hlsq_cluster), 141 CLUSTER_DBGAHB(CLUSTER_SP_PS, 0x0002f000, 0x46, a6xx_sp_ps_hlsq_2d_cluster), 142 CLUSTER_DBGAHB(CLUSTER_SP_PS, 0x0002a000, 0x22, a6xx_sp_ps_sp_cluster), 143 CLUSTER_DBGAHB(CLUSTER_SP_PS, 0x0002b000, 0x26, a6xx_sp_ps_sp_2d_cluster), 144 CLUSTER_DBGAHB(CLUSTER_SP_PS, 0x0002c000, 0x2, a6xx_sp_ps_tp_cluster), 145 CLUSTER_DBGAHB(CLUSTER_SP_PS, 0x0002d000, 0x6, a6xx_sp_ps_tp_2d_cluster), 146 CLUSTER_DBGAHB(CLUSTER_SP_PS, 0x0002e000, 0x42, a6xx_hlsq_duplicate_cluster), 147 CLUSTER_DBGAHB(CLUSTER_SP_PS, 0x0002a000, 0x22, a6xx_sp_duplicate_cluster), 148 CLUSTER_DBGAHB(CLUSTER_SP_PS, 0x0002c000, 0x2, a6xx_tp_duplicate_cluster), 149 }; 150 151 static const u32 a6xx_hlsq_registers[] = { 152 0xbe00, 0xbe01, 0xbe04, 0xbe05, 0xbe08, 0xbe09, 0xbe10, 0xbe15, 153 0xbe20, 0xbe23, 154 }; 155 156 static const u32 a6xx_sp_registers[] = { 157 0xae00, 0xae04, 0xae0c, 0xae0c, 0xae0f, 0xae2b, 0xae30, 0xae32, 158 0xae35, 0xae35, 0xae3a, 0xae3f, 0xae50, 0xae52, 159 }; 160 161 static const u32 a6xx_tp_registers[] = { 162 0xb600, 0xb601, 0xb604, 0xb605, 0xb610, 0xb61b, 0xb620, 0xb623, 163 }; 164 165 struct a6xx_registers { 166 const u32 *registers; 167 size_t count; 168 u32 val0; 169 u32 val1; 170 }; 171 172 #define HLSQ_DBG_REGS(_base, _type, _array) \ 173 { .val0 = _base, .val1 = _type, .registers = _array, \ 174 .count = ARRAY_SIZE(_array), } 175 176 static const struct a6xx_registers a6xx_hlsq_reglist[] = { 177 HLSQ_DBG_REGS(0x0002F800, 0x40, a6xx_hlsq_registers), 178 HLSQ_DBG_REGS(0x0002B800, 0x20, a6xx_sp_registers), 179 HLSQ_DBG_REGS(0x0002D800, 0x0, a6xx_tp_registers), 180 }; 181 182 #define SHADER(_type, _size) \ 183 { .type = _type, .name = #_type, .size = _size } 184 185 static const struct a6xx_shader_block { 186 const char *name; 187 u32 type; 188 u32 size; 189 } a6xx_shader_blocks[] = { 190 SHADER(A6XX_TP0_TMO_DATA, 0x200), 191 SHADER(A6XX_TP0_SMO_DATA, 0x80), 192 SHADER(A6XX_TP0_MIPMAP_BASE_DATA, 0x3c0), 193 SHADER(A6XX_TP1_TMO_DATA, 0x200), 194 SHADER(A6XX_TP1_SMO_DATA, 0x80), 195 SHADER(A6XX_TP1_MIPMAP_BASE_DATA, 0x3c0), 196 SHADER(A6XX_SP_INST_DATA, 0x800), 197 SHADER(A6XX_SP_LB_0_DATA, 0x800), 198 SHADER(A6XX_SP_LB_1_DATA, 0x800), 199 SHADER(A6XX_SP_LB_2_DATA, 0x800), 200 SHADER(A6XX_SP_LB_3_DATA, 0x800), 201 SHADER(A6XX_SP_LB_4_DATA, 0x800), 202 SHADER(A6XX_SP_LB_5_DATA, 0x200), 203 SHADER(A6XX_SP_CB_BINDLESS_DATA, 0x2000), 204 SHADER(A6XX_SP_CB_LEGACY_DATA, 0x280), 205 SHADER(A6XX_SP_UAV_DATA, 0x80), 206 SHADER(A6XX_SP_INST_TAG, 0x80), 207 SHADER(A6XX_SP_CB_BINDLESS_TAG, 0x80), 208 SHADER(A6XX_SP_TMO_UMO_TAG, 0x80), 209 SHADER(A6XX_SP_SMO_TAG, 0x80), 210 SHADER(A6XX_SP_STATE_DATA, 0x3f), 211 SHADER(A6XX_HLSQ_CHUNK_CVS_RAM, 0x1c0), 212 SHADER(A6XX_HLSQ_CHUNK_CPS_RAM, 0x280), 213 SHADER(A6XX_HLSQ_CHUNK_CVS_RAM_TAG, 0x40), 214 SHADER(A6XX_HLSQ_CHUNK_CPS_RAM_TAG, 0x40), 215 SHADER(A6XX_HLSQ_ICB_CVS_CB_BASE_TAG, 0x4), 216 SHADER(A6XX_HLSQ_ICB_CPS_CB_BASE_TAG, 0x4), 217 SHADER(A6XX_HLSQ_CVS_MISC_RAM, 0x1c0), 218 SHADER(A6XX_HLSQ_CPS_MISC_RAM, 0x580), 219 SHADER(A6XX_HLSQ_INST_RAM, 0x800), 220 SHADER(A6XX_HLSQ_GFX_CVS_CONST_RAM, 0x800), 221 SHADER(A6XX_HLSQ_GFX_CPS_CONST_RAM, 0x800), 222 SHADER(A6XX_HLSQ_CVS_MISC_RAM_TAG, 0x8), 223 SHADER(A6XX_HLSQ_CPS_MISC_RAM_TAG, 0x4), 224 SHADER(A6XX_HLSQ_INST_RAM_TAG, 0x80), 225 SHADER(A6XX_HLSQ_GFX_CVS_CONST_RAM_TAG, 0xc), 226 SHADER(A6XX_HLSQ_GFX_CPS_CONST_RAM_TAG, 0x10), 227 SHADER(A6XX_HLSQ_PWR_REST_RAM, 0x28), 228 SHADER(A6XX_HLSQ_PWR_REST_TAG, 0x14), 229 SHADER(A6XX_HLSQ_DATAPATH_META, 0x40), 230 SHADER(A6XX_HLSQ_FRONTEND_META, 0x40), 231 SHADER(A6XX_HLSQ_INDIRECT_META, 0x40), 232 }; 233 234 static const u32 a6xx_rb_rac_registers[] = { 235 0x8e04, 0x8e05, 0x8e07, 0x8e08, 0x8e10, 0x8e1c, 0x8e20, 0x8e25, 236 0x8e28, 0x8e28, 0x8e2c, 0x8e2f, 0x8e50, 0x8e52, 237 }; 238 239 static const u32 a6xx_rb_rbp_registers[] = { 240 0x8e01, 0x8e01, 0x8e0c, 0x8e0c, 0x8e3b, 0x8e3e, 0x8e40, 0x8e43, 241 0x8e53, 0x8e5f, 0x8e70, 0x8e77, 242 }; 243 244 static const u32 a6xx_registers[] = { 245 /* RBBM */ 246 0x0000, 0x0002, 0x0010, 0x0010, 0x0012, 0x0012, 0x0018, 0x001b, 247 0x001e, 0x0032, 0x0038, 0x003c, 0x0042, 0x0042, 0x0044, 0x0044, 248 0x0047, 0x0047, 0x0056, 0x0056, 0x00ad, 0x00ae, 0x00b0, 0x00fb, 249 0x0100, 0x011d, 0x0200, 0x020d, 0x0218, 0x023d, 0x0400, 0x04f9, 250 0x0500, 0x0500, 0x0505, 0x050b, 0x050e, 0x0511, 0x0533, 0x0533, 251 0x0540, 0x0555, 252 /* CP */ 253 0x0800, 0x0808, 0x0810, 0x0813, 0x0820, 0x0821, 0x0823, 0x0824, 254 0x0826, 0x0827, 0x0830, 0x0833, 0x0840, 0x0843, 0x084f, 0x086f, 255 0x0880, 0x088a, 0x08a0, 0x08ab, 0x08c0, 0x08c4, 0x08d0, 0x08dd, 256 0x08f0, 0x08f3, 0x0900, 0x0903, 0x0908, 0x0911, 0x0928, 0x093e, 257 0x0942, 0x094d, 0x0980, 0x0984, 0x098d, 0x0996, 0x0998, 0x099e, 258 0x09a0, 0x09a6, 0x09a8, 0x09ae, 0x09b0, 0x09b1, 0x09c2, 0x09c8, 259 0x0a00, 0x0a03, 260 /* VSC */ 261 0x0c00, 0x0c04, 0x0c06, 0x0c06, 0x0c10, 0x0cd9, 0x0e00, 0x0e0e, 262 /* UCHE */ 263 0x0e10, 0x0e13, 0x0e17, 0x0e19, 0x0e1c, 0x0e2b, 0x0e30, 0x0e32, 264 0x0e38, 0x0e39, 265 /* GRAS */ 266 0x8600, 0x8601, 0x8610, 0x861b, 0x8620, 0x8620, 0x8628, 0x862b, 267 0x8630, 0x8637, 268 /* VPC */ 269 0x9600, 0x9604, 0x9624, 0x9637, 270 /* PC */ 271 0x9e00, 0x9e01, 0x9e03, 0x9e0e, 0x9e11, 0x9e16, 0x9e19, 0x9e19, 272 0x9e1c, 0x9e1c, 0x9e20, 0x9e23, 0x9e30, 0x9e31, 0x9e34, 0x9e34, 273 0x9e70, 0x9e72, 0x9e78, 0x9e79, 0x9e80, 0x9fff, 274 /* VFD */ 275 0xa600, 0xa601, 0xa603, 0xa603, 0xa60a, 0xa60a, 0xa610, 0xa617, 276 0xa630, 0xa630, 277 }; 278 279 #define REGS(_array, _sel_reg, _sel_val) \ 280 { .registers = _array, .count = ARRAY_SIZE(_array), \ 281 .val0 = _sel_reg, .val1 = _sel_val } 282 283 static const struct a6xx_registers a6xx_reglist[] = { 284 REGS(a6xx_registers, 0, 0), 285 REGS(a6xx_rb_rac_registers, REG_A6XX_RB_RB_SUB_BLOCK_SEL_CNTL_CD, 0), 286 REGS(a6xx_rb_rbp_registers, REG_A6XX_RB_RB_SUB_BLOCK_SEL_CNTL_CD, 9), 287 }; 288 289 static const u32 a6xx_ahb_registers[] = { 290 /* RBBM_STATUS - RBBM_STATUS3 */ 291 0x210, 0x213, 292 /* CP_STATUS_1 */ 293 0x825, 0x825, 294 }; 295 296 static const u32 a6xx_vbif_registers[] = { 297 0x3000, 0x3007, 0x300c, 0x3014, 0x3018, 0x302d, 0x3030, 0x3031, 298 0x3034, 0x3036, 0x303c, 0x303d, 0x3040, 0x3040, 0x3042, 0x3042, 299 0x3049, 0x3049, 0x3058, 0x3058, 0x305a, 0x3061, 0x3064, 0x3068, 300 0x306c, 0x306d, 0x3080, 0x3088, 0x308b, 0x308c, 0x3090, 0x3094, 301 0x3098, 0x3098, 0x309c, 0x309c, 0x30c0, 0x30c0, 0x30c8, 0x30c8, 302 0x30d0, 0x30d0, 0x30d8, 0x30d8, 0x30e0, 0x30e0, 0x3100, 0x3100, 303 0x3108, 0x3108, 0x3110, 0x3110, 0x3118, 0x3118, 0x3120, 0x3120, 304 0x3124, 0x3125, 0x3129, 0x3129, 0x3131, 0x3131, 0x3154, 0x3154, 305 0x3156, 0x3156, 0x3158, 0x3158, 0x315a, 0x315a, 0x315c, 0x315c, 306 0x315e, 0x315e, 0x3160, 0x3160, 0x3162, 0x3162, 0x340c, 0x340c, 307 0x3410, 0x3410, 0x3800, 0x3801, 308 }; 309 310 static const struct a6xx_registers a6xx_ahb_reglist[] = { 311 REGS(a6xx_ahb_registers, 0, 0), 312 REGS(a6xx_vbif_registers, 0, 0), 313 }; 314 315 static const u32 a6xx_gmu_gx_registers[] = { 316 /* GMU GX */ 317 0x0000, 0x0000, 0x0010, 0x0013, 0x0016, 0x0016, 0x0018, 0x001b, 318 0x001e, 0x001e, 0x0020, 0x0023, 0x0026, 0x0026, 0x0028, 0x002b, 319 0x002e, 0x002e, 0x0030, 0x0033, 0x0036, 0x0036, 0x0038, 0x003b, 320 0x003e, 0x003e, 0x0040, 0x0043, 0x0046, 0x0046, 0x0080, 0x0084, 321 0x0100, 0x012b, 0x0140, 0x0140, 322 }; 323 324 static const u32 a6xx_gmu_cx_registers[] = { 325 /* GMU CX */ 326 0x4c00, 0x4c07, 0x4c10, 0x4c12, 0x4d00, 0x4d00, 0x4d07, 0x4d0a, 327 0x5000, 0x5004, 0x5007, 0x5008, 0x500b, 0x500c, 0x500f, 0x501c, 328 0x5024, 0x502a, 0x502d, 0x5030, 0x5040, 0x5053, 0x5087, 0x5089, 329 0x50a0, 0x50a2, 0x50a4, 0x50af, 0x50c0, 0x50c3, 0x50d0, 0x50d0, 330 0x50e4, 0x50e4, 0x50e8, 0x50ec, 0x5100, 0x5103, 0x5140, 0x5140, 331 0x5142, 0x5144, 0x514c, 0x514d, 0x514f, 0x5151, 0x5154, 0x5154, 332 0x5157, 0x5158, 0x515d, 0x515d, 0x5162, 0x5162, 0x5164, 0x5165, 333 0x5180, 0x5186, 0x5190, 0x519e, 0x51c0, 0x51c0, 0x51c5, 0x51cc, 334 0x51e0, 0x51e2, 0x51f0, 0x51f0, 0x5200, 0x5201, 335 /* GPU RSCC */ 336 0x8c8c, 0x8c8c, 0x8d01, 0x8d02, 0x8f40, 0x8f42, 0x8f44, 0x8f47, 337 0x8f4c, 0x8f87, 0x8fec, 0x8fef, 0x8ff4, 0x902f, 0x9094, 0x9097, 338 0x909c, 0x90d7, 0x913c, 0x913f, 0x9144, 0x917f, 339 /* GMU AO */ 340 0x9300, 0x9316, 0x9400, 0x9400, 341 /* GPU CC */ 342 0x9800, 0x9812, 0x9840, 0x9852, 0x9c00, 0x9c04, 0x9c07, 0x9c0b, 343 0x9c15, 0x9c1c, 0x9c1e, 0x9c2d, 0x9c3c, 0x9c3d, 0x9c3f, 0x9c40, 344 0x9c42, 0x9c49, 0x9c58, 0x9c5a, 0x9d40, 0x9d5e, 0xa000, 0xa002, 345 0xa400, 0xa402, 0xac00, 0xac02, 0xb000, 0xb002, 0xb400, 0xb402, 346 0xb800, 0xb802, 347 /* GPU CC ACD */ 348 0xbc00, 0xbc16, 0xbc20, 0xbc27, 349 }; 350 351 static const struct a6xx_registers a6xx_gmu_reglist[] = { 352 REGS(a6xx_gmu_cx_registers, 0, 0), 353 REGS(a6xx_gmu_gx_registers, 0, 0), 354 }; 355 356 static const struct a6xx_indexed_registers { 357 const char *name; 358 u32 addr; 359 u32 data; 360 u32 count; 361 } a6xx_indexed_reglist[] = { 362 { "CP_SEQ_STAT", REG_A6XX_CP_SQE_STAT_ADDR, 363 REG_A6XX_CP_SQE_STAT_DATA, 0x33 }, 364 { "CP_DRAW_STATE", REG_A6XX_CP_DRAW_STATE_ADDR, 365 REG_A6XX_CP_DRAW_STATE_DATA, 0x100 }, 366 { "CP_UCODE_DBG_DATA", REG_A6XX_CP_SQE_UCODE_DBG_ADDR, 367 REG_A6XX_CP_SQE_UCODE_DBG_DATA, 0x6000 }, 368 { "CP_ROQ", REG_A6XX_CP_ROQ_DBG_ADDR, 369 REG_A6XX_CP_ROQ_DBG_DATA, 0x400 }, 370 }; 371 372 static const struct a6xx_indexed_registers a6xx_cp_mempool_indexed = { 373 "CP_MEMPOOOL", REG_A6XX_CP_MEM_POOL_DBG_ADDR, 374 REG_A6XX_CP_MEM_POOL_DBG_DATA, 0x2060, 375 }; 376 377 #define DEBUGBUS(_id, _count) { .id = _id, .name = #_id, .count = _count } 378 379 static const struct a6xx_debugbus_block { 380 const char *name; 381 u32 id; 382 u32 count; 383 } a6xx_debugbus_blocks[] = { 384 DEBUGBUS(A6XX_DBGBUS_CP, 0x100), 385 DEBUGBUS(A6XX_DBGBUS_RBBM, 0x100), 386 DEBUGBUS(A6XX_DBGBUS_HLSQ, 0x100), 387 DEBUGBUS(A6XX_DBGBUS_UCHE, 0x100), 388 DEBUGBUS(A6XX_DBGBUS_DPM, 0x100), 389 DEBUGBUS(A6XX_DBGBUS_TESS, 0x100), 390 DEBUGBUS(A6XX_DBGBUS_PC, 0x100), 391 DEBUGBUS(A6XX_DBGBUS_VFDP, 0x100), 392 DEBUGBUS(A6XX_DBGBUS_VPC, 0x100), 393 DEBUGBUS(A6XX_DBGBUS_TSE, 0x100), 394 DEBUGBUS(A6XX_DBGBUS_RAS, 0x100), 395 DEBUGBUS(A6XX_DBGBUS_VSC, 0x100), 396 DEBUGBUS(A6XX_DBGBUS_COM, 0x100), 397 DEBUGBUS(A6XX_DBGBUS_LRZ, 0x100), 398 DEBUGBUS(A6XX_DBGBUS_A2D, 0x100), 399 DEBUGBUS(A6XX_DBGBUS_CCUFCHE, 0x100), 400 DEBUGBUS(A6XX_DBGBUS_RBP, 0x100), 401 DEBUGBUS(A6XX_DBGBUS_DCS, 0x100), 402 DEBUGBUS(A6XX_DBGBUS_DBGC, 0x100), 403 DEBUGBUS(A6XX_DBGBUS_GMU_GX, 0x100), 404 DEBUGBUS(A6XX_DBGBUS_TPFCHE, 0x100), 405 DEBUGBUS(A6XX_DBGBUS_GPC, 0x100), 406 DEBUGBUS(A6XX_DBGBUS_LARC, 0x100), 407 DEBUGBUS(A6XX_DBGBUS_HLSQ_SPTP, 0x100), 408 DEBUGBUS(A6XX_DBGBUS_RB_0, 0x100), 409 DEBUGBUS(A6XX_DBGBUS_RB_1, 0x100), 410 DEBUGBUS(A6XX_DBGBUS_UCHE_WRAPPER, 0x100), 411 DEBUGBUS(A6XX_DBGBUS_CCU_0, 0x100), 412 DEBUGBUS(A6XX_DBGBUS_CCU_1, 0x100), 413 DEBUGBUS(A6XX_DBGBUS_VFD_0, 0x100), 414 DEBUGBUS(A6XX_DBGBUS_VFD_1, 0x100), 415 DEBUGBUS(A6XX_DBGBUS_VFD_2, 0x100), 416 DEBUGBUS(A6XX_DBGBUS_VFD_3, 0x100), 417 DEBUGBUS(A6XX_DBGBUS_SP_0, 0x100), 418 DEBUGBUS(A6XX_DBGBUS_SP_1, 0x100), 419 DEBUGBUS(A6XX_DBGBUS_TPL1_0, 0x100), 420 DEBUGBUS(A6XX_DBGBUS_TPL1_1, 0x100), 421 DEBUGBUS(A6XX_DBGBUS_TPL1_2, 0x100), 422 DEBUGBUS(A6XX_DBGBUS_TPL1_3, 0x100), 423 }; 424 425 static const struct a6xx_debugbus_block a6xx_cx_debugbus_blocks[] = { 426 DEBUGBUS(A6XX_DBGBUS_GMU_CX, 0x100), 427 DEBUGBUS(A6XX_DBGBUS_CX, 0x100), 428 }; 429 430 #endif 431