1*61046927SAndroid Build Coastguard Worker /* 2*61046927SAndroid Build Coastguard Worker * Copyright © 2021 Google, Inc. 3*61046927SAndroid Build Coastguard Worker * SPDX-License-Identifier: MIT 4*61046927SAndroid Build Coastguard Worker */ 5*61046927SAndroid Build Coastguard Worker 6*61046927SAndroid Build Coastguard Worker #ifndef __CRASHDEC_H__ 7*61046927SAndroid Build Coastguard Worker #define __CRASHDEC_H__ 8*61046927SAndroid Build Coastguard Worker 9*61046927SAndroid Build Coastguard Worker #include <assert.h> 10*61046927SAndroid Build Coastguard Worker #include <getopt.h> 11*61046927SAndroid Build Coastguard Worker #include <inttypes.h> 12*61046927SAndroid Build Coastguard Worker #include <stdarg.h> 13*61046927SAndroid Build Coastguard Worker #include <stdbool.h> 14*61046927SAndroid Build Coastguard Worker #include <stdint.h> 15*61046927SAndroid Build Coastguard Worker #include <stdio.h> 16*61046927SAndroid Build Coastguard Worker #include <stdlib.h> 17*61046927SAndroid Build Coastguard Worker #include <string.h> 18*61046927SAndroid Build Coastguard Worker #include <unistd.h> 19*61046927SAndroid Build Coastguard Worker 20*61046927SAndroid Build Coastguard Worker #include "freedreno_pm4.h" 21*61046927SAndroid Build Coastguard Worker 22*61046927SAndroid Build Coastguard Worker #include "ir3/instr-a3xx.h" 23*61046927SAndroid Build Coastguard Worker #include "buffers.h" 24*61046927SAndroid Build Coastguard Worker #include "cffdec.h" 25*61046927SAndroid Build Coastguard Worker #include "disasm.h" 26*61046927SAndroid Build Coastguard Worker #include "pager.h" 27*61046927SAndroid Build Coastguard Worker #include "rnnutil.h" 28*61046927SAndroid Build Coastguard Worker #include "util.h" 29*61046927SAndroid Build Coastguard Worker 30*61046927SAndroid Build Coastguard Worker extern struct rnn *rnn_gmu; 31*61046927SAndroid Build Coastguard Worker extern struct rnn *rnn_control; 32*61046927SAndroid Build Coastguard Worker extern struct rnn *rnn_pipe; 33*61046927SAndroid Build Coastguard Worker 34*61046927SAndroid Build Coastguard Worker extern bool verbose; 35*61046927SAndroid Build Coastguard Worker 36*61046927SAndroid Build Coastguard Worker extern struct cffdec_options options; 37*61046927SAndroid Build Coastguard Worker 38*61046927SAndroid Build Coastguard Worker static inline bool have_rem_info(void)39*61046927SAndroid Build Coastguard Workerhave_rem_info(void) 40*61046927SAndroid Build Coastguard Worker { 41*61046927SAndroid Build Coastguard Worker return options.info->chip == 6 || options.info->chip == 7; 42*61046927SAndroid Build Coastguard Worker } 43*61046927SAndroid Build Coastguard Worker 44*61046927SAndroid Build Coastguard Worker static inline bool is_a7xx(void)45*61046927SAndroid Build Coastguard Workeris_a7xx(void) 46*61046927SAndroid Build Coastguard Worker { 47*61046927SAndroid Build Coastguard Worker return options.info->chip == 7; 48*61046927SAndroid Build Coastguard Worker } 49*61046927SAndroid Build Coastguard Worker 50*61046927SAndroid Build Coastguard Worker static inline bool is_a6xx(void)51*61046927SAndroid Build Coastguard Workeris_a6xx(void) 52*61046927SAndroid Build Coastguard Worker { 53*61046927SAndroid Build Coastguard Worker return options.info->chip == 6; 54*61046927SAndroid Build Coastguard Worker } 55*61046927SAndroid Build Coastguard Worker 56*61046927SAndroid Build Coastguard Worker static inline bool is_a5xx(void)57*61046927SAndroid Build Coastguard Workeris_a5xx(void) 58*61046927SAndroid Build Coastguard Worker { 59*61046927SAndroid Build Coastguard Worker return options.info->chip == 5; 60*61046927SAndroid Build Coastguard Worker } 61*61046927SAndroid Build Coastguard Worker 62*61046927SAndroid Build Coastguard Worker static inline bool is_64b(void)63*61046927SAndroid Build Coastguard Workeris_64b(void) 64*61046927SAndroid Build Coastguard Worker { 65*61046927SAndroid Build Coastguard Worker return options.info->chip >= 5; 66*61046927SAndroid Build Coastguard Worker } 67*61046927SAndroid Build Coastguard Worker 68*61046927SAndroid Build Coastguard Worker static inline bool is_gmu_legacy(void)69*61046927SAndroid Build Coastguard Workeris_gmu_legacy(void) 70*61046927SAndroid Build Coastguard Worker { 71*61046927SAndroid Build Coastguard Worker switch (options.dev_id.gpu_id) { 72*61046927SAndroid Build Coastguard Worker case 615: 73*61046927SAndroid Build Coastguard Worker case 618: 74*61046927SAndroid Build Coastguard Worker case 630: 75*61046927SAndroid Build Coastguard Worker return true; 76*61046927SAndroid Build Coastguard Worker default: 77*61046927SAndroid Build Coastguard Worker return false; 78*61046927SAndroid Build Coastguard Worker } 79*61046927SAndroid Build Coastguard Worker } 80*61046927SAndroid Build Coastguard Worker 81*61046927SAndroid Build Coastguard Worker void dump_register(struct regacc *r); 82*61046927SAndroid Build Coastguard Worker void dump_cp_mem_pool(uint32_t *mempool); 83*61046927SAndroid Build Coastguard Worker void handle_prefetch(uint32_t *dwords, uint32_t sizedwords); 84*61046927SAndroid Build Coastguard Worker 85*61046927SAndroid Build Coastguard Worker struct a6xx_hfi_state { 86*61046927SAndroid Build Coastguard Worker uint64_t iova; 87*61046927SAndroid Build Coastguard Worker void *buf; 88*61046927SAndroid Build Coastguard Worker uint32_t size; 89*61046927SAndroid Build Coastguard Worker int32_t history[2][8]; 90*61046927SAndroid Build Coastguard Worker }; 91*61046927SAndroid Build Coastguard Worker void dump_gmu_hfi(struct a6xx_hfi_state *hfi); 92*61046927SAndroid Build Coastguard Worker 93*61046927SAndroid Build Coastguard Worker #endif /* __CRASHDEC_H__ */ 94