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