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 _UTIL_H_
7*61046927SAndroid Build Coastguard Worker #define _UTIL_H_
8*61046927SAndroid Build Coastguard Worker
9*61046927SAndroid Build Coastguard Worker #include <stdbool.h>
10*61046927SAndroid Build Coastguard Worker
11*61046927SAndroid Build Coastguard Worker /*
12*61046927SAndroid Build Coastguard Worker * AFUC disasm / asm helpers
13*61046927SAndroid Build Coastguard Worker */
14*61046927SAndroid Build Coastguard Worker
15*61046927SAndroid Build Coastguard Worker unsigned afuc_control_reg(const char *name);
16*61046927SAndroid Build Coastguard Worker char * afuc_control_reg_name(unsigned id);
17*61046927SAndroid Build Coastguard Worker
18*61046927SAndroid Build Coastguard Worker unsigned afuc_sqe_reg(const char *name);
19*61046927SAndroid Build Coastguard Worker char * afuc_sqe_reg_name(unsigned id);
20*61046927SAndroid Build Coastguard Worker
21*61046927SAndroid Build Coastguard Worker unsigned afuc_pipe_reg(const char *name);
22*61046927SAndroid Build Coastguard Worker char * afuc_pipe_reg_name(unsigned id);
23*61046927SAndroid Build Coastguard Worker bool afuc_pipe_reg_is_void(unsigned id);
24*61046927SAndroid Build Coastguard Worker
25*61046927SAndroid Build Coastguard Worker unsigned afuc_gpu_reg(const char *name);
26*61046927SAndroid Build Coastguard Worker char * afuc_gpu_reg_name(unsigned id);
27*61046927SAndroid Build Coastguard Worker
28*61046927SAndroid Build Coastguard Worker unsigned afuc_gpr_reg(const char *name);
29*61046927SAndroid Build Coastguard Worker
30*61046927SAndroid Build Coastguard Worker int afuc_pm4_id(const char *name);
31*61046927SAndroid Build Coastguard Worker const char * afuc_pm_id_name(unsigned id);
32*61046927SAndroid Build Coastguard Worker
33*61046927SAndroid Build Coastguard Worker enum afuc_color {
34*61046927SAndroid Build Coastguard Worker AFUC_ERR,
35*61046927SAndroid Build Coastguard Worker AFUC_LBL,
36*61046927SAndroid Build Coastguard Worker };
37*61046927SAndroid Build Coastguard Worker
38*61046927SAndroid Build Coastguard Worker void afuc_printc(enum afuc_color c, const char *fmt, ...);
39*61046927SAndroid Build Coastguard Worker
40*61046927SAndroid Build Coastguard Worker enum afuc_fwid {
41*61046927SAndroid Build Coastguard Worker AFUC_A730 = 0x730,
42*61046927SAndroid Build Coastguard Worker AFUC_A740 = 0x740,
43*61046927SAndroid Build Coastguard Worker AFUC_A750 = 0x520,
44*61046927SAndroid Build Coastguard Worker
45*61046927SAndroid Build Coastguard Worker AFUC_A630 = 0x6ee,
46*61046927SAndroid Build Coastguard Worker AFUC_A650 = 0x6dc,
47*61046927SAndroid Build Coastguard Worker AFUC_A660 = 0x6dd,
48*61046927SAndroid Build Coastguard Worker
49*61046927SAndroid Build Coastguard Worker AFUC_A530 = 0x5ff,
50*61046927SAndroid Build Coastguard Worker };
51*61046927SAndroid Build Coastguard Worker
52*61046927SAndroid Build Coastguard Worker static inline enum afuc_fwid
afuc_get_fwid(uint32_t first_dword)53*61046927SAndroid Build Coastguard Worker afuc_get_fwid(uint32_t first_dword)
54*61046927SAndroid Build Coastguard Worker {
55*61046927SAndroid Build Coastguard Worker /* The firmware ID is in bits 12-24 of the first dword */
56*61046927SAndroid Build Coastguard Worker return (first_dword >> 12) & 0xfff;
57*61046927SAndroid Build Coastguard Worker }
58*61046927SAndroid Build Coastguard Worker
59*61046927SAndroid Build Coastguard Worker int afuc_util_init(enum afuc_fwid fw_id, int *gpuver, bool colors);
60*61046927SAndroid Build Coastguard Worker
61*61046927SAndroid Build Coastguard Worker #endif /* _UTIL_H_ */
62