xref: /linux/drivers/accel/habanalabs/gaudi2/gaudi2_coresight.c (revision 576d7fed09c7edbae7600f29a8a3ed6c1ead904f)
1 // SPDX-License-Identifier: GPL-2.0
2 
3 /*
4  * Copyright 2019-2022 HabanaLabs, Ltd.
5  * All Rights Reserved.
6  */
7 #include "gaudi2_coresight_regs.h"
8 #include <uapi/drm/habanalabs_accel.h>
9 
10 #define GAUDI2_PLDM_CORESIGHT_TIMEOUT_USEC	(CORESIGHT_TIMEOUT_USEC * 2000)
11 #define SPMU_MAX_COUNTERS			6
12 
13 #define COMPONENT_ID_INVALID ((u32)(-1))
14 #define MAX_BMONS_PER_UNIT 8
15 
16 enum gaudi2_hif_hmmu_id {
17 	HMMU_ID_DCORE0_HMMU0,
18 	HMMU_ID_DCORE0_HMMU1,
19 	HMMU_ID_DCORE0_HMMU2,
20 	HMMU_ID_DCORE0_HMMU3,
21 	HMMU_ID_DCORE1_HMMU0,
22 	HMMU_ID_DCORE1_HMMU1,
23 	HMMU_ID_DCORE1_HMMU2,
24 	HMMU_ID_DCORE1_HMMU3,
25 	HMMU_ID_DCORE2_HMMU0,
26 	HMMU_ID_DCORE2_HMMU1,
27 	HMMU_ID_DCORE2_HMMU2,
28 	HMMU_ID_DCORE2_HMMU3,
29 	HMMU_ID_DCORE3_HMMU0,
30 	HMMU_ID_DCORE3_HMMU1,
31 	HMMU_ID_DCORE3_HMMU2,
32 	HMMU_ID_DCORE3_HMMU3,
33 	HMMU_ID_SIZE,
34 };
35 
36 enum gaudi2_xbar_edge_id {
37 	XBAR_EDGE_ID_DCORE0,
38 	XBAR_EDGE_ID_DCORE1,
39 	XBAR_EDGE_ID_DCORE2,
40 	XBAR_EDGE_ID_DCORE3,
41 	XBAR_EDGE_ID_SIZE
42 };
43 
44 /**
45  * struct component_config_offsets - per cs_dbg unit - view off all related components indices
46  * @funnel_id: funnel id - index in debug_funnel_regs
47  * @etf_id: etf id - index in debug_etf_regs
48  * @stm_id: stm id - index in debug_stm_regs
49  * @spmu_id: spmu_id - index in debug_spmu_regs
50  * @bmon_count: number of bmons per unit
51  * @bmon_ids: array of bmon id (max size - MAX_BMONS_PER_UNIT) index in debug_bmon_regs
52  */
53 struct component_config_offsets {
54 	u32 funnel_id;
55 	u32 etf_id;
56 	u32 stm_id;
57 	u32 spmu_id;
58 	u32 bmon_count;
59 	u32 bmon_ids[MAX_BMONS_PER_UNIT];
60 };
61 
62 static u64 debug_stm_regs[GAUDI2_STM_LAST + 1] = {
63 	[GAUDI2_STM_DCORE0_TPC0_EML] = mmDCORE0_TPC0_EML_STM_BASE,
64 	[GAUDI2_STM_DCORE0_TPC1_EML] = mmDCORE0_TPC1_EML_STM_BASE,
65 	[GAUDI2_STM_DCORE0_TPC2_EML] = mmDCORE0_TPC2_EML_STM_BASE,
66 	[GAUDI2_STM_DCORE0_TPC3_EML] = mmDCORE0_TPC3_EML_STM_BASE,
67 	[GAUDI2_STM_DCORE0_TPC4_EML] = mmDCORE0_TPC4_EML_STM_BASE,
68 	[GAUDI2_STM_DCORE0_TPC5_EML] = mmDCORE0_TPC5_EML_STM_BASE,
69 	[GAUDI2_STM_DCORE0_TPC6_EML] = mmDCORE0_TPC6_EML_STM_BASE,
70 	[GAUDI2_STM_DCORE1_TPC0_EML] = mmDCORE1_TPC0_EML_STM_BASE,
71 	[GAUDI2_STM_DCORE1_TPC1_EML] = mmDCORE1_TPC1_EML_STM_BASE,
72 	[GAUDI2_STM_DCORE1_TPC2_EML] = mmDCORE1_TPC2_EML_STM_BASE,
73 	[GAUDI2_STM_DCORE1_TPC3_EML] = mmDCORE1_TPC3_EML_STM_BASE,
74 	[GAUDI2_STM_DCORE1_TPC4_EML] = mmDCORE1_TPC4_EML_STM_BASE,
75 	[GAUDI2_STM_DCORE1_TPC5_EML] = mmDCORE1_TPC5_EML_STM_BASE,
76 	[GAUDI2_STM_DCORE2_TPC0_EML] = mmDCORE2_TPC0_EML_STM_BASE,
77 	[GAUDI2_STM_DCORE2_TPC1_EML] = mmDCORE2_TPC1_EML_STM_BASE,
78 	[GAUDI2_STM_DCORE2_TPC2_EML] = mmDCORE2_TPC2_EML_STM_BASE,
79 	[GAUDI2_STM_DCORE2_TPC3_EML] = mmDCORE2_TPC3_EML_STM_BASE,
80 	[GAUDI2_STM_DCORE2_TPC4_EML] = mmDCORE2_TPC4_EML_STM_BASE,
81 	[GAUDI2_STM_DCORE2_TPC5_EML] = mmDCORE2_TPC5_EML_STM_BASE,
82 	[GAUDI2_STM_DCORE3_TPC0_EML] = mmDCORE3_TPC0_EML_STM_BASE,
83 	[GAUDI2_STM_DCORE3_TPC1_EML] = mmDCORE3_TPC1_EML_STM_BASE,
84 	[GAUDI2_STM_DCORE3_TPC2_EML] = mmDCORE3_TPC2_EML_STM_BASE,
85 	[GAUDI2_STM_DCORE3_TPC3_EML] = mmDCORE3_TPC3_EML_STM_BASE,
86 	[GAUDI2_STM_DCORE3_TPC4_EML] = mmDCORE3_TPC4_EML_STM_BASE,
87 	[GAUDI2_STM_DCORE3_TPC5_EML] = mmDCORE3_TPC5_EML_STM_BASE,
88 	[GAUDI2_STM_DCORE0_HMMU0_CS] = mmDCORE0_HMMU0_CS_STM_BASE,
89 	[GAUDI2_STM_DCORE0_HMMU1_CS] = mmDCORE0_HMMU1_CS_STM_BASE,
90 	[GAUDI2_STM_DCORE0_HMMU2_CS] = mmDCORE0_HMMU2_CS_STM_BASE,
91 	[GAUDI2_STM_DCORE0_HMMU3_CS] = mmDCORE0_HMMU3_CS_STM_BASE,
92 	[GAUDI2_STM_DCORE0_MME_CTRL] = mmDCORE0_MME_CTRL_STM_BASE,
93 	[GAUDI2_STM_DCORE0_MME_SBTE0] = mmDCORE0_MME_SBTE0_STM_BASE,
94 	[GAUDI2_STM_DCORE0_MME_SBTE1] = mmDCORE0_MME_SBTE1_STM_BASE,
95 	[GAUDI2_STM_DCORE0_MME_SBTE2] = mmDCORE0_MME_SBTE2_STM_BASE,
96 	[GAUDI2_STM_DCORE0_MME_SBTE3] = mmDCORE0_MME_SBTE3_STM_BASE,
97 	[GAUDI2_STM_DCORE0_MME_SBTE4] = mmDCORE0_MME_SBTE4_STM_BASE,
98 	[GAUDI2_STM_DCORE0_MME_ACC] = mmDCORE0_MME_ACC_STM_BASE,
99 	[GAUDI2_STM_DCORE0_SM] = mmDCORE0_SM_STM_BASE,
100 	[GAUDI2_STM_DCORE0_EDMA0_CS] = mmDCORE0_EDMA0_CS_STM_BASE,
101 	[GAUDI2_STM_DCORE0_EDMA1_CS] = mmDCORE0_EDMA1_CS_STM_BASE,
102 	[GAUDI2_STM_DCORE0_VDEC0_CS] = mmDCORE0_VDEC0_CS_STM_BASE,
103 	[GAUDI2_STM_DCORE0_VDEC1_CS] = mmDCORE0_VDEC1_CS_STM_BASE,
104 	[GAUDI2_STM_DCORE1_HMMU0_CS] = mmDCORE1_HMMU0_CS_STM_BASE,
105 	[GAUDI2_STM_DCORE1_HMMU1_CS] = mmDCORE1_HMMU1_CS_STM_BASE,
106 	[GAUDI2_STM_DCORE1_HMMU2_CS] = mmDCORE1_HMMU2_CS_STM_BASE,
107 	[GAUDI2_STM_DCORE1_HMMU3_CS] = mmDCORE1_HMMU3_CS_STM_BASE,
108 	[GAUDI2_STM_DCORE1_MME_CTRL] = mmDCORE1_MME_CTRL_STM_BASE,
109 	[GAUDI2_STM_DCORE1_MME_SBTE0] = mmDCORE1_MME_SBTE0_STM_BASE,
110 	[GAUDI2_STM_DCORE1_MME_SBTE1] = mmDCORE1_MME_SBTE1_STM_BASE,
111 	[GAUDI2_STM_DCORE1_MME_SBTE2] = mmDCORE1_MME_SBTE2_STM_BASE,
112 	[GAUDI2_STM_DCORE1_MME_SBTE3] = mmDCORE1_MME_SBTE3_STM_BASE,
113 	[GAUDI2_STM_DCORE1_MME_SBTE4] = mmDCORE1_MME_SBTE4_STM_BASE,
114 	[GAUDI2_STM_DCORE1_MME_ACC] = mmDCORE1_MME_ACC_STM_BASE,
115 	[GAUDI2_STM_DCORE1_SM] = mmDCORE1_SM_STM_BASE,
116 	[GAUDI2_STM_DCORE1_EDMA0_CS] = mmDCORE1_EDMA0_CS_STM_BASE,
117 	[GAUDI2_STM_DCORE1_EDMA1_CS] = mmDCORE1_EDMA1_CS_STM_BASE,
118 	[GAUDI2_STM_DCORE1_VDEC0_CS] = mmDCORE1_VDEC0_CS_STM_BASE,
119 	[GAUDI2_STM_DCORE1_VDEC1_CS] = mmDCORE1_VDEC1_CS_STM_BASE,
120 	[GAUDI2_STM_DCORE2_HMMU0_CS] = mmDCORE2_HMMU0_CS_STM_BASE,
121 	[GAUDI2_STM_DCORE2_HMMU1_CS] = mmDCORE2_HMMU1_CS_STM_BASE,
122 	[GAUDI2_STM_DCORE2_HMMU2_CS] = mmDCORE2_HMMU2_CS_STM_BASE,
123 	[GAUDI2_STM_DCORE2_HMMU3_CS] = mmDCORE2_HMMU3_CS_STM_BASE,
124 	[GAUDI2_STM_DCORE2_MME_CTRL] = mmDCORE2_MME_CTRL_STM_BASE,
125 	[GAUDI2_STM_DCORE2_MME_SBTE0] = mmDCORE2_MME_SBTE0_STM_BASE,
126 	[GAUDI2_STM_DCORE2_MME_SBTE1] = mmDCORE2_MME_SBTE1_STM_BASE,
127 	[GAUDI2_STM_DCORE2_MME_SBTE2] = mmDCORE2_MME_SBTE2_STM_BASE,
128 	[GAUDI2_STM_DCORE2_MME_SBTE3] = mmDCORE2_MME_SBTE3_STM_BASE,
129 	[GAUDI2_STM_DCORE2_MME_SBTE4] = mmDCORE2_MME_SBTE4_STM_BASE,
130 	[GAUDI2_STM_DCORE2_MME_ACC] = mmDCORE2_MME_ACC_STM_BASE,
131 	[GAUDI2_STM_DCORE2_SM] = mmDCORE2_SM_STM_BASE,
132 	[GAUDI2_STM_DCORE2_EDMA0_CS] = mmDCORE2_EDMA0_CS_STM_BASE,
133 	[GAUDI2_STM_DCORE2_EDMA1_CS] = mmDCORE2_EDMA1_CS_STM_BASE,
134 	[GAUDI2_STM_DCORE2_VDEC0_CS] = mmDCORE2_VDEC0_CS_STM_BASE,
135 	[GAUDI2_STM_DCORE2_VDEC1_CS] = mmDCORE2_VDEC1_CS_STM_BASE,
136 	[GAUDI2_STM_DCORE3_HMMU0_CS] = mmDCORE3_HMMU0_CS_STM_BASE,
137 	[GAUDI2_STM_DCORE3_HMMU1_CS] = mmDCORE3_HMMU1_CS_STM_BASE,
138 	[GAUDI2_STM_DCORE3_HMMU2_CS] = mmDCORE3_HMMU2_CS_STM_BASE,
139 	[GAUDI2_STM_DCORE3_HMMU3_CS] = mmDCORE3_HMMU3_CS_STM_BASE,
140 	[GAUDI2_STM_DCORE3_MME_CTRL] = mmDCORE3_MME_CTRL_STM_BASE,
141 	[GAUDI2_STM_DCORE3_MME_SBTE0] = mmDCORE3_MME_SBTE0_STM_BASE,
142 	[GAUDI2_STM_DCORE3_MME_SBTE1] = mmDCORE3_MME_SBTE1_STM_BASE,
143 	[GAUDI2_STM_DCORE3_MME_SBTE2] = mmDCORE3_MME_SBTE2_STM_BASE,
144 	[GAUDI2_STM_DCORE3_MME_SBTE3] = mmDCORE3_MME_SBTE3_STM_BASE,
145 	[GAUDI2_STM_DCORE3_MME_SBTE4] = mmDCORE3_MME_SBTE4_STM_BASE,
146 	[GAUDI2_STM_DCORE3_MME_ACC] = mmDCORE3_MME_ACC_STM_BASE,
147 	[GAUDI2_STM_DCORE3_SM] = mmDCORE3_SM_STM_BASE,
148 	[GAUDI2_STM_DCORE3_EDMA0_CS] = mmDCORE3_EDMA0_CS_STM_BASE,
149 	[GAUDI2_STM_DCORE3_EDMA1_CS] = mmDCORE3_EDMA1_CS_STM_BASE,
150 	[GAUDI2_STM_DCORE3_VDEC0_CS] = mmDCORE3_VDEC0_CS_STM_BASE,
151 	[GAUDI2_STM_DCORE3_VDEC1_CS] = mmDCORE3_VDEC1_CS_STM_BASE,
152 	[GAUDI2_STM_PCIE] = mmPCIE_STM_BASE,
153 	[GAUDI2_STM_PSOC] = mmPSOC_STM_BASE,
154 	[GAUDI2_STM_PSOC_ARC0_CS] = 0,
155 	[GAUDI2_STM_PSOC_ARC1_CS] = 0,
156 	[GAUDI2_STM_PDMA0_CS] = mmPDMA0_CS_STM_BASE,
157 	[GAUDI2_STM_PDMA1_CS] = mmPDMA1_CS_STM_BASE,
158 	[GAUDI2_STM_CPU] = mmCPU_STM_BASE,
159 	[GAUDI2_STM_PMMU_CS] = mmPMMU_CS_STM_BASE,
160 	[GAUDI2_STM_ROT0_CS] = mmROT0_CS_STM_BASE,
161 	[GAUDI2_STM_ROT1_CS] = mmROT1_CS_STM_BASE,
162 	[GAUDI2_STM_ARC_FARM_CS] = mmARC_FARM_CS_STM_BASE,
163 	[GAUDI2_STM_KDMA_CS] = mmKDMA_CS_STM_BASE,
164 	[GAUDI2_STM_PCIE_VDEC0_CS] = mmPCIE_VDEC0_CS_STM_BASE,
165 	[GAUDI2_STM_PCIE_VDEC1_CS] = mmPCIE_VDEC1_CS_STM_BASE,
166 	[GAUDI2_STM_HBM0_MC0_CS] = mmHBM0_MC0_CS_STM_BASE,
167 	[GAUDI2_STM_HBM0_MC1_CS] = mmHBM0_MC1_CS_STM_BASE,
168 	[GAUDI2_STM_HBM1_MC0_CS] = mmHBM1_MC0_CS_STM_BASE,
169 	[GAUDI2_STM_HBM1_MC1_CS] = mmHBM1_MC1_CS_STM_BASE,
170 	[GAUDI2_STM_HBM2_MC0_CS] = mmHBM2_MC0_CS_STM_BASE,
171 	[GAUDI2_STM_HBM2_MC1_CS] = mmHBM2_MC1_CS_STM_BASE,
172 	[GAUDI2_STM_HBM3_MC0_CS] = mmHBM3_MC0_CS_STM_BASE,
173 	[GAUDI2_STM_HBM3_MC1_CS] = mmHBM3_MC1_CS_STM_BASE,
174 	[GAUDI2_STM_HBM4_MC0_CS] = mmHBM4_MC0_CS_STM_BASE,
175 	[GAUDI2_STM_HBM4_MC1_CS] = mmHBM4_MC1_CS_STM_BASE,
176 	[GAUDI2_STM_HBM5_MC0_CS] = mmHBM5_MC0_CS_STM_BASE,
177 	[GAUDI2_STM_HBM5_MC1_CS] = mmHBM5_MC1_CS_STM_BASE,
178 	[GAUDI2_STM_NIC0_DBG_0] = mmNIC0_DBG_STM_0_BASE,
179 	[GAUDI2_STM_NIC0_DBG_1] = mmNIC0_DBG_STM_1_BASE,
180 	[GAUDI2_STM_NIC1_DBG_0] = mmNIC1_DBG_STM_0_BASE,
181 	[GAUDI2_STM_NIC1_DBG_1] = mmNIC1_DBG_STM_1_BASE,
182 	[GAUDI2_STM_NIC2_DBG_0] = mmNIC2_DBG_STM_0_BASE,
183 	[GAUDI2_STM_NIC2_DBG_1] = mmNIC2_DBG_STM_1_BASE,
184 	[GAUDI2_STM_NIC3_DBG_0] = mmNIC3_DBG_STM_0_BASE,
185 	[GAUDI2_STM_NIC3_DBG_1] = mmNIC3_DBG_STM_1_BASE,
186 	[GAUDI2_STM_NIC4_DBG_0] = mmNIC4_DBG_STM_0_BASE,
187 	[GAUDI2_STM_NIC4_DBG_1] = mmNIC4_DBG_STM_1_BASE,
188 	[GAUDI2_STM_NIC5_DBG_0] = mmNIC5_DBG_STM_0_BASE,
189 	[GAUDI2_STM_NIC5_DBG_1] = mmNIC5_DBG_STM_1_BASE,
190 	[GAUDI2_STM_NIC6_DBG_0] = mmNIC6_DBG_STM_0_BASE,
191 	[GAUDI2_STM_NIC6_DBG_1] = mmNIC6_DBG_STM_1_BASE,
192 	[GAUDI2_STM_NIC7_DBG_0] = mmNIC7_DBG_STM_0_BASE,
193 	[GAUDI2_STM_NIC7_DBG_1] = mmNIC7_DBG_STM_1_BASE,
194 	[GAUDI2_STM_NIC8_DBG_0] = mmNIC8_DBG_STM_0_BASE,
195 	[GAUDI2_STM_NIC8_DBG_1] = mmNIC8_DBG_STM_1_BASE,
196 	[GAUDI2_STM_NIC9_DBG_0] = mmNIC9_DBG_STM_0_BASE,
197 	[GAUDI2_STM_NIC9_DBG_1] = mmNIC9_DBG_STM_1_BASE,
198 	[GAUDI2_STM_NIC10_DBG_0] = mmNIC10_DBG_STM_0_BASE,
199 	[GAUDI2_STM_NIC10_DBG_1] = mmNIC10_DBG_STM_1_BASE,
200 	[GAUDI2_STM_NIC11_DBG_0] = mmNIC11_DBG_STM_0_BASE,
201 	[GAUDI2_STM_NIC11_DBG_1] = mmNIC11_DBG_STM_1_BASE
202 };
203 
204 static u64 debug_etf_regs[GAUDI2_ETF_LAST + 1] = {
205 	[GAUDI2_ETF_DCORE0_TPC0_EML] = mmDCORE0_TPC0_EML_ETF_BASE,
206 	[GAUDI2_ETF_DCORE0_TPC1_EML] = mmDCORE0_TPC1_EML_ETF_BASE,
207 	[GAUDI2_ETF_DCORE0_TPC2_EML] = mmDCORE0_TPC2_EML_ETF_BASE,
208 	[GAUDI2_ETF_DCORE0_TPC3_EML] = mmDCORE0_TPC3_EML_ETF_BASE,
209 	[GAUDI2_ETF_DCORE0_TPC4_EML] = mmDCORE0_TPC4_EML_ETF_BASE,
210 	[GAUDI2_ETF_DCORE0_TPC5_EML] = mmDCORE0_TPC5_EML_ETF_BASE,
211 	[GAUDI2_ETF_DCORE0_TPC6_EML] = mmDCORE0_TPC6_EML_ETF_BASE,
212 	[GAUDI2_ETF_DCORE1_TPC0_EML] = mmDCORE1_TPC0_EML_ETF_BASE,
213 	[GAUDI2_ETF_DCORE1_TPC1_EML] = mmDCORE1_TPC1_EML_ETF_BASE,
214 	[GAUDI2_ETF_DCORE1_TPC2_EML] = mmDCORE1_TPC2_EML_ETF_BASE,
215 	[GAUDI2_ETF_DCORE1_TPC3_EML] = mmDCORE1_TPC3_EML_ETF_BASE,
216 	[GAUDI2_ETF_DCORE1_TPC4_EML] = mmDCORE1_TPC4_EML_ETF_BASE,
217 	[GAUDI2_ETF_DCORE1_TPC5_EML] = mmDCORE1_TPC5_EML_ETF_BASE,
218 	[GAUDI2_ETF_DCORE2_TPC0_EML] = mmDCORE2_TPC0_EML_ETF_BASE,
219 	[GAUDI2_ETF_DCORE2_TPC1_EML] = mmDCORE2_TPC1_EML_ETF_BASE,
220 	[GAUDI2_ETF_DCORE2_TPC2_EML] = mmDCORE2_TPC2_EML_ETF_BASE,
221 	[GAUDI2_ETF_DCORE2_TPC3_EML] = mmDCORE2_TPC3_EML_ETF_BASE,
222 	[GAUDI2_ETF_DCORE2_TPC4_EML] = mmDCORE2_TPC4_EML_ETF_BASE,
223 	[GAUDI2_ETF_DCORE2_TPC5_EML] = mmDCORE2_TPC5_EML_ETF_BASE,
224 	[GAUDI2_ETF_DCORE3_TPC0_EML] = mmDCORE3_TPC0_EML_ETF_BASE,
225 	[GAUDI2_ETF_DCORE3_TPC1_EML] = mmDCORE3_TPC1_EML_ETF_BASE,
226 	[GAUDI2_ETF_DCORE3_TPC2_EML] = mmDCORE3_TPC2_EML_ETF_BASE,
227 	[GAUDI2_ETF_DCORE3_TPC3_EML] = mmDCORE3_TPC3_EML_ETF_BASE,
228 	[GAUDI2_ETF_DCORE3_TPC4_EML] = mmDCORE3_TPC4_EML_ETF_BASE,
229 	[GAUDI2_ETF_DCORE3_TPC5_EML] = mmDCORE3_TPC5_EML_ETF_BASE,
230 	[GAUDI2_ETF_DCORE0_HMMU0_CS] = mmDCORE0_HMMU0_CS_ETF_BASE,
231 	[GAUDI2_ETF_DCORE0_HMMU1_CS] = mmDCORE0_HMMU1_CS_ETF_BASE,
232 	[GAUDI2_ETF_DCORE0_HMMU2_CS] = mmDCORE0_HMMU2_CS_ETF_BASE,
233 	[GAUDI2_ETF_DCORE0_HMMU3_CS] = mmDCORE0_HMMU3_CS_ETF_BASE,
234 	[GAUDI2_ETF_DCORE0_MME_CTRL] = mmDCORE0_MME_CTRL_ETF_BASE,
235 	[GAUDI2_ETF_DCORE0_MME_SBTE0] = mmDCORE0_MME_SBTE0_ETF_BASE,
236 	[GAUDI2_ETF_DCORE0_MME_SBTE1] = mmDCORE0_MME_SBTE1_ETF_BASE,
237 	[GAUDI2_ETF_DCORE0_MME_SBTE2] = mmDCORE0_MME_SBTE2_ETF_BASE,
238 	[GAUDI2_ETF_DCORE0_MME_SBTE3] = mmDCORE0_MME_SBTE3_ETF_BASE,
239 	[GAUDI2_ETF_DCORE0_MME_SBTE4] = mmDCORE0_MME_SBTE4_ETF_BASE,
240 	[GAUDI2_ETF_DCORE0_MME_ACC] = mmDCORE0_MME_ACC_ETF_BASE,
241 	[GAUDI2_ETF_DCORE0_SM] = mmDCORE0_SM_ETF_BASE,
242 	[GAUDI2_ETF_DCORE0_EDMA0_CS] = mmDCORE0_EDMA0_CS_ETF_BASE,
243 	[GAUDI2_ETF_DCORE0_EDMA1_CS] = mmDCORE0_EDMA1_CS_ETF_BASE,
244 	[GAUDI2_ETF_DCORE0_VDEC0_CS] = mmDCORE0_VDEC0_CS_ETF_BASE,
245 	[GAUDI2_ETF_DCORE0_VDEC1_CS] = mmDCORE0_VDEC1_CS_ETF_BASE,
246 	[GAUDI2_ETF_DCORE1_HMMU0_CS] = mmDCORE1_HMMU0_CS_ETF_BASE,
247 	[GAUDI2_ETF_DCORE1_HMMU1_CS] = mmDCORE1_HMMU1_CS_ETF_BASE,
248 	[GAUDI2_ETF_DCORE1_HMMU2_CS] = mmDCORE1_HMMU2_CS_ETF_BASE,
249 	[GAUDI2_ETF_DCORE1_HMMU3_CS] = mmDCORE1_HMMU3_CS_ETF_BASE,
250 	[GAUDI2_ETF_DCORE1_MME_CTRL] = mmDCORE1_MME_CTRL_ETF_BASE,
251 	[GAUDI2_ETF_DCORE1_MME_SBTE0] = mmDCORE1_MME_SBTE0_ETF_BASE,
252 	[GAUDI2_ETF_DCORE1_MME_SBTE1] = mmDCORE1_MME_SBTE1_ETF_BASE,
253 	[GAUDI2_ETF_DCORE1_MME_SBTE2] = mmDCORE1_MME_SBTE2_ETF_BASE,
254 	[GAUDI2_ETF_DCORE1_MME_SBTE3] = mmDCORE1_MME_SBTE3_ETF_BASE,
255 	[GAUDI2_ETF_DCORE1_MME_SBTE4] = mmDCORE1_MME_SBTE4_ETF_BASE,
256 	[GAUDI2_ETF_DCORE1_MME_ACC] = mmDCORE1_MME_ACC_ETF_BASE,
257 	[GAUDI2_ETF_DCORE1_SM] = mmDCORE1_SM_ETF_BASE,
258 	[GAUDI2_ETF_DCORE1_EDMA0_CS] = mmDCORE1_EDMA0_CS_ETF_BASE,
259 	[GAUDI2_ETF_DCORE1_EDMA1_CS] = mmDCORE1_EDMA1_CS_ETF_BASE,
260 	[GAUDI2_ETF_DCORE1_VDEC0_CS] = mmDCORE1_VDEC0_CS_ETF_BASE,
261 	[GAUDI2_ETF_DCORE1_VDEC1_CS] = mmDCORE1_VDEC1_CS_ETF_BASE,
262 	[GAUDI2_ETF_DCORE2_HMMU0_CS] = mmDCORE2_HMMU0_CS_ETF_BASE,
263 	[GAUDI2_ETF_DCORE2_HMMU1_CS] = mmDCORE2_HMMU1_CS_ETF_BASE,
264 	[GAUDI2_ETF_DCORE2_HMMU2_CS] = mmDCORE2_HMMU2_CS_ETF_BASE,
265 	[GAUDI2_ETF_DCORE2_HMMU3_CS] = mmDCORE2_HMMU3_CS_ETF_BASE,
266 	[GAUDI2_ETF_DCORE2_MME_CTRL] = mmDCORE2_MME_CTRL_ETF_BASE,
267 	[GAUDI2_ETF_DCORE2_MME_SBTE0] = mmDCORE2_MME_SBTE0_ETF_BASE,
268 	[GAUDI2_ETF_DCORE2_MME_SBTE1] = mmDCORE2_MME_SBTE1_ETF_BASE,
269 	[GAUDI2_ETF_DCORE2_MME_SBTE2] = mmDCORE2_MME_SBTE2_ETF_BASE,
270 	[GAUDI2_ETF_DCORE2_MME_SBTE3] = mmDCORE2_MME_SBTE3_ETF_BASE,
271 	[GAUDI2_ETF_DCORE2_MME_SBTE4] = mmDCORE2_MME_SBTE4_ETF_BASE,
272 	[GAUDI2_ETF_DCORE2_MME_ACC] = mmDCORE2_MME_ACC_ETF_BASE,
273 	[GAUDI2_ETF_DCORE2_SM] = mmDCORE2_SM_ETF_BASE,
274 	[GAUDI2_ETF_DCORE2_EDMA0_CS] = mmDCORE2_EDMA0_CS_ETF_BASE,
275 	[GAUDI2_ETF_DCORE2_EDMA1_CS] = mmDCORE2_EDMA1_CS_ETF_BASE,
276 	[GAUDI2_ETF_DCORE2_VDEC0_CS] = mmDCORE2_VDEC0_CS_ETF_BASE,
277 	[GAUDI2_ETF_DCORE2_VDEC1_CS] = mmDCORE2_VDEC1_CS_ETF_BASE,
278 	[GAUDI2_ETF_DCORE3_HMMU0_CS] = mmDCORE3_HMMU0_CS_ETF_BASE,
279 	[GAUDI2_ETF_DCORE3_HMMU1_CS] = mmDCORE3_HMMU1_CS_ETF_BASE,
280 	[GAUDI2_ETF_DCORE3_HMMU2_CS] = mmDCORE3_HMMU2_CS_ETF_BASE,
281 	[GAUDI2_ETF_DCORE3_HMMU3_CS] = mmDCORE3_HMMU3_CS_ETF_BASE,
282 	[GAUDI2_ETF_DCORE3_MME_CTRL] = mmDCORE3_MME_CTRL_ETF_BASE,
283 	[GAUDI2_ETF_DCORE3_MME_SBTE0] = mmDCORE3_MME_SBTE0_ETF_BASE,
284 	[GAUDI2_ETF_DCORE3_MME_SBTE1] = mmDCORE3_MME_SBTE1_ETF_BASE,
285 	[GAUDI2_ETF_DCORE3_MME_SBTE2] = mmDCORE3_MME_SBTE2_ETF_BASE,
286 	[GAUDI2_ETF_DCORE3_MME_SBTE3] = mmDCORE3_MME_SBTE3_ETF_BASE,
287 	[GAUDI2_ETF_DCORE3_MME_SBTE4] = mmDCORE3_MME_SBTE4_ETF_BASE,
288 	[GAUDI2_ETF_DCORE3_MME_ACC] = mmDCORE3_MME_ACC_ETF_BASE,
289 	[GAUDI2_ETF_DCORE3_SM] = mmDCORE3_SM_ETF_BASE,
290 	[GAUDI2_ETF_DCORE3_EDMA0_CS] = mmDCORE3_EDMA0_CS_ETF_BASE,
291 	[GAUDI2_ETF_DCORE3_EDMA1_CS] = mmDCORE3_EDMA1_CS_ETF_BASE,
292 	[GAUDI2_ETF_DCORE3_VDEC0_CS] = mmDCORE3_VDEC0_CS_ETF_BASE,
293 	[GAUDI2_ETF_DCORE3_VDEC1_CS] = mmDCORE3_VDEC1_CS_ETF_BASE,
294 	[GAUDI2_ETF_PCIE] = mmPCIE_ETF_BASE,
295 	[GAUDI2_ETF_PSOC] = mmPSOC_ETF_BASE,
296 	[GAUDI2_ETF_PSOC_ARC0_CS] = 0,
297 	[GAUDI2_ETF_PSOC_ARC1_CS] = 0,
298 	[GAUDI2_ETF_PDMA0_CS] = mmPDMA0_CS_ETF_BASE,
299 	[GAUDI2_ETF_PDMA1_CS] = mmPDMA1_CS_ETF_BASE,
300 	[GAUDI2_ETF_CPU_0] = mmCPU_ETF_0_BASE,
301 	[GAUDI2_ETF_CPU_1] = mmCPU_ETF_1_BASE,
302 	[GAUDI2_ETF_CPU_TRACE] = mmCPU_ETF_TRACE_BASE,
303 	[GAUDI2_ETF_PMMU_CS] = mmPMMU_CS_ETF_BASE,
304 	[GAUDI2_ETF_ROT0_CS] = mmROT0_CS_ETF_BASE,
305 	[GAUDI2_ETF_ROT1_CS] = mmROT1_CS_ETF_BASE,
306 	[GAUDI2_ETF_ARC_FARM_CS] = mmARC_FARM_CS_ETF_BASE,
307 	[GAUDI2_ETF_KDMA_CS] = mmKDMA_CS_ETF_BASE,
308 	[GAUDI2_ETF_PCIE_VDEC0_CS] = mmPCIE_VDEC0_CS_ETF_BASE,
309 	[GAUDI2_ETF_PCIE_VDEC1_CS] = mmPCIE_VDEC1_CS_ETF_BASE,
310 	[GAUDI2_ETF_HBM0_MC0_CS] = mmHBM0_MC0_CS_ETF_BASE,
311 	[GAUDI2_ETF_HBM0_MC1_CS] = mmHBM0_MC1_CS_ETF_BASE,
312 	[GAUDI2_ETF_HBM1_MC0_CS] = mmHBM1_MC0_CS_ETF_BASE,
313 	[GAUDI2_ETF_HBM1_MC1_CS] = mmHBM1_MC1_CS_ETF_BASE,
314 	[GAUDI2_ETF_HBM2_MC0_CS] = mmHBM2_MC0_CS_ETF_BASE,
315 	[GAUDI2_ETF_HBM2_MC1_CS] = mmHBM2_MC1_CS_ETF_BASE,
316 	[GAUDI2_ETF_HBM3_MC0_CS] = mmHBM3_MC0_CS_ETF_BASE,
317 	[GAUDI2_ETF_HBM3_MC1_CS] = mmHBM3_MC1_CS_ETF_BASE,
318 	[GAUDI2_ETF_HBM4_MC0_CS] = mmHBM4_MC0_CS_ETF_BASE,
319 	[GAUDI2_ETF_HBM4_MC1_CS] = mmHBM4_MC1_CS_ETF_BASE,
320 	[GAUDI2_ETF_HBM5_MC0_CS] = mmHBM5_MC0_CS_ETF_BASE,
321 	[GAUDI2_ETF_HBM5_MC1_CS] = mmHBM5_MC1_CS_ETF_BASE,
322 	[GAUDI2_ETF_NIC0_DBG_0] = mmNIC0_DBG_ETF_0_BASE,
323 	[GAUDI2_ETF_NIC0_DBG_1] = mmNIC0_DBG_ETF_1_BASE,
324 	[GAUDI2_ETF_NIC1_DBG_0] = mmNIC1_DBG_ETF_0_BASE,
325 	[GAUDI2_ETF_NIC1_DBG_1] = mmNIC1_DBG_ETF_1_BASE,
326 	[GAUDI2_ETF_NIC2_DBG_0] = mmNIC2_DBG_ETF_0_BASE,
327 	[GAUDI2_ETF_NIC2_DBG_1] = mmNIC2_DBG_ETF_1_BASE,
328 	[GAUDI2_ETF_NIC3_DBG_0] = mmNIC3_DBG_ETF_0_BASE,
329 	[GAUDI2_ETF_NIC3_DBG_1] = mmNIC3_DBG_ETF_1_BASE,
330 	[GAUDI2_ETF_NIC4_DBG_0] = mmNIC4_DBG_ETF_0_BASE,
331 	[GAUDI2_ETF_NIC4_DBG_1] = mmNIC4_DBG_ETF_1_BASE,
332 	[GAUDI2_ETF_NIC5_DBG_0] = mmNIC5_DBG_ETF_0_BASE,
333 	[GAUDI2_ETF_NIC5_DBG_1] = mmNIC5_DBG_ETF_1_BASE,
334 	[GAUDI2_ETF_NIC6_DBG_0] = mmNIC6_DBG_ETF_0_BASE,
335 	[GAUDI2_ETF_NIC6_DBG_1] = mmNIC6_DBG_ETF_1_BASE,
336 	[GAUDI2_ETF_NIC7_DBG_0] = mmNIC7_DBG_ETF_0_BASE,
337 	[GAUDI2_ETF_NIC7_DBG_1] = mmNIC7_DBG_ETF_1_BASE,
338 	[GAUDI2_ETF_NIC8_DBG_0] = mmNIC8_DBG_ETF_0_BASE,
339 	[GAUDI2_ETF_NIC8_DBG_1] = mmNIC8_DBG_ETF_1_BASE,
340 	[GAUDI2_ETF_NIC9_DBG_0] = mmNIC9_DBG_ETF_0_BASE,
341 	[GAUDI2_ETF_NIC9_DBG_1] = mmNIC9_DBG_ETF_1_BASE,
342 	[GAUDI2_ETF_NIC10_DBG_0] = mmNIC10_DBG_ETF_0_BASE,
343 	[GAUDI2_ETF_NIC10_DBG_1] = mmNIC10_DBG_ETF_1_BASE,
344 	[GAUDI2_ETF_NIC11_DBG_0] = mmNIC11_DBG_ETF_0_BASE,
345 	[GAUDI2_ETF_NIC11_DBG_1] = mmNIC11_DBG_ETF_1_BASE
346 };
347 
348 static u64 debug_funnel_regs[GAUDI2_FUNNEL_LAST + 1] = {
349 	[GAUDI2_FUNNEL_DCORE0_TPC0_EML] = mmDCORE0_TPC0_EML_FUNNEL_BASE,
350 	[GAUDI2_FUNNEL_DCORE0_TPC1_EML] = mmDCORE0_TPC1_EML_FUNNEL_BASE,
351 	[GAUDI2_FUNNEL_DCORE0_TPC2_EML] = mmDCORE0_TPC2_EML_FUNNEL_BASE,
352 	[GAUDI2_FUNNEL_DCORE0_TPC3_EML] = mmDCORE0_TPC3_EML_FUNNEL_BASE,
353 	[GAUDI2_FUNNEL_DCORE0_TPC4_EML] = mmDCORE0_TPC4_EML_FUNNEL_BASE,
354 	[GAUDI2_FUNNEL_DCORE0_TPC5_EML] = mmDCORE0_TPC5_EML_FUNNEL_BASE,
355 	[GAUDI2_FUNNEL_DCORE0_TPC6_EML] = mmDCORE0_TPC6_EML_FUNNEL_BASE,
356 	[GAUDI2_FUNNEL_DCORE1_TPC0_EML] = mmDCORE1_TPC0_EML_FUNNEL_BASE,
357 	[GAUDI2_FUNNEL_DCORE1_TPC1_EML] = mmDCORE1_TPC1_EML_FUNNEL_BASE,
358 	[GAUDI2_FUNNEL_DCORE1_TPC2_EML] = mmDCORE1_TPC2_EML_FUNNEL_BASE,
359 	[GAUDI2_FUNNEL_DCORE1_TPC3_EML] = mmDCORE1_TPC3_EML_FUNNEL_BASE,
360 	[GAUDI2_FUNNEL_DCORE1_TPC4_EML] = mmDCORE1_TPC4_EML_FUNNEL_BASE,
361 	[GAUDI2_FUNNEL_DCORE1_TPC5_EML] = mmDCORE1_TPC5_EML_FUNNEL_BASE,
362 	[GAUDI2_FUNNEL_DCORE2_TPC0_EML] = mmDCORE2_TPC0_EML_FUNNEL_BASE,
363 	[GAUDI2_FUNNEL_DCORE2_TPC1_EML] = mmDCORE2_TPC1_EML_FUNNEL_BASE,
364 	[GAUDI2_FUNNEL_DCORE2_TPC2_EML] = mmDCORE2_TPC2_EML_FUNNEL_BASE,
365 	[GAUDI2_FUNNEL_DCORE2_TPC3_EML] = mmDCORE2_TPC3_EML_FUNNEL_BASE,
366 	[GAUDI2_FUNNEL_DCORE2_TPC4_EML] = mmDCORE2_TPC4_EML_FUNNEL_BASE,
367 	[GAUDI2_FUNNEL_DCORE2_TPC5_EML] = mmDCORE2_TPC5_EML_FUNNEL_BASE,
368 	[GAUDI2_FUNNEL_DCORE3_TPC0_EML] = mmDCORE3_TPC0_EML_FUNNEL_BASE,
369 	[GAUDI2_FUNNEL_DCORE3_TPC1_EML] = mmDCORE3_TPC1_EML_FUNNEL_BASE,
370 	[GAUDI2_FUNNEL_DCORE3_TPC2_EML] = mmDCORE3_TPC2_EML_FUNNEL_BASE,
371 	[GAUDI2_FUNNEL_DCORE3_TPC3_EML] = mmDCORE3_TPC3_EML_FUNNEL_BASE,
372 	[GAUDI2_FUNNEL_DCORE3_TPC4_EML] = mmDCORE3_TPC4_EML_FUNNEL_BASE,
373 	[GAUDI2_FUNNEL_DCORE3_TPC5_EML] = mmDCORE3_TPC5_EML_FUNNEL_BASE,
374 	[GAUDI2_FUNNEL_DCORE0_XFT] = mmDCORE0_XFT_FUNNEL_BASE,
375 	[GAUDI2_FUNNEL_DCORE0_TFT0] = mmDCORE0_TFT0_FUNNEL_BASE,
376 	[GAUDI2_FUNNEL_DCORE0_TFT1] = mmDCORE0_TFT1_FUNNEL_BASE,
377 	[GAUDI2_FUNNEL_DCORE0_TFT2] = mmDCORE0_TFT2_FUNNEL_BASE,
378 	[GAUDI2_FUNNEL_DCORE0_RTR0] = mmDCORE0_RTR0_FUNNEL_BASE,
379 	[GAUDI2_FUNNEL_DCORE0_RTR1] = mmDCORE0_RTR1_FUNNEL_BASE,
380 	[GAUDI2_FUNNEL_DCORE0_RTR2] = mmDCORE0_RTR2_FUNNEL_BASE,
381 	[GAUDI2_FUNNEL_DCORE0_RTR3] = mmDCORE0_RTR3_FUNNEL_BASE,
382 	[GAUDI2_FUNNEL_DCORE0_RTR4] = mmDCORE0_RTR4_FUNNEL_BASE,
383 	[GAUDI2_FUNNEL_DCORE0_MIF0] = mmDCORE0_MIF0_FUNNEL_BASE,
384 	[GAUDI2_FUNNEL_DCORE0_RTR5] = mmDCORE0_RTR5_FUNNEL_BASE,
385 	[GAUDI2_FUNNEL_DCORE0_MIF1] = mmDCORE0_MIF1_FUNNEL_BASE,
386 	[GAUDI2_FUNNEL_DCORE0_RTR6] = mmDCORE0_RTR6_FUNNEL_BASE,
387 	[GAUDI2_FUNNEL_DCORE0_MIF2] = mmDCORE0_MIF2_FUNNEL_BASE,
388 	[GAUDI2_FUNNEL_DCORE0_RTR7] = mmDCORE0_RTR7_FUNNEL_BASE,
389 	[GAUDI2_FUNNEL_DCORE0_MIF3] = mmDCORE0_MIF3_FUNNEL_BASE,
390 	[GAUDI2_FUNNEL_DCORE1_XFT] = mmDCORE1_XFT_FUNNEL_BASE,
391 	[GAUDI2_FUNNEL_DCORE1_TFT0] = mmDCORE1_TFT0_FUNNEL_BASE,
392 	[GAUDI2_FUNNEL_DCORE1_TFT1] = mmDCORE1_TFT1_FUNNEL_BASE,
393 	[GAUDI2_FUNNEL_DCORE1_TFT2] = mmDCORE1_TFT2_FUNNEL_BASE,
394 	[GAUDI2_FUNNEL_DCORE1_RTR0] = mmDCORE1_RTR0_FUNNEL_BASE,
395 	[GAUDI2_FUNNEL_DCORE1_MIF0] = mmDCORE1_MIF0_FUNNEL_BASE,
396 	[GAUDI2_FUNNEL_DCORE1_RTR1] = mmDCORE1_RTR1_FUNNEL_BASE,
397 	[GAUDI2_FUNNEL_DCORE1_MIF1] = mmDCORE1_MIF1_FUNNEL_BASE,
398 	[GAUDI2_FUNNEL_DCORE1_RTR2] = mmDCORE1_RTR2_FUNNEL_BASE,
399 	[GAUDI2_FUNNEL_DCORE1_MIF2] = mmDCORE1_MIF2_FUNNEL_BASE,
400 	[GAUDI2_FUNNEL_DCORE1_RTR3] = mmDCORE1_RTR3_FUNNEL_BASE,
401 	[GAUDI2_FUNNEL_DCORE1_MIF3] = mmDCORE1_MIF3_FUNNEL_BASE,
402 	[GAUDI2_FUNNEL_DCORE1_RTR4] = mmDCORE1_RTR4_FUNNEL_BASE,
403 	[GAUDI2_FUNNEL_DCORE1_RTR5] = mmDCORE1_RTR5_FUNNEL_BASE,
404 	[GAUDI2_FUNNEL_DCORE1_RTR6] = mmDCORE1_RTR6_FUNNEL_BASE,
405 	[GAUDI2_FUNNEL_DCORE1_RTR7] = mmDCORE1_RTR7_FUNNEL_BASE,
406 	[GAUDI2_FUNNEL_DCORE2_XFT] = mmDCORE2_XFT_FUNNEL_BASE,
407 	[GAUDI2_FUNNEL_DCORE2_TFT0] = mmDCORE2_TFT0_FUNNEL_BASE,
408 	[GAUDI2_FUNNEL_DCORE2_TFT1] = mmDCORE2_TFT1_FUNNEL_BASE,
409 	[GAUDI2_FUNNEL_DCORE2_TFT2] = mmDCORE2_TFT2_FUNNEL_BASE,
410 	[GAUDI2_FUNNEL_DCORE2_RTR0] = mmDCORE2_RTR0_FUNNEL_BASE,
411 	[GAUDI2_FUNNEL_DCORE2_RTR1] = mmDCORE2_RTR1_FUNNEL_BASE,
412 	[GAUDI2_FUNNEL_DCORE2_RTR2] = mmDCORE2_RTR2_FUNNEL_BASE,
413 	[GAUDI2_FUNNEL_DCORE2_RTR3] = mmDCORE2_RTR3_FUNNEL_BASE,
414 	[GAUDI2_FUNNEL_DCORE2_RTR4] = mmDCORE2_RTR4_FUNNEL_BASE,
415 	[GAUDI2_FUNNEL_DCORE2_MIF0] = mmDCORE2_MIF0_FUNNEL_BASE,
416 	[GAUDI2_FUNNEL_DCORE2_RTR5] = mmDCORE2_RTR5_FUNNEL_BASE,
417 	[GAUDI2_FUNNEL_DCORE2_MIF1] = mmDCORE2_MIF1_FUNNEL_BASE,
418 	[GAUDI2_FUNNEL_DCORE2_RTR6] = mmDCORE2_RTR6_FUNNEL_BASE,
419 	[GAUDI2_FUNNEL_DCORE2_MIF2] = mmDCORE2_MIF2_FUNNEL_BASE,
420 	[GAUDI2_FUNNEL_DCORE2_RTR7] = mmDCORE2_RTR7_FUNNEL_BASE,
421 	[GAUDI2_FUNNEL_DCORE2_MIF3] = mmDCORE2_MIF3_FUNNEL_BASE,
422 	[GAUDI2_FUNNEL_DCORE3_XFT] = mmDCORE3_XFT_FUNNEL_BASE,
423 	[GAUDI2_FUNNEL_DCORE3_TFT0] = mmDCORE3_TFT0_FUNNEL_BASE,
424 	[GAUDI2_FUNNEL_DCORE3_TFT1] = mmDCORE3_TFT1_FUNNEL_BASE,
425 	[GAUDI2_FUNNEL_DCORE3_TFT2] = mmDCORE3_TFT2_FUNNEL_BASE,
426 	[GAUDI2_FUNNEL_DCORE3_RTR0] = mmDCORE3_RTR0_FUNNEL_BASE,
427 	[GAUDI2_FUNNEL_DCORE3_MIF0] = mmDCORE3_MIF0_FUNNEL_BASE,
428 	[GAUDI2_FUNNEL_DCORE3_RTR1] = mmDCORE3_RTR1_FUNNEL_BASE,
429 	[GAUDI2_FUNNEL_DCORE3_MIF1] = mmDCORE3_MIF1_FUNNEL_BASE,
430 	[GAUDI2_FUNNEL_DCORE3_RTR2] = mmDCORE3_RTR2_FUNNEL_BASE,
431 	[GAUDI2_FUNNEL_DCORE3_MIF2] = mmDCORE3_MIF2_FUNNEL_BASE,
432 	[GAUDI2_FUNNEL_DCORE3_RTR3] = mmDCORE3_RTR3_FUNNEL_BASE,
433 	[GAUDI2_FUNNEL_DCORE3_MIF3] = mmDCORE3_MIF3_FUNNEL_BASE,
434 	[GAUDI2_FUNNEL_DCORE3_RTR4] = mmDCORE3_RTR4_FUNNEL_BASE,
435 	[GAUDI2_FUNNEL_DCORE3_RTR5] = mmDCORE3_RTR5_FUNNEL_BASE,
436 	[GAUDI2_FUNNEL_DCORE3_RTR6] = mmDCORE3_RTR6_FUNNEL_BASE,
437 	[GAUDI2_FUNNEL_DCORE3_RTR7] = mmDCORE3_RTR7_FUNNEL_BASE,
438 	[GAUDI2_FUNNEL_PSOC] = mmPSOC_FUNNEL_BASE,
439 	[GAUDI2_FUNNEL_PSOC_ARC0] = 0,
440 	[GAUDI2_FUNNEL_PSOC_ARC1] = 0,
441 	[GAUDI2_FUNNEL_XDMA] = mmXDMA_FUNNEL_BASE,
442 	[GAUDI2_FUNNEL_CPU] = mmCPU_FUNNEL_BASE,
443 	[GAUDI2_FUNNEL_PMMU] = mmPMMU_FUNNEL_BASE,
444 	[GAUDI2_FUNNEL_PMMU_DEC] = mmPMMU_FUNNEL_DEC_BASE,
445 	[GAUDI2_FUNNEL_DCORE0_XBAR_MID] = mmDCORE0_XBAR_MID_FUNNEL_BASE,
446 	[GAUDI2_FUNNEL_DCORE0_XBAR_EDGE] = mmDCORE0_XBAR_EDGE_FUNNEL_BASE,
447 	[GAUDI2_FUNNEL_DCORE1_XBAR_MID] = mmDCORE1_XBAR_MID_FUNNEL_BASE,
448 	[GAUDI2_FUNNEL_DCORE1_XBAR_EDGE] = mmDCORE1_XBAR_EDGE_FUNNEL_BASE,
449 	[GAUDI2_FUNNEL_DCORE2_XBAR_MID] = mmDCORE2_XBAR_MID_FUNNEL_BASE,
450 	[GAUDI2_FUNNEL_DCORE2_XBAR_EDGE] = mmDCORE2_XBAR_EDGE_FUNNEL_BASE,
451 	[GAUDI2_FUNNEL_DCORE3_XBAR_MID] = mmDCORE3_XBAR_MID_FUNNEL_BASE,
452 	[GAUDI2_FUNNEL_DCORE3_XBAR_EDGE] = mmDCORE3_XBAR_EDGE_FUNNEL_BASE,
453 	[GAUDI2_FUNNEL_ARC_FARM] = mmARC_FARM_FUNNEL_BASE,
454 	[GAUDI2_FUNNEL_HBM0_MC0] = mmHBM0_MC0_FUNNEL_BASE,
455 	[GAUDI2_FUNNEL_HBM0_MC1] = mmHBM0_MC1_FUNNEL_BASE,
456 	[GAUDI2_FUNNEL_HBM1_MC0] = mmHBM1_MC0_FUNNEL_BASE,
457 	[GAUDI2_FUNNEL_HBM1_MC1] = mmHBM1_MC1_FUNNEL_BASE,
458 	[GAUDI2_FUNNEL_HBM2_MC0] = mmHBM2_MC0_FUNNEL_BASE,
459 	[GAUDI2_FUNNEL_HBM2_MC1] = mmHBM2_MC1_FUNNEL_BASE,
460 	[GAUDI2_FUNNEL_HBM3_MC0] = mmHBM3_MC0_FUNNEL_BASE,
461 	[GAUDI2_FUNNEL_HBM3_MC1] = mmHBM3_MC1_FUNNEL_BASE,
462 	[GAUDI2_FUNNEL_HBM4_MC0] = mmHBM4_MC0_FUNNEL_BASE,
463 	[GAUDI2_FUNNEL_HBM4_MC1] = mmHBM4_MC1_FUNNEL_BASE,
464 	[GAUDI2_FUNNEL_HBM5_MC0] = mmHBM5_MC0_FUNNEL_BASE,
465 	[GAUDI2_FUNNEL_HBM5_MC1] = mmHBM5_MC1_FUNNEL_BASE,
466 	[GAUDI2_FUNNEL_NIC0_DBG_TX] = mmNIC0_DBG_FUNNEL_TX_BASE,
467 	[GAUDI2_FUNNEL_NIC0_DBG_NCH] = mmNIC0_DBG_FUNNEL_NCH_BASE,
468 	[GAUDI2_FUNNEL_NIC1_DBG_TX] = mmNIC1_DBG_FUNNEL_TX_BASE,
469 	[GAUDI2_FUNNEL_NIC1_DBG_NCH] = mmNIC1_DBG_FUNNEL_NCH_BASE,
470 	[GAUDI2_FUNNEL_NIC2_DBG_TX] = mmNIC2_DBG_FUNNEL_TX_BASE,
471 	[GAUDI2_FUNNEL_NIC2_DBG_NCH] = mmNIC2_DBG_FUNNEL_NCH_BASE,
472 	[GAUDI2_FUNNEL_NIC3_DBG_TX] = mmNIC3_DBG_FUNNEL_TX_BASE,
473 	[GAUDI2_FUNNEL_NIC3_DBG_NCH] = mmNIC3_DBG_FUNNEL_NCH_BASE,
474 	[GAUDI2_FUNNEL_NIC4_DBG_TX] = mmNIC4_DBG_FUNNEL_TX_BASE,
475 	[GAUDI2_FUNNEL_NIC4_DBG_NCH] = mmNIC4_DBG_FUNNEL_NCH_BASE,
476 	[GAUDI2_FUNNEL_NIC5_DBG_TX] = mmNIC5_DBG_FUNNEL_TX_BASE,
477 	[GAUDI2_FUNNEL_NIC5_DBG_NCH] = mmNIC5_DBG_FUNNEL_NCH_BASE,
478 	[GAUDI2_FUNNEL_NIC6_DBG_TX] = mmNIC6_DBG_FUNNEL_TX_BASE,
479 	[GAUDI2_FUNNEL_NIC6_DBG_NCH] = mmNIC6_DBG_FUNNEL_NCH_BASE,
480 	[GAUDI2_FUNNEL_NIC7_DBG_TX] = mmNIC7_DBG_FUNNEL_TX_BASE,
481 	[GAUDI2_FUNNEL_NIC7_DBG_NCH] = mmNIC7_DBG_FUNNEL_NCH_BASE,
482 	[GAUDI2_FUNNEL_NIC8_DBG_TX] = mmNIC8_DBG_FUNNEL_TX_BASE,
483 	[GAUDI2_FUNNEL_NIC8_DBG_NCH] = mmNIC8_DBG_FUNNEL_NCH_BASE,
484 	[GAUDI2_FUNNEL_NIC9_DBG_TX] = mmNIC9_DBG_FUNNEL_TX_BASE,
485 	[GAUDI2_FUNNEL_NIC9_DBG_NCH] = mmNIC9_DBG_FUNNEL_NCH_BASE,
486 	[GAUDI2_FUNNEL_NIC10_DBG_TX] = mmNIC10_DBG_FUNNEL_TX_BASE,
487 	[GAUDI2_FUNNEL_NIC10_DBG_NCH] = mmNIC10_DBG_FUNNEL_NCH_BASE,
488 	[GAUDI2_FUNNEL_NIC11_DBG_TX] = mmNIC11_DBG_FUNNEL_TX_BASE,
489 	[GAUDI2_FUNNEL_NIC11_DBG_NCH] = mmNIC11_DBG_FUNNEL_NCH_BASE
490 };
491 
492 static u64 debug_bmon_regs[GAUDI2_BMON_LAST + 1] = {
493 	[GAUDI2_BMON_DCORE0_TPC0_EML_0] = mmDCORE0_TPC0_EML_BUSMON_0_BASE,
494 	[GAUDI2_BMON_DCORE0_TPC0_EML_1] = mmDCORE0_TPC0_EML_BUSMON_1_BASE,
495 	[GAUDI2_BMON_DCORE0_TPC0_EML_2] = mmDCORE0_TPC0_EML_BUSMON_2_BASE,
496 	[GAUDI2_BMON_DCORE0_TPC0_EML_3] = mmDCORE0_TPC0_EML_BUSMON_3_BASE,
497 	[GAUDI2_BMON_DCORE0_TPC1_EML_0] = mmDCORE0_TPC1_EML_BUSMON_0_BASE,
498 	[GAUDI2_BMON_DCORE0_TPC1_EML_1] = mmDCORE0_TPC1_EML_BUSMON_1_BASE,
499 	[GAUDI2_BMON_DCORE0_TPC1_EML_2] = mmDCORE0_TPC1_EML_BUSMON_2_BASE,
500 	[GAUDI2_BMON_DCORE0_TPC1_EML_3] = mmDCORE0_TPC1_EML_BUSMON_3_BASE,
501 	[GAUDI2_BMON_DCORE0_TPC2_EML_0] = mmDCORE0_TPC2_EML_BUSMON_0_BASE,
502 	[GAUDI2_BMON_DCORE0_TPC2_EML_1] = mmDCORE0_TPC2_EML_BUSMON_1_BASE,
503 	[GAUDI2_BMON_DCORE0_TPC2_EML_2] = mmDCORE0_TPC2_EML_BUSMON_2_BASE,
504 	[GAUDI2_BMON_DCORE0_TPC2_EML_3] = mmDCORE0_TPC2_EML_BUSMON_3_BASE,
505 	[GAUDI2_BMON_DCORE0_TPC3_EML_0] = mmDCORE0_TPC3_EML_BUSMON_0_BASE,
506 	[GAUDI2_BMON_DCORE0_TPC3_EML_1] = mmDCORE0_TPC3_EML_BUSMON_1_BASE,
507 	[GAUDI2_BMON_DCORE0_TPC3_EML_2] = mmDCORE0_TPC3_EML_BUSMON_2_BASE,
508 	[GAUDI2_BMON_DCORE0_TPC3_EML_3] = mmDCORE0_TPC3_EML_BUSMON_3_BASE,
509 	[GAUDI2_BMON_DCORE0_TPC4_EML_0] = mmDCORE0_TPC4_EML_BUSMON_0_BASE,
510 	[GAUDI2_BMON_DCORE0_TPC4_EML_1] = mmDCORE0_TPC4_EML_BUSMON_1_BASE,
511 	[GAUDI2_BMON_DCORE0_TPC4_EML_2] = mmDCORE0_TPC4_EML_BUSMON_2_BASE,
512 	[GAUDI2_BMON_DCORE0_TPC4_EML_3] = mmDCORE0_TPC4_EML_BUSMON_3_BASE,
513 	[GAUDI2_BMON_DCORE0_TPC5_EML_0] = mmDCORE0_TPC5_EML_BUSMON_0_BASE,
514 	[GAUDI2_BMON_DCORE0_TPC5_EML_1] = mmDCORE0_TPC5_EML_BUSMON_1_BASE,
515 	[GAUDI2_BMON_DCORE0_TPC5_EML_2] = mmDCORE0_TPC5_EML_BUSMON_2_BASE,
516 	[GAUDI2_BMON_DCORE0_TPC5_EML_3] = mmDCORE0_TPC5_EML_BUSMON_3_BASE,
517 	[GAUDI2_BMON_DCORE0_TPC6_EML_0] = mmDCORE0_TPC6_EML_BUSMON_0_BASE,
518 	[GAUDI2_BMON_DCORE0_TPC6_EML_1] = mmDCORE0_TPC6_EML_BUSMON_1_BASE,
519 	[GAUDI2_BMON_DCORE0_TPC6_EML_2] = mmDCORE0_TPC6_EML_BUSMON_2_BASE,
520 	[GAUDI2_BMON_DCORE0_TPC6_EML_3] = mmDCORE0_TPC6_EML_BUSMON_3_BASE,
521 	[GAUDI2_BMON_DCORE1_TPC0_EML_0] = mmDCORE1_TPC0_EML_BUSMON_0_BASE,
522 	[GAUDI2_BMON_DCORE1_TPC0_EML_1] = mmDCORE1_TPC0_EML_BUSMON_1_BASE,
523 	[GAUDI2_BMON_DCORE1_TPC0_EML_2] = mmDCORE1_TPC0_EML_BUSMON_2_BASE,
524 	[GAUDI2_BMON_DCORE1_TPC0_EML_3] = mmDCORE1_TPC0_EML_BUSMON_3_BASE,
525 	[GAUDI2_BMON_DCORE1_TPC1_EML_0] = mmDCORE1_TPC1_EML_BUSMON_0_BASE,
526 	[GAUDI2_BMON_DCORE1_TPC1_EML_1] = mmDCORE1_TPC1_EML_BUSMON_1_BASE,
527 	[GAUDI2_BMON_DCORE1_TPC1_EML_2] = mmDCORE1_TPC1_EML_BUSMON_2_BASE,
528 	[GAUDI2_BMON_DCORE1_TPC1_EML_3] = mmDCORE1_TPC1_EML_BUSMON_3_BASE,
529 	[GAUDI2_BMON_DCORE1_TPC2_EML_0] = mmDCORE1_TPC2_EML_BUSMON_0_BASE,
530 	[GAUDI2_BMON_DCORE1_TPC2_EML_1] = mmDCORE1_TPC2_EML_BUSMON_1_BASE,
531 	[GAUDI2_BMON_DCORE1_TPC2_EML_2] = mmDCORE1_TPC2_EML_BUSMON_2_BASE,
532 	[GAUDI2_BMON_DCORE1_TPC2_EML_3] = mmDCORE1_TPC2_EML_BUSMON_3_BASE,
533 	[GAUDI2_BMON_DCORE1_TPC3_EML_0] = mmDCORE1_TPC3_EML_BUSMON_0_BASE,
534 	[GAUDI2_BMON_DCORE1_TPC3_EML_1] = mmDCORE1_TPC3_EML_BUSMON_1_BASE,
535 	[GAUDI2_BMON_DCORE1_TPC3_EML_2] = mmDCORE1_TPC3_EML_BUSMON_2_BASE,
536 	[GAUDI2_BMON_DCORE1_TPC3_EML_3] = mmDCORE1_TPC3_EML_BUSMON_3_BASE,
537 	[GAUDI2_BMON_DCORE1_TPC4_EML_0] = mmDCORE1_TPC4_EML_BUSMON_0_BASE,
538 	[GAUDI2_BMON_DCORE1_TPC4_EML_1] = mmDCORE1_TPC4_EML_BUSMON_1_BASE,
539 	[GAUDI2_BMON_DCORE1_TPC4_EML_2] = mmDCORE1_TPC4_EML_BUSMON_2_BASE,
540 	[GAUDI2_BMON_DCORE1_TPC4_EML_3] = mmDCORE1_TPC4_EML_BUSMON_3_BASE,
541 	[GAUDI2_BMON_DCORE1_TPC5_EML_0] = mmDCORE1_TPC5_EML_BUSMON_0_BASE,
542 	[GAUDI2_BMON_DCORE1_TPC5_EML_1] = mmDCORE1_TPC5_EML_BUSMON_1_BASE,
543 	[GAUDI2_BMON_DCORE1_TPC5_EML_2] = mmDCORE1_TPC5_EML_BUSMON_2_BASE,
544 	[GAUDI2_BMON_DCORE1_TPC5_EML_3] = mmDCORE1_TPC5_EML_BUSMON_3_BASE,
545 	[GAUDI2_BMON_DCORE2_TPC0_EML_0] = mmDCORE2_TPC0_EML_BUSMON_0_BASE,
546 	[GAUDI2_BMON_DCORE2_TPC0_EML_1] = mmDCORE2_TPC0_EML_BUSMON_1_BASE,
547 	[GAUDI2_BMON_DCORE2_TPC0_EML_2] = mmDCORE2_TPC0_EML_BUSMON_2_BASE,
548 	[GAUDI2_BMON_DCORE2_TPC0_EML_3] = mmDCORE2_TPC0_EML_BUSMON_3_BASE,
549 	[GAUDI2_BMON_DCORE2_TPC1_EML_0] = mmDCORE2_TPC1_EML_BUSMON_0_BASE,
550 	[GAUDI2_BMON_DCORE2_TPC1_EML_1] = mmDCORE2_TPC1_EML_BUSMON_1_BASE,
551 	[GAUDI2_BMON_DCORE2_TPC1_EML_2] = mmDCORE2_TPC1_EML_BUSMON_2_BASE,
552 	[GAUDI2_BMON_DCORE2_TPC1_EML_3] = mmDCORE2_TPC1_EML_BUSMON_3_BASE,
553 	[GAUDI2_BMON_DCORE2_TPC2_EML_0] = mmDCORE2_TPC2_EML_BUSMON_0_BASE,
554 	[GAUDI2_BMON_DCORE2_TPC2_EML_1] = mmDCORE2_TPC2_EML_BUSMON_1_BASE,
555 	[GAUDI2_BMON_DCORE2_TPC2_EML_2] = mmDCORE2_TPC2_EML_BUSMON_2_BASE,
556 	[GAUDI2_BMON_DCORE2_TPC2_EML_3] = mmDCORE2_TPC2_EML_BUSMON_3_BASE,
557 	[GAUDI2_BMON_DCORE2_TPC3_EML_0] = mmDCORE2_TPC3_EML_BUSMON_0_BASE,
558 	[GAUDI2_BMON_DCORE2_TPC3_EML_1] = mmDCORE2_TPC3_EML_BUSMON_1_BASE,
559 	[GAUDI2_BMON_DCORE2_TPC3_EML_2] = mmDCORE2_TPC3_EML_BUSMON_2_BASE,
560 	[GAUDI2_BMON_DCORE2_TPC3_EML_3] = mmDCORE2_TPC3_EML_BUSMON_3_BASE,
561 	[GAUDI2_BMON_DCORE2_TPC4_EML_0] = mmDCORE2_TPC4_EML_BUSMON_0_BASE,
562 	[GAUDI2_BMON_DCORE2_TPC4_EML_1] = mmDCORE2_TPC4_EML_BUSMON_1_BASE,
563 	[GAUDI2_BMON_DCORE2_TPC4_EML_2] = mmDCORE2_TPC4_EML_BUSMON_2_BASE,
564 	[GAUDI2_BMON_DCORE2_TPC4_EML_3] = mmDCORE2_TPC4_EML_BUSMON_3_BASE,
565 	[GAUDI2_BMON_DCORE2_TPC5_EML_0] = mmDCORE2_TPC5_EML_BUSMON_0_BASE,
566 	[GAUDI2_BMON_DCORE2_TPC5_EML_1] = mmDCORE2_TPC5_EML_BUSMON_1_BASE,
567 	[GAUDI2_BMON_DCORE2_TPC5_EML_2] = mmDCORE2_TPC5_EML_BUSMON_2_BASE,
568 	[GAUDI2_BMON_DCORE2_TPC5_EML_3] = mmDCORE2_TPC5_EML_BUSMON_3_BASE,
569 	[GAUDI2_BMON_DCORE3_TPC0_EML_0] = mmDCORE3_TPC0_EML_BUSMON_0_BASE,
570 	[GAUDI2_BMON_DCORE3_TPC0_EML_1] = mmDCORE3_TPC0_EML_BUSMON_1_BASE,
571 	[GAUDI2_BMON_DCORE3_TPC0_EML_2] = mmDCORE3_TPC0_EML_BUSMON_2_BASE,
572 	[GAUDI2_BMON_DCORE3_TPC0_EML_3] = mmDCORE3_TPC0_EML_BUSMON_3_BASE,
573 	[GAUDI2_BMON_DCORE3_TPC1_EML_0] = mmDCORE3_TPC1_EML_BUSMON_0_BASE,
574 	[GAUDI2_BMON_DCORE3_TPC1_EML_1] = mmDCORE3_TPC1_EML_BUSMON_1_BASE,
575 	[GAUDI2_BMON_DCORE3_TPC1_EML_2] = mmDCORE3_TPC1_EML_BUSMON_2_BASE,
576 	[GAUDI2_BMON_DCORE3_TPC1_EML_3] = mmDCORE3_TPC1_EML_BUSMON_3_BASE,
577 	[GAUDI2_BMON_DCORE3_TPC2_EML_0] = mmDCORE3_TPC2_EML_BUSMON_0_BASE,
578 	[GAUDI2_BMON_DCORE3_TPC2_EML_1] = mmDCORE3_TPC2_EML_BUSMON_1_BASE,
579 	[GAUDI2_BMON_DCORE3_TPC2_EML_2] = mmDCORE3_TPC2_EML_BUSMON_2_BASE,
580 	[GAUDI2_BMON_DCORE3_TPC2_EML_3] = mmDCORE3_TPC2_EML_BUSMON_3_BASE,
581 	[GAUDI2_BMON_DCORE3_TPC3_EML_0] = mmDCORE3_TPC3_EML_BUSMON_0_BASE,
582 	[GAUDI2_BMON_DCORE3_TPC3_EML_1] = mmDCORE3_TPC3_EML_BUSMON_1_BASE,
583 	[GAUDI2_BMON_DCORE3_TPC3_EML_2] = mmDCORE3_TPC3_EML_BUSMON_2_BASE,
584 	[GAUDI2_BMON_DCORE3_TPC3_EML_3] = mmDCORE3_TPC3_EML_BUSMON_3_BASE,
585 	[GAUDI2_BMON_DCORE3_TPC4_EML_0] = mmDCORE3_TPC4_EML_BUSMON_0_BASE,
586 	[GAUDI2_BMON_DCORE3_TPC4_EML_1] = mmDCORE3_TPC4_EML_BUSMON_1_BASE,
587 	[GAUDI2_BMON_DCORE3_TPC4_EML_2] = mmDCORE3_TPC4_EML_BUSMON_2_BASE,
588 	[GAUDI2_BMON_DCORE3_TPC4_EML_3] = mmDCORE3_TPC4_EML_BUSMON_3_BASE,
589 	[GAUDI2_BMON_DCORE3_TPC5_EML_0] = mmDCORE3_TPC5_EML_BUSMON_0_BASE,
590 	[GAUDI2_BMON_DCORE3_TPC5_EML_1] = mmDCORE3_TPC5_EML_BUSMON_1_BASE,
591 	[GAUDI2_BMON_DCORE3_TPC5_EML_2] = mmDCORE3_TPC5_EML_BUSMON_2_BASE,
592 	[GAUDI2_BMON_DCORE3_TPC5_EML_3] = mmDCORE3_TPC5_EML_BUSMON_3_BASE,
593 	[GAUDI2_BMON_DCORE0_HMMU0_0] = mmDCORE0_HMMU0_BMON_0_BASE,
594 	[GAUDI2_BMON_DCORE0_HMMU0_1] = mmDCORE0_HMMU0_BMON_1_BASE,
595 	[GAUDI2_BMON_DCORE0_HMMU0_3] = mmDCORE0_HMMU0_BMON_3_BASE,
596 	[GAUDI2_BMON_DCORE0_HMMU0_2] = mmDCORE0_HMMU0_BMON_2_BASE,
597 	[GAUDI2_BMON_DCORE0_HMMU0_4] = mmDCORE0_HMMU0_BMON_4_BASE,
598 	[GAUDI2_BMON_DCORE0_HMMU1_0] = mmDCORE0_HMMU1_BMON_0_BASE,
599 	[GAUDI2_BMON_DCORE0_HMMU1_1] = mmDCORE0_HMMU1_BMON_1_BASE,
600 	[GAUDI2_BMON_DCORE0_HMMU1_3] = mmDCORE0_HMMU1_BMON_3_BASE,
601 	[GAUDI2_BMON_DCORE0_HMMU1_2] = mmDCORE0_HMMU1_BMON_2_BASE,
602 	[GAUDI2_BMON_DCORE0_HMMU1_4] = mmDCORE0_HMMU1_BMON_4_BASE,
603 	[GAUDI2_BMON_DCORE0_HMMU2_0] = mmDCORE0_HMMU2_BMON_0_BASE,
604 	[GAUDI2_BMON_DCORE0_HMMU2_1] = mmDCORE0_HMMU2_BMON_1_BASE,
605 	[GAUDI2_BMON_DCORE0_HMMU2_3] = mmDCORE0_HMMU2_BMON_3_BASE,
606 	[GAUDI2_BMON_DCORE0_HMMU2_2] = mmDCORE0_HMMU2_BMON_2_BASE,
607 	[GAUDI2_BMON_DCORE0_HMMU2_4] = mmDCORE0_HMMU2_BMON_4_BASE,
608 	[GAUDI2_BMON_DCORE0_HMMU3_0] = mmDCORE0_HMMU3_BMON_0_BASE,
609 	[GAUDI2_BMON_DCORE0_HMMU3_1] = mmDCORE0_HMMU3_BMON_1_BASE,
610 	[GAUDI2_BMON_DCORE0_HMMU3_3] = mmDCORE0_HMMU3_BMON_3_BASE,
611 	[GAUDI2_BMON_DCORE0_HMMU3_2] = mmDCORE0_HMMU3_BMON_2_BASE,
612 	[GAUDI2_BMON_DCORE0_HMMU3_4] = mmDCORE0_HMMU3_BMON_4_BASE,
613 	[GAUDI2_BMON_DCORE0_MME_CTRL_0] = mmDCORE0_MME_CTRL_BMON0_BASE,
614 	[GAUDI2_BMON_DCORE0_MME_CTRL_1] = mmDCORE0_MME_CTRL_BMON1_BASE,
615 	[GAUDI2_BMON_DCORE0_MME_CTRL_2] = mmDCORE0_MME_CTRL_BMON2_BASE,
616 	[GAUDI2_BMON_DCORE0_MME_CTRL_3] = mmDCORE0_MME_CTRL_BMON3_BASE,
617 	[GAUDI2_BMON_DCORE0_MME_SBTE0_0] = mmDCORE0_MME_SBTE0_BMON0_BASE,
618 	[GAUDI2_BMON_DCORE0_MME_SBTE1_0] = mmDCORE0_MME_SBTE1_BMON0_BASE,
619 	[GAUDI2_BMON_DCORE0_MME_SBTE2_0] = mmDCORE0_MME_SBTE2_BMON0_BASE,
620 	[GAUDI2_BMON_DCORE0_MME_SBTE3_0] = mmDCORE0_MME_SBTE3_BMON0_BASE,
621 	[GAUDI2_BMON_DCORE0_MME_SBTE4_0] = mmDCORE0_MME_SBTE4_BMON0_BASE,
622 	[GAUDI2_BMON_DCORE0_MME_ACC_0] = mmDCORE0_MME_ACC_BMON0_BASE,
623 	[GAUDI2_BMON_DCORE0_MME_ACC_1] = mmDCORE0_MME_ACC_BMON1_BASE,
624 	[GAUDI2_BMON_DCORE0_SM] = mmDCORE0_SM_BMON_BASE,
625 	[GAUDI2_BMON_DCORE0_SM_1] = mmDCORE0_SM_BMON1_BASE,
626 	[GAUDI2_BMON_DCORE0_EDMA0_0] = mmDCORE0_EDMA0_BMON_0_BASE,
627 	[GAUDI2_BMON_DCORE0_EDMA0_1] = mmDCORE0_EDMA0_BMON_1_BASE,
628 	[GAUDI2_BMON_DCORE0_EDMA1_0] = mmDCORE0_EDMA1_BMON_0_BASE,
629 	[GAUDI2_BMON_DCORE0_EDMA1_1] = mmDCORE0_EDMA1_BMON_1_BASE,
630 	[GAUDI2_BMON_DCORE0_VDEC0_0] = mmDCORE0_VDEC0_BMON_0_BASE,
631 	[GAUDI2_BMON_DCORE0_VDEC0_1] = mmDCORE0_VDEC0_BMON_1_BASE,
632 	[GAUDI2_BMON_DCORE0_VDEC0_2] = mmDCORE0_VDEC0_BMON_2_BASE,
633 	[GAUDI2_BMON_DCORE0_VDEC1_0] = mmDCORE0_VDEC1_BMON_0_BASE,
634 	[GAUDI2_BMON_DCORE0_VDEC1_1] = mmDCORE0_VDEC1_BMON_1_BASE,
635 	[GAUDI2_BMON_DCORE0_VDEC1_2] = mmDCORE0_VDEC1_BMON_2_BASE,
636 	[GAUDI2_BMON_DCORE1_HMMU0_0] = mmDCORE1_HMMU0_BMON_0_BASE,
637 	[GAUDI2_BMON_DCORE1_HMMU0_1] = mmDCORE1_HMMU0_BMON_1_BASE,
638 	[GAUDI2_BMON_DCORE1_HMMU0_3] = mmDCORE1_HMMU0_BMON_3_BASE,
639 	[GAUDI2_BMON_DCORE1_HMMU0_2] = mmDCORE1_HMMU0_BMON_2_BASE,
640 	[GAUDI2_BMON_DCORE1_HMMU0_4] = mmDCORE1_HMMU0_BMON_4_BASE,
641 	[GAUDI2_BMON_DCORE1_HMMU1_0] = mmDCORE1_HMMU1_BMON_0_BASE,
642 	[GAUDI2_BMON_DCORE1_HMMU1_1] = mmDCORE1_HMMU1_BMON_1_BASE,
643 	[GAUDI2_BMON_DCORE1_HMMU1_3] = mmDCORE1_HMMU1_BMON_3_BASE,
644 	[GAUDI2_BMON_DCORE1_HMMU1_2] = mmDCORE1_HMMU1_BMON_2_BASE,
645 	[GAUDI2_BMON_DCORE1_HMMU1_4] = mmDCORE1_HMMU1_BMON_4_BASE,
646 	[GAUDI2_BMON_DCORE1_HMMU2_0] = mmDCORE1_HMMU2_BMON_0_BASE,
647 	[GAUDI2_BMON_DCORE1_HMMU2_1] = mmDCORE1_HMMU2_BMON_1_BASE,
648 	[GAUDI2_BMON_DCORE1_HMMU2_3] = mmDCORE1_HMMU2_BMON_3_BASE,
649 	[GAUDI2_BMON_DCORE1_HMMU2_2] = mmDCORE1_HMMU2_BMON_2_BASE,
650 	[GAUDI2_BMON_DCORE1_HMMU2_4] = mmDCORE1_HMMU2_BMON_4_BASE,
651 	[GAUDI2_BMON_DCORE1_HMMU3_0] = mmDCORE1_HMMU3_BMON_0_BASE,
652 	[GAUDI2_BMON_DCORE1_HMMU3_1] = mmDCORE1_HMMU3_BMON_1_BASE,
653 	[GAUDI2_BMON_DCORE1_HMMU3_3] = mmDCORE1_HMMU3_BMON_3_BASE,
654 	[GAUDI2_BMON_DCORE1_HMMU3_2] = mmDCORE1_HMMU3_BMON_2_BASE,
655 	[GAUDI2_BMON_DCORE1_HMMU3_4] = mmDCORE1_HMMU3_BMON_4_BASE,
656 	[GAUDI2_BMON_DCORE1_MME_CTRL_0] = mmDCORE1_MME_CTRL_BMON0_BASE,
657 	[GAUDI2_BMON_DCORE1_MME_CTRL_1] = mmDCORE1_MME_CTRL_BMON1_BASE,
658 	[GAUDI2_BMON_DCORE1_MME_CTRL_2] = mmDCORE1_MME_CTRL_BMON2_BASE,
659 	[GAUDI2_BMON_DCORE1_MME_CTRL_3] = mmDCORE1_MME_CTRL_BMON3_BASE,
660 	[GAUDI2_BMON_DCORE1_MME_SBTE0_0] = mmDCORE1_MME_SBTE0_BMON0_BASE,
661 	[GAUDI2_BMON_DCORE1_MME_SBTE1_0] = mmDCORE1_MME_SBTE1_BMON0_BASE,
662 	[GAUDI2_BMON_DCORE1_MME_SBTE2_0] = mmDCORE1_MME_SBTE2_BMON0_BASE,
663 	[GAUDI2_BMON_DCORE1_MME_SBTE3_0] = mmDCORE1_MME_SBTE3_BMON0_BASE,
664 	[GAUDI2_BMON_DCORE1_MME_SBTE4_0] = mmDCORE1_MME_SBTE4_BMON0_BASE,
665 	[GAUDI2_BMON_DCORE1_MME_ACC_0] = mmDCORE1_MME_ACC_BMON0_BASE,
666 	[GAUDI2_BMON_DCORE1_MME_ACC_1] = mmDCORE1_MME_ACC_BMON1_BASE,
667 	[GAUDI2_BMON_DCORE1_SM] = mmDCORE1_SM_BMON_BASE,
668 	[GAUDI2_BMON_DCORE1_SM_1] = mmDCORE1_SM_BMON1_BASE,
669 	[GAUDI2_BMON_DCORE1_EDMA0_0] = mmDCORE1_EDMA0_BMON_0_BASE,
670 	[GAUDI2_BMON_DCORE1_EDMA0_1] = mmDCORE1_EDMA0_BMON_1_BASE,
671 	[GAUDI2_BMON_DCORE1_EDMA1_0] = mmDCORE1_EDMA1_BMON_0_BASE,
672 	[GAUDI2_BMON_DCORE1_EDMA1_1] = mmDCORE1_EDMA1_BMON_1_BASE,
673 	[GAUDI2_BMON_DCORE1_VDEC0_0] = mmDCORE1_VDEC0_BMON_0_BASE,
674 	[GAUDI2_BMON_DCORE1_VDEC0_1] = mmDCORE1_VDEC0_BMON_1_BASE,
675 	[GAUDI2_BMON_DCORE1_VDEC0_2] = mmDCORE1_VDEC0_BMON_2_BASE,
676 	[GAUDI2_BMON_DCORE1_VDEC1_0] = mmDCORE1_VDEC1_BMON_0_BASE,
677 	[GAUDI2_BMON_DCORE1_VDEC1_1] = mmDCORE1_VDEC1_BMON_1_BASE,
678 	[GAUDI2_BMON_DCORE1_VDEC1_2] = mmDCORE1_VDEC1_BMON_2_BASE,
679 	[GAUDI2_BMON_DCORE2_HMMU0_0] = mmDCORE2_HMMU0_BMON_0_BASE,
680 	[GAUDI2_BMON_DCORE2_HMMU0_1] = mmDCORE2_HMMU0_BMON_1_BASE,
681 	[GAUDI2_BMON_DCORE2_HMMU0_3] = mmDCORE2_HMMU0_BMON_3_BASE,
682 	[GAUDI2_BMON_DCORE2_HMMU0_2] = mmDCORE2_HMMU0_BMON_2_BASE,
683 	[GAUDI2_BMON_DCORE2_HMMU0_4] = mmDCORE2_HMMU0_BMON_4_BASE,
684 	[GAUDI2_BMON_DCORE2_HMMU1_0] = mmDCORE2_HMMU1_BMON_0_BASE,
685 	[GAUDI2_BMON_DCORE2_HMMU1_1] = mmDCORE2_HMMU1_BMON_1_BASE,
686 	[GAUDI2_BMON_DCORE2_HMMU1_3] = mmDCORE2_HMMU1_BMON_3_BASE,
687 	[GAUDI2_BMON_DCORE2_HMMU1_2] = mmDCORE2_HMMU1_BMON_2_BASE,
688 	[GAUDI2_BMON_DCORE2_HMMU1_4] = mmDCORE2_HMMU1_BMON_4_BASE,
689 	[GAUDI2_BMON_DCORE2_HMMU2_0] = mmDCORE2_HMMU2_BMON_0_BASE,
690 	[GAUDI2_BMON_DCORE2_HMMU2_1] = mmDCORE2_HMMU2_BMON_1_BASE,
691 	[GAUDI2_BMON_DCORE2_HMMU2_3] = mmDCORE2_HMMU2_BMON_3_BASE,
692 	[GAUDI2_BMON_DCORE2_HMMU2_2] = mmDCORE2_HMMU2_BMON_2_BASE,
693 	[GAUDI2_BMON_DCORE2_HMMU2_4] = mmDCORE2_HMMU2_BMON_4_BASE,
694 	[GAUDI2_BMON_DCORE2_HMMU3_0] = mmDCORE2_HMMU3_BMON_0_BASE,
695 	[GAUDI2_BMON_DCORE2_HMMU3_1] = mmDCORE2_HMMU3_BMON_1_BASE,
696 	[GAUDI2_BMON_DCORE2_HMMU3_3] = mmDCORE2_HMMU3_BMON_3_BASE,
697 	[GAUDI2_BMON_DCORE2_HMMU3_2] = mmDCORE2_HMMU3_BMON_2_BASE,
698 	[GAUDI2_BMON_DCORE2_HMMU3_4] = mmDCORE2_HMMU3_BMON_4_BASE,
699 	[GAUDI2_BMON_DCORE2_MME_CTRL_0] = mmDCORE2_MME_CTRL_BMON0_BASE,
700 	[GAUDI2_BMON_DCORE2_MME_CTRL_1] = mmDCORE2_MME_CTRL_BMON1_BASE,
701 	[GAUDI2_BMON_DCORE2_MME_CTRL_2] = mmDCORE2_MME_CTRL_BMON2_BASE,
702 	[GAUDI2_BMON_DCORE2_MME_CTRL_3] = mmDCORE2_MME_CTRL_BMON3_BASE,
703 	[GAUDI2_BMON_DCORE2_MME_SBTE0_0] = mmDCORE2_MME_SBTE0_BMON0_BASE,
704 	[GAUDI2_BMON_DCORE2_MME_SBTE1_0] = mmDCORE2_MME_SBTE1_BMON0_BASE,
705 	[GAUDI2_BMON_DCORE2_MME_SBTE2_0] = mmDCORE2_MME_SBTE2_BMON0_BASE,
706 	[GAUDI2_BMON_DCORE2_MME_SBTE3_0] = mmDCORE2_MME_SBTE3_BMON0_BASE,
707 	[GAUDI2_BMON_DCORE2_MME_SBTE4_0] = mmDCORE2_MME_SBTE4_BMON0_BASE,
708 	[GAUDI2_BMON_DCORE2_MME_ACC_0] = mmDCORE2_MME_ACC_BMON0_BASE,
709 	[GAUDI2_BMON_DCORE2_MME_ACC_1] = mmDCORE2_MME_ACC_BMON1_BASE,
710 	[GAUDI2_BMON_DCORE2_SM] = mmDCORE2_SM_BMON_BASE,
711 	[GAUDI2_BMON_DCORE2_SM_1] = mmDCORE2_SM_BMON1_BASE,
712 	[GAUDI2_BMON_DCORE2_EDMA0_0] = mmDCORE2_EDMA0_BMON_0_BASE,
713 	[GAUDI2_BMON_DCORE2_EDMA0_1] = mmDCORE2_EDMA0_BMON_1_BASE,
714 	[GAUDI2_BMON_DCORE2_EDMA1_0] = mmDCORE2_EDMA1_BMON_0_BASE,
715 	[GAUDI2_BMON_DCORE2_EDMA1_1] = mmDCORE2_EDMA1_BMON_1_BASE,
716 	[GAUDI2_BMON_DCORE2_VDEC0_0] = mmDCORE2_VDEC0_BMON_0_BASE,
717 	[GAUDI2_BMON_DCORE2_VDEC0_1] = mmDCORE2_VDEC0_BMON_1_BASE,
718 	[GAUDI2_BMON_DCORE2_VDEC0_2] = mmDCORE2_VDEC0_BMON_2_BASE,
719 	[GAUDI2_BMON_DCORE2_VDEC1_0] = mmDCORE2_VDEC1_BMON_0_BASE,
720 	[GAUDI2_BMON_DCORE2_VDEC1_1] = mmDCORE2_VDEC1_BMON_1_BASE,
721 	[GAUDI2_BMON_DCORE2_VDEC1_2] = mmDCORE2_VDEC1_BMON_2_BASE,
722 	[GAUDI2_BMON_DCORE3_HMMU0_0] = mmDCORE3_HMMU0_BMON_0_BASE,
723 	[GAUDI2_BMON_DCORE3_HMMU0_1] = mmDCORE3_HMMU0_BMON_1_BASE,
724 	[GAUDI2_BMON_DCORE3_HMMU0_3] = mmDCORE3_HMMU0_BMON_3_BASE,
725 	[GAUDI2_BMON_DCORE3_HMMU0_2] = mmDCORE3_HMMU0_BMON_2_BASE,
726 	[GAUDI2_BMON_DCORE3_HMMU0_4] = mmDCORE3_HMMU0_BMON_4_BASE,
727 	[GAUDI2_BMON_DCORE3_HMMU1_0] = mmDCORE3_HMMU1_BMON_0_BASE,
728 	[GAUDI2_BMON_DCORE3_HMMU1_1] = mmDCORE3_HMMU1_BMON_1_BASE,
729 	[GAUDI2_BMON_DCORE3_HMMU1_3] = mmDCORE3_HMMU1_BMON_3_BASE,
730 	[GAUDI2_BMON_DCORE3_HMMU1_2] = mmDCORE3_HMMU1_BMON_2_BASE,
731 	[GAUDI2_BMON_DCORE3_HMMU1_4] = mmDCORE3_HMMU1_BMON_4_BASE,
732 	[GAUDI2_BMON_DCORE3_HMMU2_0] = mmDCORE3_HMMU2_BMON_0_BASE,
733 	[GAUDI2_BMON_DCORE3_HMMU2_1] = mmDCORE3_HMMU2_BMON_1_BASE,
734 	[GAUDI2_BMON_DCORE3_HMMU2_3] = mmDCORE3_HMMU2_BMON_3_BASE,
735 	[GAUDI2_BMON_DCORE3_HMMU2_2] = mmDCORE3_HMMU2_BMON_2_BASE,
736 	[GAUDI2_BMON_DCORE3_HMMU2_4] = mmDCORE3_HMMU2_BMON_4_BASE,
737 	[GAUDI2_BMON_DCORE3_HMMU3_0] = mmDCORE3_HMMU3_BMON_0_BASE,
738 	[GAUDI2_BMON_DCORE3_HMMU3_1] = mmDCORE3_HMMU3_BMON_1_BASE,
739 	[GAUDI2_BMON_DCORE3_HMMU3_3] = mmDCORE3_HMMU3_BMON_3_BASE,
740 	[GAUDI2_BMON_DCORE3_HMMU3_2] = mmDCORE3_HMMU3_BMON_2_BASE,
741 	[GAUDI2_BMON_DCORE3_HMMU3_4] = mmDCORE3_HMMU3_BMON_4_BASE,
742 	[GAUDI2_BMON_DCORE3_MME_CTRL_0] = mmDCORE3_MME_CTRL_BMON0_BASE,
743 	[GAUDI2_BMON_DCORE3_MME_CTRL_1] = mmDCORE3_MME_CTRL_BMON1_BASE,
744 	[GAUDI2_BMON_DCORE3_MME_CTRL_2] = mmDCORE3_MME_CTRL_BMON2_BASE,
745 	[GAUDI2_BMON_DCORE3_MME_CTRL_3] = mmDCORE3_MME_CTRL_BMON3_BASE,
746 	[GAUDI2_BMON_DCORE3_MME_SBTE0_0] = mmDCORE3_MME_SBTE0_BMON0_BASE,
747 	[GAUDI2_BMON_DCORE3_MME_SBTE1_0] = mmDCORE3_MME_SBTE1_BMON0_BASE,
748 	[GAUDI2_BMON_DCORE3_MME_SBTE2_0] = mmDCORE3_MME_SBTE2_BMON0_BASE,
749 	[GAUDI2_BMON_DCORE3_MME_SBTE3_0] = mmDCORE3_MME_SBTE3_BMON0_BASE,
750 	[GAUDI2_BMON_DCORE3_MME_SBTE4_0] = mmDCORE3_MME_SBTE4_BMON0_BASE,
751 	[GAUDI2_BMON_DCORE3_MME_ACC_0] = mmDCORE3_MME_ACC_BMON0_BASE,
752 	[GAUDI2_BMON_DCORE3_MME_ACC_1] = mmDCORE3_MME_ACC_BMON1_BASE,
753 	[GAUDI2_BMON_DCORE3_SM] = mmDCORE3_SM_BMON_BASE,
754 	[GAUDI2_BMON_DCORE3_SM_1] = mmDCORE3_SM_BMON1_BASE,
755 	[GAUDI2_BMON_DCORE3_EDMA0_0] = mmDCORE3_EDMA0_BMON_0_BASE,
756 	[GAUDI2_BMON_DCORE3_EDMA0_1] = mmDCORE3_EDMA0_BMON_1_BASE,
757 	[GAUDI2_BMON_DCORE3_EDMA1_0] = mmDCORE3_EDMA1_BMON_0_BASE,
758 	[GAUDI2_BMON_DCORE3_EDMA1_1] = mmDCORE3_EDMA1_BMON_1_BASE,
759 	[GAUDI2_BMON_DCORE3_VDEC0_0] = mmDCORE3_VDEC0_BMON_0_BASE,
760 	[GAUDI2_BMON_DCORE3_VDEC0_1] = mmDCORE3_VDEC0_BMON_1_BASE,
761 	[GAUDI2_BMON_DCORE3_VDEC0_2] = mmDCORE3_VDEC0_BMON_2_BASE,
762 	[GAUDI2_BMON_DCORE3_VDEC1_0] = mmDCORE3_VDEC1_BMON_0_BASE,
763 	[GAUDI2_BMON_DCORE3_VDEC1_1] = mmDCORE3_VDEC1_BMON_1_BASE,
764 	[GAUDI2_BMON_DCORE3_VDEC1_2] = mmDCORE3_VDEC1_BMON_2_BASE,
765 	[GAUDI2_BMON_PCIE_MSTR_WR] = mmPCIE_BMON_MSTR_WR_BASE,
766 	[GAUDI2_BMON_PCIE_MSTR_RD] = mmPCIE_BMON_MSTR_RD_BASE,
767 	[GAUDI2_BMON_PCIE_SLV_WR] = mmPCIE_BMON_SLV_WR_BASE,
768 	[GAUDI2_BMON_PCIE_SLV_RD] = mmPCIE_BMON_SLV_RD_BASE,
769 	[GAUDI2_BMON_PSOC_ARC0_0] = 0,
770 	[GAUDI2_BMON_PSOC_ARC0_1] = 0,
771 	[GAUDI2_BMON_PSOC_ARC1_0] = 0,
772 	[GAUDI2_BMON_PSOC_ARC1_1] = 0,
773 	[GAUDI2_BMON_PDMA0_0] = mmPDMA0_BMON_0_BASE,
774 	[GAUDI2_BMON_PDMA0_1] = mmPDMA0_BMON_1_BASE,
775 	[GAUDI2_BMON_PDMA1_0] = mmPDMA1_BMON_0_BASE,
776 	[GAUDI2_BMON_PDMA1_1] = mmPDMA1_BMON_1_BASE,
777 	[GAUDI2_BMON_CPU_WR] = mmCPU_WR_BMON_BASE,
778 	[GAUDI2_BMON_CPU_RD] = mmCPU_RD_BMON_BASE,
779 	[GAUDI2_BMON_PMMU_0] = mmPMMU_BMON_0_BASE,
780 	[GAUDI2_BMON_PMMU_1] = mmPMMU_BMON_1_BASE,
781 	[GAUDI2_BMON_PMMU_2] = mmPMMU_BMON_2_BASE,
782 	[GAUDI2_BMON_PMMU_3] = mmPMMU_BMON_3_BASE,
783 	[GAUDI2_BMON_PMMU_4] = mmPMMU_BMON_4_BASE,
784 	[GAUDI2_BMON_ROT0_0] = mmROT0_BMON_0_BASE,
785 	[GAUDI2_BMON_ROT0_1] = mmROT0_BMON_1_BASE,
786 	[GAUDI2_BMON_ROT0_2] = mmROT0_BMON_2_BASE,
787 	[GAUDI2_BMON_ROT0_3] = mmROT0_BMON_3_BASE,
788 	[GAUDI2_BMON_ROT1_0] = mmROT1_BMON_0_BASE,
789 	[GAUDI2_BMON_ROT1_1] = mmROT1_BMON_1_BASE,
790 	[GAUDI2_BMON_ROT1_2] = mmROT1_BMON_2_BASE,
791 	[GAUDI2_BMON_ROT1_3] = mmROT1_BMON_3_BASE,
792 	[GAUDI2_BMON_ARC_FARM_0] = mmARC_FARM_BMON_0_BASE,
793 	[GAUDI2_BMON_ARC_FARM_1] = mmARC_FARM_BMON_1_BASE,
794 	[GAUDI2_BMON_ARC_FARM_2] = mmARC_FARM_BMON_2_BASE,
795 	[GAUDI2_BMON_ARC_FARM_3] = mmARC_FARM_BMON_3_BASE,
796 	[GAUDI2_BMON_KDMA_0] = mmKDMA_BMON_0_BASE,
797 	[GAUDI2_BMON_KDMA_1] = mmKDMA_BMON_1_BASE,
798 	[GAUDI2_BMON_KDMA_2] = mmKDMA_BMON_2_BASE,
799 	[GAUDI2_BMON_KDMA_3] = mmKDMA_BMON_3_BASE,
800 	[GAUDI2_BMON_PCIE_VDEC0_0] = mmPCIE_VDEC0_BMON_0_BASE,
801 	[GAUDI2_BMON_PCIE_VDEC0_1] = mmPCIE_VDEC0_BMON_1_BASE,
802 	[GAUDI2_BMON_PCIE_VDEC0_2] = mmPCIE_VDEC0_BMON_2_BASE,
803 	[GAUDI2_BMON_PCIE_VDEC1_0] = mmPCIE_VDEC1_BMON_0_BASE,
804 	[GAUDI2_BMON_PCIE_VDEC1_1] = mmPCIE_VDEC1_BMON_1_BASE,
805 	[GAUDI2_BMON_PCIE_VDEC1_2] = mmPCIE_VDEC1_BMON_2_BASE,
806 	[GAUDI2_BMON_NIC0_DBG_0_0] = mmNIC0_DBG_BMON0_0_BASE,
807 	[GAUDI2_BMON_NIC0_DBG_1_0] = mmNIC0_DBG_BMON1_0_BASE,
808 	[GAUDI2_BMON_NIC0_DBG_2_0] = mmNIC0_DBG_BMON2_0_BASE,
809 	[GAUDI2_BMON_NIC0_DBG_0_1] = mmNIC0_DBG_BMON0_1_BASE,
810 	[GAUDI2_BMON_NIC0_DBG_1_1] = mmNIC0_DBG_BMON1_1_BASE,
811 	[GAUDI2_BMON_NIC0_DBG_2_1] = mmNIC0_DBG_BMON2_1_BASE,
812 	[GAUDI2_BMON_NIC1_DBG_0_0] = mmNIC1_DBG_BMON0_0_BASE,
813 	[GAUDI2_BMON_NIC1_DBG_1_0] = mmNIC1_DBG_BMON1_0_BASE,
814 	[GAUDI2_BMON_NIC1_DBG_2_0] = mmNIC1_DBG_BMON2_0_BASE,
815 	[GAUDI2_BMON_NIC1_DBG_0_1] = mmNIC1_DBG_BMON0_1_BASE,
816 	[GAUDI2_BMON_NIC1_DBG_1_1] = mmNIC1_DBG_BMON1_1_BASE,
817 	[GAUDI2_BMON_NIC1_DBG_2_1] = mmNIC1_DBG_BMON2_1_BASE,
818 	[GAUDI2_BMON_NIC2_DBG_0_0] = mmNIC2_DBG_BMON0_0_BASE,
819 	[GAUDI2_BMON_NIC2_DBG_1_0] = mmNIC2_DBG_BMON1_0_BASE,
820 	[GAUDI2_BMON_NIC2_DBG_2_0] = mmNIC2_DBG_BMON2_0_BASE,
821 	[GAUDI2_BMON_NIC2_DBG_0_1] = mmNIC2_DBG_BMON0_1_BASE,
822 	[GAUDI2_BMON_NIC2_DBG_1_1] = mmNIC2_DBG_BMON1_1_BASE,
823 	[GAUDI2_BMON_NIC2_DBG_2_1] = mmNIC2_DBG_BMON2_1_BASE,
824 	[GAUDI2_BMON_NIC3_DBG_0_0] = mmNIC3_DBG_BMON0_0_BASE,
825 	[GAUDI2_BMON_NIC3_DBG_1_0] = mmNIC3_DBG_BMON1_0_BASE,
826 	[GAUDI2_BMON_NIC3_DBG_2_0] = mmNIC3_DBG_BMON2_0_BASE,
827 	[GAUDI2_BMON_NIC3_DBG_0_1] = mmNIC3_DBG_BMON0_1_BASE,
828 	[GAUDI2_BMON_NIC3_DBG_1_1] = mmNIC3_DBG_BMON1_1_BASE,
829 	[GAUDI2_BMON_NIC3_DBG_2_1] = mmNIC3_DBG_BMON2_1_BASE,
830 	[GAUDI2_BMON_NIC4_DBG_0_0] = mmNIC4_DBG_BMON0_0_BASE,
831 	[GAUDI2_BMON_NIC4_DBG_1_0] = mmNIC4_DBG_BMON1_0_BASE,
832 	[GAUDI2_BMON_NIC4_DBG_2_0] = mmNIC4_DBG_BMON2_0_BASE,
833 	[GAUDI2_BMON_NIC4_DBG_0_1] = mmNIC4_DBG_BMON0_1_BASE,
834 	[GAUDI2_BMON_NIC4_DBG_1_1] = mmNIC4_DBG_BMON1_1_BASE,
835 	[GAUDI2_BMON_NIC4_DBG_2_1] = mmNIC4_DBG_BMON2_1_BASE,
836 	[GAUDI2_BMON_NIC5_DBG_0_0] = mmNIC5_DBG_BMON0_0_BASE,
837 	[GAUDI2_BMON_NIC5_DBG_1_0] = mmNIC5_DBG_BMON1_0_BASE,
838 	[GAUDI2_BMON_NIC5_DBG_2_0] = mmNIC5_DBG_BMON2_0_BASE,
839 	[GAUDI2_BMON_NIC5_DBG_0_1] = mmNIC5_DBG_BMON0_1_BASE,
840 	[GAUDI2_BMON_NIC5_DBG_1_1] = mmNIC5_DBG_BMON1_1_BASE,
841 	[GAUDI2_BMON_NIC5_DBG_2_1] = mmNIC5_DBG_BMON2_1_BASE,
842 	[GAUDI2_BMON_NIC6_DBG_0_0] = mmNIC6_DBG_BMON0_0_BASE,
843 	[GAUDI2_BMON_NIC6_DBG_1_0] = mmNIC6_DBG_BMON1_0_BASE,
844 	[GAUDI2_BMON_NIC6_DBG_2_0] = mmNIC6_DBG_BMON2_0_BASE,
845 	[GAUDI2_BMON_NIC6_DBG_0_1] = mmNIC6_DBG_BMON0_1_BASE,
846 	[GAUDI2_BMON_NIC6_DBG_1_1] = mmNIC6_DBG_BMON1_1_BASE,
847 	[GAUDI2_BMON_NIC6_DBG_2_1] = mmNIC6_DBG_BMON2_1_BASE,
848 	[GAUDI2_BMON_NIC7_DBG_0_0] = mmNIC7_DBG_BMON0_0_BASE,
849 	[GAUDI2_BMON_NIC7_DBG_1_0] = mmNIC7_DBG_BMON1_0_BASE,
850 	[GAUDI2_BMON_NIC7_DBG_2_0] = mmNIC7_DBG_BMON2_0_BASE,
851 	[GAUDI2_BMON_NIC7_DBG_0_1] = mmNIC7_DBG_BMON0_1_BASE,
852 	[GAUDI2_BMON_NIC7_DBG_1_1] = mmNIC7_DBG_BMON1_1_BASE,
853 	[GAUDI2_BMON_NIC7_DBG_2_1] = mmNIC7_DBG_BMON2_1_BASE,
854 	[GAUDI2_BMON_NIC8_DBG_0_0] = mmNIC8_DBG_BMON0_0_BASE,
855 	[GAUDI2_BMON_NIC8_DBG_1_0] = mmNIC8_DBG_BMON1_0_BASE,
856 	[GAUDI2_BMON_NIC8_DBG_2_0] = mmNIC8_DBG_BMON2_0_BASE,
857 	[GAUDI2_BMON_NIC8_DBG_0_1] = mmNIC8_DBG_BMON0_1_BASE,
858 	[GAUDI2_BMON_NIC8_DBG_1_1] = mmNIC8_DBG_BMON1_1_BASE,
859 	[GAUDI2_BMON_NIC8_DBG_2_1] = mmNIC8_DBG_BMON2_1_BASE,
860 	[GAUDI2_BMON_NIC9_DBG_0_0] = mmNIC9_DBG_BMON0_0_BASE,
861 	[GAUDI2_BMON_NIC9_DBG_1_0] = mmNIC9_DBG_BMON1_0_BASE,
862 	[GAUDI2_BMON_NIC9_DBG_2_0] = mmNIC9_DBG_BMON2_0_BASE,
863 	[GAUDI2_BMON_NIC9_DBG_0_1] = mmNIC9_DBG_BMON0_1_BASE,
864 	[GAUDI2_BMON_NIC9_DBG_1_1] = mmNIC9_DBG_BMON1_1_BASE,
865 	[GAUDI2_BMON_NIC9_DBG_2_1] = mmNIC9_DBG_BMON2_1_BASE,
866 	[GAUDI2_BMON_NIC10_DBG_0_0] = mmNIC10_DBG_BMON0_0_BASE,
867 	[GAUDI2_BMON_NIC10_DBG_1_0] = mmNIC10_DBG_BMON1_0_BASE,
868 	[GAUDI2_BMON_NIC10_DBG_2_0] = mmNIC10_DBG_BMON2_0_BASE,
869 	[GAUDI2_BMON_NIC10_DBG_0_1] = mmNIC10_DBG_BMON0_1_BASE,
870 	[GAUDI2_BMON_NIC10_DBG_1_1] = mmNIC10_DBG_BMON1_1_BASE,
871 	[GAUDI2_BMON_NIC10_DBG_2_1] = mmNIC10_DBG_BMON2_1_BASE,
872 	[GAUDI2_BMON_NIC11_DBG_0_0] = mmNIC11_DBG_BMON0_0_BASE,
873 	[GAUDI2_BMON_NIC11_DBG_1_0] = mmNIC11_DBG_BMON1_0_BASE,
874 	[GAUDI2_BMON_NIC11_DBG_2_0] = mmNIC11_DBG_BMON2_0_BASE,
875 	[GAUDI2_BMON_NIC11_DBG_0_1] = mmNIC11_DBG_BMON0_1_BASE,
876 	[GAUDI2_BMON_NIC11_DBG_1_1] = mmNIC11_DBG_BMON1_1_BASE,
877 	[GAUDI2_BMON_NIC11_DBG_2_1] = mmNIC11_DBG_BMON2_1_BASE
878 };
879 
880 static u64 debug_spmu_regs[GAUDI2_SPMU_LAST + 1] = {
881 	[GAUDI2_SPMU_DCORE0_TPC0_EML] = mmDCORE0_TPC0_EML_SPMU_BASE,
882 	[GAUDI2_SPMU_DCORE0_TPC1_EML] = mmDCORE0_TPC1_EML_SPMU_BASE,
883 	[GAUDI2_SPMU_DCORE0_TPC2_EML] = mmDCORE0_TPC2_EML_SPMU_BASE,
884 	[GAUDI2_SPMU_DCORE0_TPC3_EML] = mmDCORE0_TPC3_EML_SPMU_BASE,
885 	[GAUDI2_SPMU_DCORE0_TPC4_EML] = mmDCORE0_TPC4_EML_SPMU_BASE,
886 	[GAUDI2_SPMU_DCORE0_TPC5_EML] = mmDCORE0_TPC5_EML_SPMU_BASE,
887 	[GAUDI2_SPMU_DCORE0_TPC6_EML] = mmDCORE0_TPC6_EML_SPMU_BASE,
888 	[GAUDI2_SPMU_DCORE1_TPC0_EML] = mmDCORE1_TPC0_EML_SPMU_BASE,
889 	[GAUDI2_SPMU_DCORE1_TPC1_EML] = mmDCORE1_TPC1_EML_SPMU_BASE,
890 	[GAUDI2_SPMU_DCORE1_TPC2_EML] = mmDCORE1_TPC2_EML_SPMU_BASE,
891 	[GAUDI2_SPMU_DCORE1_TPC3_EML] = mmDCORE1_TPC3_EML_SPMU_BASE,
892 	[GAUDI2_SPMU_DCORE1_TPC4_EML] = mmDCORE1_TPC4_EML_SPMU_BASE,
893 	[GAUDI2_SPMU_DCORE1_TPC5_EML] = mmDCORE1_TPC5_EML_SPMU_BASE,
894 	[GAUDI2_SPMU_DCORE2_TPC0_EML] = mmDCORE2_TPC0_EML_SPMU_BASE,
895 	[GAUDI2_SPMU_DCORE2_TPC1_EML] = mmDCORE2_TPC1_EML_SPMU_BASE,
896 	[GAUDI2_SPMU_DCORE2_TPC2_EML] = mmDCORE2_TPC2_EML_SPMU_BASE,
897 	[GAUDI2_SPMU_DCORE2_TPC3_EML] = mmDCORE2_TPC3_EML_SPMU_BASE,
898 	[GAUDI2_SPMU_DCORE2_TPC4_EML] = mmDCORE2_TPC4_EML_SPMU_BASE,
899 	[GAUDI2_SPMU_DCORE2_TPC5_EML] = mmDCORE2_TPC5_EML_SPMU_BASE,
900 	[GAUDI2_SPMU_DCORE3_TPC0_EML] = mmDCORE3_TPC0_EML_SPMU_BASE,
901 	[GAUDI2_SPMU_DCORE3_TPC1_EML] = mmDCORE3_TPC1_EML_SPMU_BASE,
902 	[GAUDI2_SPMU_DCORE3_TPC2_EML] = mmDCORE3_TPC2_EML_SPMU_BASE,
903 	[GAUDI2_SPMU_DCORE3_TPC3_EML] = mmDCORE3_TPC3_EML_SPMU_BASE,
904 	[GAUDI2_SPMU_DCORE3_TPC4_EML] = mmDCORE3_TPC4_EML_SPMU_BASE,
905 	[GAUDI2_SPMU_DCORE3_TPC5_EML] = mmDCORE3_TPC5_EML_SPMU_BASE,
906 	[GAUDI2_SPMU_DCORE0_HMMU0_CS] = mmDCORE0_HMMU0_CS_SPMU_BASE,
907 	[GAUDI2_SPMU_DCORE0_HMMU1_CS] = mmDCORE0_HMMU1_CS_SPMU_BASE,
908 	[GAUDI2_SPMU_DCORE0_HMMU2_CS] = mmDCORE0_HMMU2_CS_SPMU_BASE,
909 	[GAUDI2_SPMU_DCORE0_HMMU3_CS] = mmDCORE0_HMMU3_CS_SPMU_BASE,
910 	[GAUDI2_SPMU_DCORE0_MME_CTRL] = mmDCORE0_MME_CTRL_SPMU_BASE,
911 	[GAUDI2_SPMU_DCORE0_MME_SBTE0] = mmDCORE0_MME_SBTE0_SPMU_BASE,
912 	[GAUDI2_SPMU_DCORE0_MME_SBTE1] = mmDCORE0_MME_SBTE1_SPMU_BASE,
913 	[GAUDI2_SPMU_DCORE0_MME_SBTE2] = mmDCORE0_MME_SBTE2_SPMU_BASE,
914 	[GAUDI2_SPMU_DCORE0_MME_SBTE3] = mmDCORE0_MME_SBTE3_SPMU_BASE,
915 	[GAUDI2_SPMU_DCORE0_MME_SBTE4] = mmDCORE0_MME_SBTE4_SPMU_BASE,
916 	[GAUDI2_SPMU_DCORE0_MME_ACC] = mmDCORE0_MME_ACC_SPMU_BASE,
917 	[GAUDI2_SPMU_DCORE0_SM] = mmDCORE0_SM_SPMU_BASE,
918 	[GAUDI2_SPMU_DCORE0_EDMA0_CS] = mmDCORE0_EDMA0_CS_SPMU_BASE,
919 	[GAUDI2_SPMU_DCORE0_EDMA1_CS] = mmDCORE0_EDMA1_CS_SPMU_BASE,
920 	[GAUDI2_SPMU_DCORE0_VDEC0_CS] = mmDCORE0_VDEC0_CS_SPMU_BASE,
921 	[GAUDI2_SPMU_DCORE0_VDEC1_CS] = mmDCORE0_VDEC1_CS_SPMU_BASE,
922 	[GAUDI2_SPMU_DCORE1_HMMU0_CS] = mmDCORE1_HMMU0_CS_SPMU_BASE,
923 	[GAUDI2_SPMU_DCORE1_HMMU1_CS] = mmDCORE1_HMMU1_CS_SPMU_BASE,
924 	[GAUDI2_SPMU_DCORE1_HMMU2_CS] = mmDCORE1_HMMU2_CS_SPMU_BASE,
925 	[GAUDI2_SPMU_DCORE1_HMMU3_CS] = mmDCORE1_HMMU3_CS_SPMU_BASE,
926 	[GAUDI2_SPMU_DCORE1_MME_CTRL] = mmDCORE1_MME_CTRL_SPMU_BASE,
927 	[GAUDI2_SPMU_DCORE1_MME_SBTE0] = mmDCORE1_MME_SBTE0_SPMU_BASE,
928 	[GAUDI2_SPMU_DCORE1_MME_SBTE1] = mmDCORE1_MME_SBTE1_SPMU_BASE,
929 	[GAUDI2_SPMU_DCORE1_MME_SBTE2] = mmDCORE1_MME_SBTE2_SPMU_BASE,
930 	[GAUDI2_SPMU_DCORE1_MME_SBTE3] = mmDCORE1_MME_SBTE3_SPMU_BASE,
931 	[GAUDI2_SPMU_DCORE1_MME_SBTE4] = mmDCORE1_MME_SBTE4_SPMU_BASE,
932 	[GAUDI2_SPMU_DCORE1_MME_ACC] = mmDCORE1_MME_ACC_SPMU_BASE,
933 	[GAUDI2_SPMU_DCORE1_SM] = mmDCORE1_SM_SPMU_BASE,
934 	[GAUDI2_SPMU_DCORE1_EDMA0_CS] = mmDCORE1_EDMA0_CS_SPMU_BASE,
935 	[GAUDI2_SPMU_DCORE1_EDMA1_CS] = mmDCORE1_EDMA1_CS_SPMU_BASE,
936 	[GAUDI2_SPMU_DCORE1_VDEC0_CS] = mmDCORE1_VDEC0_CS_SPMU_BASE,
937 	[GAUDI2_SPMU_DCORE1_VDEC1_CS] = mmDCORE1_VDEC1_CS_SPMU_BASE,
938 	[GAUDI2_SPMU_DCORE2_HMMU0_CS] = mmDCORE2_HMMU0_CS_SPMU_BASE,
939 	[GAUDI2_SPMU_DCORE2_HMMU1_CS] = mmDCORE2_HMMU1_CS_SPMU_BASE,
940 	[GAUDI2_SPMU_DCORE2_HMMU2_CS] = mmDCORE2_HMMU2_CS_SPMU_BASE,
941 	[GAUDI2_SPMU_DCORE2_HMMU3_CS] = mmDCORE2_HMMU3_CS_SPMU_BASE,
942 	[GAUDI2_SPMU_DCORE2_MME_CTRL] = mmDCORE2_MME_CTRL_SPMU_BASE,
943 	[GAUDI2_SPMU_DCORE2_MME_SBTE0] = mmDCORE2_MME_SBTE0_SPMU_BASE,
944 	[GAUDI2_SPMU_DCORE2_MME_SBTE1] = mmDCORE2_MME_SBTE1_SPMU_BASE,
945 	[GAUDI2_SPMU_DCORE2_MME_SBTE2] = mmDCORE2_MME_SBTE2_SPMU_BASE,
946 	[GAUDI2_SPMU_DCORE2_MME_SBTE3] = mmDCORE2_MME_SBTE3_SPMU_BASE,
947 	[GAUDI2_SPMU_DCORE2_MME_SBTE4] = mmDCORE2_MME_SBTE4_SPMU_BASE,
948 	[GAUDI2_SPMU_DCORE2_MME_ACC] = mmDCORE2_MME_ACC_SPMU_BASE,
949 	[GAUDI2_SPMU_DCORE2_SM] = mmDCORE2_SM_SPMU_BASE,
950 	[GAUDI2_SPMU_DCORE2_EDMA0_CS] = mmDCORE2_EDMA0_CS_SPMU_BASE,
951 	[GAUDI2_SPMU_DCORE2_EDMA1_CS] = mmDCORE2_EDMA1_CS_SPMU_BASE,
952 	[GAUDI2_SPMU_DCORE2_VDEC0_CS] = mmDCORE2_VDEC0_CS_SPMU_BASE,
953 	[GAUDI2_SPMU_DCORE2_VDEC1_CS] = mmDCORE2_VDEC1_CS_SPMU_BASE,
954 	[GAUDI2_SPMU_DCORE3_HMMU0_CS] = mmDCORE3_HMMU0_CS_SPMU_BASE,
955 	[GAUDI2_SPMU_DCORE3_HMMU1_CS] = mmDCORE3_HMMU1_CS_SPMU_BASE,
956 	[GAUDI2_SPMU_DCORE3_HMMU2_CS] = mmDCORE3_HMMU2_CS_SPMU_BASE,
957 	[GAUDI2_SPMU_DCORE3_HMMU3_CS] = mmDCORE3_HMMU3_CS_SPMU_BASE,
958 	[GAUDI2_SPMU_DCORE3_MME_CTRL] = mmDCORE3_MME_CTRL_SPMU_BASE,
959 	[GAUDI2_SPMU_DCORE3_MME_SBTE0] = mmDCORE3_MME_SBTE0_SPMU_BASE,
960 	[GAUDI2_SPMU_DCORE3_MME_SBTE1] = mmDCORE3_MME_SBTE1_SPMU_BASE,
961 	[GAUDI2_SPMU_DCORE3_MME_SBTE2] = mmDCORE3_MME_SBTE2_SPMU_BASE,
962 	[GAUDI2_SPMU_DCORE3_MME_SBTE3] = mmDCORE3_MME_SBTE3_SPMU_BASE,
963 	[GAUDI2_SPMU_DCORE3_MME_SBTE4] = mmDCORE3_MME_SBTE4_SPMU_BASE,
964 	[GAUDI2_SPMU_DCORE3_MME_ACC] = mmDCORE3_MME_ACC_SPMU_BASE,
965 	[GAUDI2_SPMU_DCORE3_SM] = mmDCORE3_SM_SPMU_BASE,
966 	[GAUDI2_SPMU_DCORE3_EDMA0_CS] = mmDCORE3_EDMA0_CS_SPMU_BASE,
967 	[GAUDI2_SPMU_DCORE3_EDMA1_CS] = mmDCORE3_EDMA1_CS_SPMU_BASE,
968 	[GAUDI2_SPMU_DCORE3_VDEC0_CS] = mmDCORE3_VDEC0_CS_SPMU_BASE,
969 	[GAUDI2_SPMU_DCORE3_VDEC1_CS] = mmDCORE3_VDEC1_CS_SPMU_BASE,
970 	[GAUDI2_SPMU_PCIE] = mmPCIE_SPMU_BASE,
971 	[GAUDI2_SPMU_PSOC_ARC0_CS] = 0,
972 	[GAUDI2_SPMU_PSOC_ARC1_CS] = 0,
973 	[GAUDI2_SPMU_PDMA0_CS] = mmPDMA0_CS_SPMU_BASE,
974 	[GAUDI2_SPMU_PDMA1_CS] = mmPDMA1_CS_SPMU_BASE,
975 	[GAUDI2_SPMU_PMMU_CS] = mmPMMU_CS_SPMU_BASE,
976 	[GAUDI2_SPMU_ROT0_CS] = mmROT0_CS_SPMU_BASE,
977 	[GAUDI2_SPMU_ROT1_CS] = mmROT1_CS_SPMU_BASE,
978 	[GAUDI2_SPMU_ARC_FARM_CS] = mmARC_FARM_CS_SPMU_BASE,
979 	[GAUDI2_SPMU_KDMA_CS] = mmKDMA_CS_SPMU_BASE,
980 	[GAUDI2_SPMU_PCIE_VDEC0_CS] = mmPCIE_VDEC0_CS_SPMU_BASE,
981 	[GAUDI2_SPMU_PCIE_VDEC1_CS] = mmPCIE_VDEC1_CS_SPMU_BASE,
982 	[GAUDI2_SPMU_HBM0_MC0_CS] = mmHBM0_MC0_CS_SPMU_BASE,
983 	[GAUDI2_SPMU_HBM0_MC1_CS] = mmHBM0_MC1_CS_SPMU_BASE,
984 	[GAUDI2_SPMU_HBM1_MC0_CS] = mmHBM1_MC0_CS_SPMU_BASE,
985 	[GAUDI2_SPMU_HBM1_MC1_CS] = mmHBM1_MC1_CS_SPMU_BASE,
986 	[GAUDI2_SPMU_HBM2_MC0_CS] = mmHBM2_MC0_CS_SPMU_BASE,
987 	[GAUDI2_SPMU_HBM2_MC1_CS] = mmHBM2_MC1_CS_SPMU_BASE,
988 	[GAUDI2_SPMU_HBM3_MC0_CS] = mmHBM3_MC0_CS_SPMU_BASE,
989 	[GAUDI2_SPMU_HBM3_MC1_CS] = mmHBM3_MC1_CS_SPMU_BASE,
990 	[GAUDI2_SPMU_HBM4_MC0_CS] = mmHBM4_MC0_CS_SPMU_BASE,
991 	[GAUDI2_SPMU_HBM4_MC1_CS] = mmHBM4_MC1_CS_SPMU_BASE,
992 	[GAUDI2_SPMU_HBM5_MC0_CS] = mmHBM5_MC0_CS_SPMU_BASE,
993 	[GAUDI2_SPMU_HBM5_MC1_CS] = mmHBM5_MC1_CS_SPMU_BASE,
994 	[GAUDI2_SPMU_NIC0_DBG_0] = mmNIC0_DBG_SPMU_0_BASE,
995 	[GAUDI2_SPMU_NIC0_DBG_1] = mmNIC0_DBG_SPMU_1_BASE,
996 	[GAUDI2_SPMU_NIC1_DBG_0] = mmNIC1_DBG_SPMU_0_BASE,
997 	[GAUDI2_SPMU_NIC1_DBG_1] = mmNIC1_DBG_SPMU_1_BASE,
998 	[GAUDI2_SPMU_NIC2_DBG_0] = mmNIC2_DBG_SPMU_0_BASE,
999 	[GAUDI2_SPMU_NIC2_DBG_1] = mmNIC2_DBG_SPMU_1_BASE,
1000 	[GAUDI2_SPMU_NIC3_DBG_0] = mmNIC3_DBG_SPMU_0_BASE,
1001 	[GAUDI2_SPMU_NIC3_DBG_1] = mmNIC3_DBG_SPMU_1_BASE,
1002 	[GAUDI2_SPMU_NIC4_DBG_0] = mmNIC4_DBG_SPMU_0_BASE,
1003 	[GAUDI2_SPMU_NIC4_DBG_1] = mmNIC4_DBG_SPMU_1_BASE,
1004 	[GAUDI2_SPMU_NIC5_DBG_0] = mmNIC5_DBG_SPMU_0_BASE,
1005 	[GAUDI2_SPMU_NIC5_DBG_1] = mmNIC5_DBG_SPMU_1_BASE,
1006 	[GAUDI2_SPMU_NIC6_DBG_0] = mmNIC6_DBG_SPMU_0_BASE,
1007 	[GAUDI2_SPMU_NIC6_DBG_1] = mmNIC6_DBG_SPMU_1_BASE,
1008 	[GAUDI2_SPMU_NIC7_DBG_0] = mmNIC7_DBG_SPMU_0_BASE,
1009 	[GAUDI2_SPMU_NIC7_DBG_1] = mmNIC7_DBG_SPMU_1_BASE,
1010 	[GAUDI2_SPMU_NIC8_DBG_0] = mmNIC8_DBG_SPMU_0_BASE,
1011 	[GAUDI2_SPMU_NIC8_DBG_1] = mmNIC8_DBG_SPMU_1_BASE,
1012 	[GAUDI2_SPMU_NIC9_DBG_0] = mmNIC9_DBG_SPMU_0_BASE,
1013 	[GAUDI2_SPMU_NIC9_DBG_1] = mmNIC9_DBG_SPMU_1_BASE,
1014 	[GAUDI2_SPMU_NIC10_DBG_0] = mmNIC10_DBG_SPMU_0_BASE,
1015 	[GAUDI2_SPMU_NIC10_DBG_1] = mmNIC10_DBG_SPMU_1_BASE,
1016 	[GAUDI2_SPMU_NIC11_DBG_0] = mmNIC11_DBG_SPMU_0_BASE,
1017 	[GAUDI2_SPMU_NIC11_DBG_1] = mmNIC11_DBG_SPMU_1_BASE
1018 };
1019 
1020 static struct component_config_offsets xbar_edge_binning_cfg_table[XBAR_EDGE_ID_SIZE] = {
1021 	[XBAR_EDGE_ID_DCORE0] = {
1022 		.funnel_id = GAUDI2_FUNNEL_DCORE0_XBAR_EDGE,
1023 		.etf_id = COMPONENT_ID_INVALID,
1024 		.stm_id = COMPONENT_ID_INVALID,
1025 		.spmu_id = COMPONENT_ID_INVALID,
1026 		.bmon_count = 0,
1027 		.bmon_ids = {COMPONENT_ID_INVALID}
1028 	},
1029 	[XBAR_EDGE_ID_DCORE1] = {
1030 		.funnel_id = GAUDI2_FUNNEL_DCORE1_XBAR_EDGE,
1031 		.etf_id = COMPONENT_ID_INVALID,
1032 		.stm_id = COMPONENT_ID_INVALID,
1033 		.spmu_id = COMPONENT_ID_INVALID,
1034 		.bmon_count = 0,
1035 		.bmon_ids = {COMPONENT_ID_INVALID}
1036 	},
1037 	[XBAR_EDGE_ID_DCORE2] = {
1038 		.funnel_id = GAUDI2_FUNNEL_DCORE2_XBAR_EDGE,
1039 		.etf_id = COMPONENT_ID_INVALID,
1040 		.stm_id = COMPONENT_ID_INVALID,
1041 		.spmu_id = COMPONENT_ID_INVALID,
1042 		.bmon_count = 0,
1043 		.bmon_ids = {COMPONENT_ID_INVALID}
1044 	},
1045 	[XBAR_EDGE_ID_DCORE3] = {
1046 		.funnel_id = GAUDI2_FUNNEL_DCORE3_XBAR_EDGE,
1047 		.etf_id = COMPONENT_ID_INVALID,
1048 		.stm_id = COMPONENT_ID_INVALID,
1049 		.spmu_id = COMPONENT_ID_INVALID,
1050 		.bmon_count = 0,
1051 		.bmon_ids = {COMPONENT_ID_INVALID}
1052 	},
1053 };
1054 
1055 
1056 static struct component_config_offsets hmmu_binning_cfg_table[HMMU_ID_SIZE] = {
1057 	[HMMU_ID_DCORE0_HMMU0] = {
1058 		.funnel_id = COMPONENT_ID_INVALID,
1059 		.etf_id = GAUDI2_ETF_DCORE0_HMMU0_CS,
1060 		.stm_id = GAUDI2_STM_DCORE0_HMMU0_CS,
1061 		.spmu_id = GAUDI2_SPMU_DCORE0_HMMU0_CS,
1062 		.bmon_count = 5,
1063 		.bmon_ids = {
1064 			GAUDI2_BMON_DCORE0_HMMU0_0,
1065 			GAUDI2_BMON_DCORE0_HMMU0_1,
1066 			GAUDI2_BMON_DCORE0_HMMU0_2,
1067 			GAUDI2_BMON_DCORE0_HMMU0_3,
1068 			GAUDI2_BMON_DCORE0_HMMU0_4,
1069 		}
1070 	},
1071 	[HMMU_ID_DCORE0_HMMU1] = {
1072 		.funnel_id = COMPONENT_ID_INVALID,
1073 		.etf_id = GAUDI2_ETF_DCORE0_HMMU1_CS,
1074 		.stm_id = GAUDI2_STM_DCORE0_HMMU1_CS,
1075 		.spmu_id = GAUDI2_SPMU_DCORE0_HMMU1_CS,
1076 		.bmon_count = 5,
1077 		.bmon_ids = {
1078 			GAUDI2_BMON_DCORE0_HMMU1_0,
1079 			GAUDI2_BMON_DCORE0_HMMU1_1,
1080 			GAUDI2_BMON_DCORE0_HMMU1_2,
1081 			GAUDI2_BMON_DCORE0_HMMU1_3,
1082 			GAUDI2_BMON_DCORE0_HMMU1_4,
1083 		}
1084 	},
1085 	[HMMU_ID_DCORE0_HMMU2] = {
1086 		.funnel_id = COMPONENT_ID_INVALID,
1087 		.etf_id = GAUDI2_ETF_DCORE0_HMMU2_CS,
1088 		.stm_id = GAUDI2_STM_DCORE0_HMMU2_CS,
1089 		.spmu_id = GAUDI2_SPMU_DCORE0_HMMU2_CS,
1090 		.bmon_count = 5,
1091 		.bmon_ids = {
1092 			GAUDI2_BMON_DCORE0_HMMU2_0,
1093 			GAUDI2_BMON_DCORE0_HMMU2_1,
1094 			GAUDI2_BMON_DCORE0_HMMU2_2,
1095 			GAUDI2_BMON_DCORE0_HMMU2_3,
1096 			GAUDI2_BMON_DCORE0_HMMU2_4,
1097 		}
1098 	},
1099 	[HMMU_ID_DCORE0_HMMU3] = {
1100 		.funnel_id = COMPONENT_ID_INVALID,
1101 		.etf_id = GAUDI2_ETF_DCORE0_HMMU3_CS,
1102 		.stm_id = GAUDI2_STM_DCORE0_HMMU3_CS,
1103 		.spmu_id = GAUDI2_SPMU_DCORE0_HMMU3_CS,
1104 		.bmon_count = 5,
1105 		.bmon_ids = {
1106 			GAUDI2_BMON_DCORE0_HMMU3_0,
1107 			GAUDI2_BMON_DCORE0_HMMU3_1,
1108 			GAUDI2_BMON_DCORE0_HMMU3_2,
1109 			GAUDI2_BMON_DCORE0_HMMU3_3,
1110 			GAUDI2_BMON_DCORE0_HMMU3_4,
1111 		}
1112 	},
1113 	[HMMU_ID_DCORE1_HMMU0] = {
1114 		.funnel_id = COMPONENT_ID_INVALID,
1115 		.etf_id = GAUDI2_ETF_DCORE1_HMMU0_CS,
1116 		.stm_id = GAUDI2_STM_DCORE1_HMMU0_CS,
1117 		.spmu_id = GAUDI2_SPMU_DCORE1_HMMU0_CS,
1118 		.bmon_count = 5,
1119 		.bmon_ids = {
1120 			GAUDI2_BMON_DCORE1_HMMU0_0,
1121 			GAUDI2_BMON_DCORE1_HMMU0_1,
1122 			GAUDI2_BMON_DCORE1_HMMU0_2,
1123 			GAUDI2_BMON_DCORE1_HMMU0_3,
1124 			GAUDI2_BMON_DCORE1_HMMU0_4,
1125 		}
1126 	},
1127 	[HMMU_ID_DCORE1_HMMU1] = {
1128 		.funnel_id = COMPONENT_ID_INVALID,
1129 		.etf_id = GAUDI2_ETF_DCORE1_HMMU1_CS,
1130 		.stm_id = GAUDI2_STM_DCORE1_HMMU1_CS,
1131 		.spmu_id = GAUDI2_SPMU_DCORE1_HMMU1_CS,
1132 		.bmon_count = 5,
1133 		.bmon_ids = {
1134 			GAUDI2_BMON_DCORE1_HMMU1_0,
1135 			GAUDI2_BMON_DCORE1_HMMU1_1,
1136 			GAUDI2_BMON_DCORE1_HMMU1_2,
1137 			GAUDI2_BMON_DCORE1_HMMU1_3,
1138 			GAUDI2_BMON_DCORE1_HMMU1_4,
1139 		}
1140 	},
1141 	[HMMU_ID_DCORE1_HMMU2] = {
1142 		.funnel_id = COMPONENT_ID_INVALID,
1143 		.etf_id = GAUDI2_ETF_DCORE1_HMMU2_CS,
1144 		.stm_id = GAUDI2_STM_DCORE1_HMMU2_CS,
1145 		.spmu_id = GAUDI2_SPMU_DCORE1_HMMU2_CS,
1146 		.bmon_count = 5,
1147 		.bmon_ids = {
1148 			GAUDI2_BMON_DCORE1_HMMU2_0,
1149 			GAUDI2_BMON_DCORE1_HMMU2_1,
1150 			GAUDI2_BMON_DCORE1_HMMU2_2,
1151 			GAUDI2_BMON_DCORE1_HMMU2_3,
1152 			GAUDI2_BMON_DCORE1_HMMU2_4,
1153 		}
1154 	},
1155 	[HMMU_ID_DCORE1_HMMU3] = {
1156 		.funnel_id = COMPONENT_ID_INVALID,
1157 		.etf_id = GAUDI2_ETF_DCORE1_HMMU3_CS,
1158 		.stm_id = GAUDI2_STM_DCORE1_HMMU3_CS,
1159 		.spmu_id = GAUDI2_SPMU_DCORE1_HMMU3_CS,
1160 		.bmon_count = 5,
1161 		.bmon_ids = {
1162 			GAUDI2_BMON_DCORE1_HMMU3_0,
1163 			GAUDI2_BMON_DCORE1_HMMU3_1,
1164 			GAUDI2_BMON_DCORE1_HMMU3_2,
1165 			GAUDI2_BMON_DCORE1_HMMU3_3,
1166 			GAUDI2_BMON_DCORE1_HMMU3_4,
1167 		}
1168 	},
1169 	[HMMU_ID_DCORE2_HMMU0] = {
1170 		.funnel_id = COMPONENT_ID_INVALID,
1171 		.etf_id = GAUDI2_ETF_DCORE2_HMMU0_CS,
1172 		.stm_id = GAUDI2_STM_DCORE2_HMMU0_CS,
1173 		.spmu_id = GAUDI2_SPMU_DCORE2_HMMU0_CS,
1174 		.bmon_count = 5,
1175 		.bmon_ids = {
1176 			GAUDI2_BMON_DCORE2_HMMU0_0,
1177 			GAUDI2_BMON_DCORE2_HMMU0_1,
1178 			GAUDI2_BMON_DCORE2_HMMU0_2,
1179 			GAUDI2_BMON_DCORE2_HMMU0_3,
1180 			GAUDI2_BMON_DCORE2_HMMU0_4,
1181 		}
1182 	},
1183 	[HMMU_ID_DCORE2_HMMU1] = {
1184 		.funnel_id = COMPONENT_ID_INVALID,
1185 		.etf_id = GAUDI2_ETF_DCORE2_HMMU1_CS,
1186 		.stm_id = GAUDI2_STM_DCORE2_HMMU1_CS,
1187 		.spmu_id = GAUDI2_SPMU_DCORE2_HMMU1_CS,
1188 		.bmon_count = 5,
1189 		.bmon_ids = {
1190 			GAUDI2_BMON_DCORE2_HMMU1_0,
1191 			GAUDI2_BMON_DCORE2_HMMU1_1,
1192 			GAUDI2_BMON_DCORE2_HMMU1_2,
1193 			GAUDI2_BMON_DCORE2_HMMU1_3,
1194 			GAUDI2_BMON_DCORE2_HMMU1_4,
1195 		}
1196 	},
1197 	[HMMU_ID_DCORE2_HMMU2] = {
1198 		.funnel_id = COMPONENT_ID_INVALID,
1199 		.etf_id = GAUDI2_ETF_DCORE2_HMMU2_CS,
1200 		.stm_id = GAUDI2_STM_DCORE2_HMMU2_CS,
1201 		.spmu_id = GAUDI2_SPMU_DCORE2_HMMU2_CS,
1202 		.bmon_count = 5,
1203 		.bmon_ids = {
1204 			GAUDI2_BMON_DCORE2_HMMU2_0,
1205 			GAUDI2_BMON_DCORE2_HMMU2_1,
1206 			GAUDI2_BMON_DCORE2_HMMU2_2,
1207 			GAUDI2_BMON_DCORE2_HMMU2_3,
1208 			GAUDI2_BMON_DCORE2_HMMU2_4,
1209 		}
1210 	},
1211 	[HMMU_ID_DCORE2_HMMU3] = {
1212 		.funnel_id = COMPONENT_ID_INVALID,
1213 		.etf_id = GAUDI2_ETF_DCORE2_HMMU3_CS,
1214 		.stm_id = GAUDI2_STM_DCORE2_HMMU3_CS,
1215 		.spmu_id = GAUDI2_SPMU_DCORE2_HMMU3_CS,
1216 		.bmon_count = 5,
1217 		.bmon_ids = {
1218 			GAUDI2_BMON_DCORE2_HMMU3_0,
1219 			GAUDI2_BMON_DCORE2_HMMU3_1,
1220 			GAUDI2_BMON_DCORE2_HMMU3_2,
1221 			GAUDI2_BMON_DCORE2_HMMU3_3,
1222 			GAUDI2_BMON_DCORE2_HMMU3_4,
1223 		}
1224 	},
1225 	[HMMU_ID_DCORE3_HMMU0] = {
1226 		.funnel_id = COMPONENT_ID_INVALID,
1227 		.etf_id = GAUDI2_ETF_DCORE3_HMMU0_CS,
1228 		.stm_id = GAUDI2_STM_DCORE3_HMMU0_CS,
1229 		.spmu_id = GAUDI2_SPMU_DCORE3_HMMU0_CS,
1230 		.bmon_count = 5,
1231 		.bmon_ids = {
1232 			GAUDI2_BMON_DCORE3_HMMU0_0,
1233 			GAUDI2_BMON_DCORE3_HMMU0_1,
1234 			GAUDI2_BMON_DCORE3_HMMU0_2,
1235 			GAUDI2_BMON_DCORE3_HMMU0_3,
1236 			GAUDI2_BMON_DCORE3_HMMU0_4,
1237 		}
1238 	},
1239 	[HMMU_ID_DCORE3_HMMU1] = {
1240 		.funnel_id = COMPONENT_ID_INVALID,
1241 		.etf_id = GAUDI2_ETF_DCORE3_HMMU1_CS,
1242 		.stm_id = GAUDI2_STM_DCORE3_HMMU1_CS,
1243 		.spmu_id = GAUDI2_SPMU_DCORE3_HMMU1_CS,
1244 		.bmon_count = 5,
1245 		.bmon_ids = {
1246 			GAUDI2_BMON_DCORE3_HMMU1_0,
1247 			GAUDI2_BMON_DCORE3_HMMU1_1,
1248 			GAUDI2_BMON_DCORE3_HMMU1_2,
1249 			GAUDI2_BMON_DCORE3_HMMU1_3,
1250 			GAUDI2_BMON_DCORE3_HMMU1_4,
1251 		}
1252 	},
1253 	[HMMU_ID_DCORE3_HMMU2] = {
1254 		.funnel_id = COMPONENT_ID_INVALID,
1255 		.etf_id = GAUDI2_ETF_DCORE3_HMMU2_CS,
1256 		.stm_id = GAUDI2_STM_DCORE3_HMMU2_CS,
1257 		.spmu_id = GAUDI2_SPMU_DCORE3_HMMU2_CS,
1258 		.bmon_count = 5,
1259 		.bmon_ids = {
1260 			GAUDI2_BMON_DCORE3_HMMU2_0,
1261 			GAUDI2_BMON_DCORE3_HMMU2_1,
1262 			GAUDI2_BMON_DCORE3_HMMU2_2,
1263 			GAUDI2_BMON_DCORE3_HMMU2_3,
1264 			GAUDI2_BMON_DCORE3_HMMU2_4,
1265 		}
1266 	},
1267 	[HMMU_ID_DCORE3_HMMU3] = {
1268 		.funnel_id = COMPONENT_ID_INVALID,
1269 		.etf_id = GAUDI2_ETF_DCORE3_HMMU3_CS,
1270 		.stm_id = GAUDI2_STM_DCORE3_HMMU3_CS,
1271 		.spmu_id = GAUDI2_SPMU_DCORE3_HMMU3_CS,
1272 		.bmon_count = 5,
1273 		.bmon_ids = {
1274 			GAUDI2_BMON_DCORE3_HMMU3_0,
1275 			GAUDI2_BMON_DCORE3_HMMU3_1,
1276 			GAUDI2_BMON_DCORE3_HMMU3_2,
1277 			GAUDI2_BMON_DCORE3_HMMU3_3,
1278 			GAUDI2_BMON_DCORE3_HMMU3_4,
1279 		}
1280 	},
1281 };
1282 
1283 static struct component_config_offsets hbm_mc0_binning_cfg_table[HBM_ID_SIZE] = {
1284 	[HBM_ID0] = {
1285 		.funnel_id = GAUDI2_FUNNEL_HBM0_MC0,
1286 		.etf_id = GAUDI2_ETF_HBM0_MC0_CS,
1287 		.stm_id = GAUDI2_STM_HBM0_MC0_CS,
1288 		.spmu_id = GAUDI2_SPMU_HBM0_MC0_CS,
1289 		.bmon_count = 0,
1290 		.bmon_ids = {COMPONENT_ID_INVALID}
1291 	},
1292 	[HBM_ID1] = {
1293 		.funnel_id = GAUDI2_FUNNEL_HBM1_MC0,
1294 		.etf_id = GAUDI2_ETF_HBM1_MC0_CS,
1295 		.stm_id = GAUDI2_STM_HBM1_MC0_CS,
1296 		.spmu_id = GAUDI2_SPMU_HBM1_MC0_CS,
1297 		.bmon_count = 0,
1298 		.bmon_ids = {COMPONENT_ID_INVALID}
1299 	},
1300 	[HBM_ID2] = {
1301 		.funnel_id = GAUDI2_FUNNEL_HBM2_MC0,
1302 		.etf_id = GAUDI2_ETF_HBM2_MC0_CS,
1303 		.stm_id = GAUDI2_STM_HBM2_MC0_CS,
1304 		.spmu_id = GAUDI2_SPMU_HBM2_MC0_CS,
1305 		.bmon_count = 0,
1306 		.bmon_ids = {COMPONENT_ID_INVALID}
1307 	},
1308 	[HBM_ID3] = {
1309 		.funnel_id = GAUDI2_FUNNEL_HBM3_MC0,
1310 		.etf_id = GAUDI2_ETF_HBM3_MC0_CS,
1311 		.stm_id = GAUDI2_STM_HBM3_MC0_CS,
1312 		.spmu_id = GAUDI2_SPMU_HBM3_MC0_CS,
1313 		.bmon_count = 0,
1314 		.bmon_ids = {COMPONENT_ID_INVALID}
1315 	},
1316 	[HBM_ID4] = {
1317 		.funnel_id = GAUDI2_FUNNEL_HBM4_MC0,
1318 		.etf_id = GAUDI2_ETF_HBM4_MC0_CS,
1319 		.stm_id = GAUDI2_STM_HBM4_MC0_CS,
1320 		.spmu_id = GAUDI2_SPMU_HBM4_MC0_CS,
1321 		.bmon_count = 0,
1322 		.bmon_ids = {COMPONENT_ID_INVALID}
1323 	},
1324 	[HBM_ID5] = {
1325 		.funnel_id = GAUDI2_FUNNEL_HBM5_MC0,
1326 		.etf_id = GAUDI2_ETF_HBM5_MC0_CS,
1327 		.stm_id = GAUDI2_STM_HBM5_MC0_CS,
1328 		.spmu_id = GAUDI2_SPMU_HBM5_MC0_CS,
1329 		.bmon_count = 0,
1330 		.bmon_ids = {COMPONENT_ID_INVALID}
1331 	},
1332 };
1333 
1334 static struct component_config_offsets hbm_mc1_binning_cfg_table[HBM_ID_SIZE] = {
1335 	[HBM_ID0] = {
1336 		.funnel_id = GAUDI2_FUNNEL_HBM0_MC1,
1337 		.etf_id = GAUDI2_ETF_HBM0_MC1_CS,
1338 		.stm_id = GAUDI2_STM_HBM0_MC1_CS,
1339 		.spmu_id = GAUDI2_SPMU_HBM0_MC1_CS,
1340 		.bmon_count = 0,
1341 		.bmon_ids = {COMPONENT_ID_INVALID}
1342 	},
1343 	[HBM_ID1] = {
1344 		.funnel_id = GAUDI2_FUNNEL_HBM1_MC1,
1345 		.etf_id = GAUDI2_ETF_HBM1_MC1_CS,
1346 		.stm_id = GAUDI2_STM_HBM1_MC1_CS,
1347 		.spmu_id = GAUDI2_SPMU_HBM1_MC1_CS,
1348 		.bmon_count = 0,
1349 		.bmon_ids = {COMPONENT_ID_INVALID}
1350 	},
1351 	[HBM_ID2] = {
1352 		.funnel_id = GAUDI2_FUNNEL_HBM2_MC1,
1353 		.etf_id = GAUDI2_ETF_HBM2_MC1_CS,
1354 		.stm_id = GAUDI2_STM_HBM2_MC1_CS,
1355 		.spmu_id = GAUDI2_SPMU_HBM2_MC1_CS,
1356 		.bmon_count = 0,
1357 		.bmon_ids = {COMPONENT_ID_INVALID}
1358 	},
1359 	[HBM_ID3] = {
1360 		.funnel_id = GAUDI2_FUNNEL_HBM3_MC1,
1361 		.etf_id = GAUDI2_ETF_HBM3_MC1_CS,
1362 		.stm_id = GAUDI2_STM_HBM3_MC1_CS,
1363 		.spmu_id = GAUDI2_SPMU_HBM3_MC1_CS,
1364 		.bmon_count = 0,
1365 		.bmon_ids = {COMPONENT_ID_INVALID}
1366 	},
1367 	[HBM_ID4] = {
1368 		.funnel_id = GAUDI2_FUNNEL_HBM4_MC1,
1369 		.etf_id = GAUDI2_ETF_HBM4_MC1_CS,
1370 		.stm_id = GAUDI2_STM_HBM4_MC1_CS,
1371 		.spmu_id = GAUDI2_SPMU_HBM4_MC1_CS,
1372 		.bmon_count = 0,
1373 		.bmon_ids = {COMPONENT_ID_INVALID}
1374 	},
1375 	[HBM_ID5] = {
1376 		.funnel_id = GAUDI2_FUNNEL_HBM5_MC1,
1377 		.etf_id = GAUDI2_ETF_HBM5_MC1_CS,
1378 		.stm_id = GAUDI2_STM_HBM5_MC1_CS,
1379 		.spmu_id = GAUDI2_SPMU_HBM5_MC1_CS,
1380 		.bmon_count = 0,
1381 		.bmon_ids = {COMPONENT_ID_INVALID}
1382 	},
1383 };
1384 
1385 static struct component_config_offsets decoder_binning_cfg_table[DEC_ID_SIZE] = {
1386 	[DEC_ID_DCORE0_DEC0] = {
1387 		.funnel_id = COMPONENT_ID_INVALID,
1388 		.etf_id = GAUDI2_ETF_DCORE0_VDEC0_CS,
1389 		.stm_id = GAUDI2_STM_DCORE0_VDEC0_CS,
1390 		.spmu_id = GAUDI2_SPMU_DCORE0_VDEC0_CS,
1391 		.bmon_count = 3,
1392 		.bmon_ids = {
1393 			GAUDI2_BMON_DCORE0_VDEC0_0,
1394 			GAUDI2_BMON_DCORE0_VDEC0_1,
1395 			GAUDI2_BMON_DCORE0_VDEC0_2,
1396 		}
1397 	},
1398 	[DEC_ID_DCORE0_DEC1] = {
1399 		.funnel_id = COMPONENT_ID_INVALID,
1400 		.etf_id = GAUDI2_ETF_DCORE0_VDEC1_CS,
1401 		.stm_id = GAUDI2_STM_DCORE0_VDEC1_CS,
1402 		.spmu_id = GAUDI2_SPMU_DCORE0_VDEC1_CS,
1403 		.bmon_count = 3,
1404 		.bmon_ids = {
1405 			GAUDI2_BMON_DCORE0_VDEC1_0,
1406 			GAUDI2_BMON_DCORE0_VDEC1_1,
1407 			GAUDI2_BMON_DCORE0_VDEC1_2,
1408 		}
1409 	},
1410 	[DEC_ID_DCORE1_DEC0] = {
1411 		.funnel_id = COMPONENT_ID_INVALID,
1412 		.etf_id = GAUDI2_ETF_DCORE1_VDEC0_CS,
1413 		.stm_id = GAUDI2_STM_DCORE1_VDEC0_CS,
1414 		.spmu_id = GAUDI2_SPMU_DCORE1_VDEC0_CS,
1415 		.bmon_count = 3,
1416 		.bmon_ids = {
1417 			GAUDI2_BMON_DCORE1_VDEC0_0,
1418 			GAUDI2_BMON_DCORE1_VDEC0_1,
1419 			GAUDI2_BMON_DCORE1_VDEC0_2,
1420 		}
1421 	},
1422 	[DEC_ID_DCORE1_DEC1] = {
1423 		.funnel_id = COMPONENT_ID_INVALID,
1424 		.etf_id = GAUDI2_ETF_DCORE1_VDEC1_CS,
1425 		.stm_id = GAUDI2_STM_DCORE1_VDEC1_CS,
1426 		.spmu_id = GAUDI2_SPMU_DCORE1_VDEC1_CS,
1427 		.bmon_count = 3,
1428 		.bmon_ids = {
1429 			GAUDI2_BMON_DCORE1_VDEC1_0,
1430 			GAUDI2_BMON_DCORE1_VDEC1_1,
1431 			GAUDI2_BMON_DCORE1_VDEC1_2,
1432 		}
1433 	},
1434 	[DEC_ID_DCORE2_DEC0] = {
1435 		.funnel_id = COMPONENT_ID_INVALID,
1436 		.etf_id = GAUDI2_ETF_DCORE2_VDEC0_CS,
1437 		.stm_id = GAUDI2_STM_DCORE2_VDEC0_CS,
1438 		.spmu_id = GAUDI2_SPMU_DCORE2_VDEC0_CS,
1439 		.bmon_count = 3,
1440 		.bmon_ids = {
1441 			GAUDI2_BMON_DCORE2_VDEC0_0,
1442 			GAUDI2_BMON_DCORE2_VDEC0_1,
1443 			GAUDI2_BMON_DCORE2_VDEC0_2,
1444 		}
1445 	},
1446 	[DEC_ID_DCORE2_DEC1] = {
1447 		.funnel_id = COMPONENT_ID_INVALID,
1448 		.etf_id = GAUDI2_ETF_DCORE2_VDEC1_CS,
1449 		.stm_id = GAUDI2_STM_DCORE2_VDEC1_CS,
1450 		.spmu_id = GAUDI2_SPMU_DCORE2_VDEC1_CS,
1451 		.bmon_count = 3,
1452 		.bmon_ids = {
1453 			GAUDI2_BMON_DCORE2_VDEC1_0,
1454 			GAUDI2_BMON_DCORE2_VDEC1_1,
1455 			GAUDI2_BMON_DCORE2_VDEC1_2,
1456 		}
1457 	},
1458 	[DEC_ID_DCORE3_DEC0] = {
1459 		.funnel_id = COMPONENT_ID_INVALID,
1460 		.etf_id = GAUDI2_ETF_DCORE3_VDEC0_CS,
1461 		.stm_id = GAUDI2_STM_DCORE3_VDEC0_CS,
1462 		.spmu_id = GAUDI2_SPMU_DCORE3_VDEC0_CS,
1463 		.bmon_count = 3,
1464 		.bmon_ids = {
1465 			GAUDI2_BMON_DCORE3_VDEC0_0,
1466 			GAUDI2_BMON_DCORE3_VDEC0_1,
1467 			GAUDI2_BMON_DCORE3_VDEC0_2,
1468 		}
1469 	},
1470 	[DEC_ID_DCORE3_DEC1] = {
1471 		.funnel_id = COMPONENT_ID_INVALID,
1472 		.etf_id = GAUDI2_ETF_DCORE3_VDEC1_CS,
1473 		.stm_id = GAUDI2_STM_DCORE3_VDEC1_CS,
1474 		.spmu_id = GAUDI2_SPMU_DCORE3_VDEC1_CS,
1475 		.bmon_count = 3,
1476 		.bmon_ids = {
1477 			GAUDI2_BMON_DCORE3_VDEC1_0,
1478 			GAUDI2_BMON_DCORE3_VDEC1_1,
1479 			GAUDI2_BMON_DCORE3_VDEC1_2,
1480 		}
1481 	},
1482 	[DEC_ID_PCIE_VDEC0] = {
1483 		.funnel_id = COMPONENT_ID_INVALID,
1484 		.etf_id = GAUDI2_ETF_PCIE_VDEC0_CS,
1485 		.stm_id = GAUDI2_STM_PCIE_VDEC0_CS,
1486 		.spmu_id = GAUDI2_SPMU_PCIE_VDEC0_CS,
1487 		.bmon_count = 3,
1488 		.bmon_ids = {
1489 			GAUDI2_BMON_PCIE_VDEC0_0,
1490 			GAUDI2_BMON_PCIE_VDEC0_1,
1491 			GAUDI2_BMON_PCIE_VDEC0_2,
1492 		}
1493 	},
1494 	[DEC_ID_PCIE_VDEC1] = {
1495 		.funnel_id = COMPONENT_ID_INVALID,
1496 		.etf_id = GAUDI2_ETF_PCIE_VDEC1_CS,
1497 		.stm_id = GAUDI2_STM_PCIE_VDEC1_CS,
1498 		.spmu_id = GAUDI2_SPMU_PCIE_VDEC1_CS,
1499 		.bmon_count = 3,
1500 		.bmon_ids = {
1501 			GAUDI2_BMON_PCIE_VDEC1_0,
1502 			GAUDI2_BMON_PCIE_VDEC1_1,
1503 			GAUDI2_BMON_PCIE_VDEC1_2,
1504 		}
1505 	},
1506 };
1507 
1508 static struct component_config_offsets edma_binning_cfg_table[EDMA_ID_SIZE] = {
1509 	[EDMA_ID_DCORE0_INSTANCE0] = {
1510 		.funnel_id = COMPONENT_ID_INVALID,
1511 		.etf_id = GAUDI2_ETF_DCORE0_EDMA0_CS,
1512 		.stm_id = GAUDI2_STM_DCORE0_EDMA0_CS,
1513 		.spmu_id = GAUDI2_SPMU_DCORE0_EDMA0_CS,
1514 		.bmon_count = 2,
1515 		.bmon_ids = {
1516 			GAUDI2_BMON_DCORE0_EDMA0_0,
1517 			GAUDI2_BMON_DCORE0_EDMA0_1,
1518 		}
1519 	},
1520 	[EDMA_ID_DCORE0_INSTANCE1] = {
1521 		.funnel_id = COMPONENT_ID_INVALID,
1522 		.etf_id = GAUDI2_ETF_DCORE0_EDMA1_CS,
1523 		.stm_id = GAUDI2_STM_DCORE0_EDMA1_CS,
1524 		.spmu_id = GAUDI2_SPMU_DCORE0_EDMA1_CS,
1525 		.bmon_count = 2,
1526 		.bmon_ids = {
1527 			GAUDI2_BMON_DCORE0_EDMA1_0,
1528 			GAUDI2_BMON_DCORE0_EDMA1_1,
1529 		}
1530 	},
1531 	[EDMA_ID_DCORE1_INSTANCE0] = {
1532 		.funnel_id = COMPONENT_ID_INVALID,
1533 		.etf_id = GAUDI2_ETF_DCORE1_EDMA0_CS,
1534 		.stm_id = GAUDI2_STM_DCORE1_EDMA0_CS,
1535 		.spmu_id = GAUDI2_SPMU_DCORE1_EDMA0_CS,
1536 		.bmon_count = 2,
1537 		.bmon_ids = {
1538 			GAUDI2_BMON_DCORE1_EDMA0_0,
1539 			GAUDI2_BMON_DCORE1_EDMA0_1,
1540 		}
1541 	},
1542 	[EDMA_ID_DCORE1_INSTANCE1] = {
1543 		.funnel_id = COMPONENT_ID_INVALID,
1544 		.etf_id = GAUDI2_ETF_DCORE1_EDMA1_CS,
1545 		.stm_id = GAUDI2_STM_DCORE1_EDMA1_CS,
1546 		.spmu_id = GAUDI2_SPMU_DCORE1_EDMA1_CS,
1547 		.bmon_count = 2,
1548 		.bmon_ids = {
1549 			GAUDI2_BMON_DCORE1_EDMA1_0,
1550 			GAUDI2_BMON_DCORE1_EDMA1_1,
1551 		}
1552 	},
1553 	[EDMA_ID_DCORE2_INSTANCE0] = {
1554 		.funnel_id = COMPONENT_ID_INVALID,
1555 		.etf_id = GAUDI2_ETF_DCORE2_EDMA0_CS,
1556 		.stm_id = GAUDI2_STM_DCORE2_EDMA0_CS,
1557 		.spmu_id = GAUDI2_SPMU_DCORE2_EDMA0_CS,
1558 		.bmon_count = 2,
1559 		.bmon_ids = {
1560 			GAUDI2_BMON_DCORE2_EDMA0_0,
1561 			GAUDI2_BMON_DCORE2_EDMA0_1,
1562 		}
1563 	},
1564 	[EDMA_ID_DCORE2_INSTANCE1] = {
1565 		.funnel_id = COMPONENT_ID_INVALID,
1566 		.etf_id = GAUDI2_ETF_DCORE2_EDMA1_CS,
1567 		.stm_id = GAUDI2_STM_DCORE2_EDMA1_CS,
1568 		.spmu_id = GAUDI2_SPMU_DCORE2_EDMA1_CS,
1569 		.bmon_count = 2,
1570 		.bmon_ids = {
1571 			GAUDI2_BMON_DCORE2_EDMA1_0,
1572 			GAUDI2_BMON_DCORE2_EDMA1_1,
1573 		}
1574 	},
1575 	[EDMA_ID_DCORE3_INSTANCE0] = {
1576 		.funnel_id = COMPONENT_ID_INVALID,
1577 		.etf_id = GAUDI2_ETF_DCORE3_EDMA0_CS,
1578 		.stm_id = GAUDI2_STM_DCORE3_EDMA0_CS,
1579 		.spmu_id = GAUDI2_SPMU_DCORE3_EDMA0_CS,
1580 		.bmon_count = 2,
1581 		.bmon_ids = {
1582 			GAUDI2_BMON_DCORE3_EDMA0_0,
1583 			GAUDI2_BMON_DCORE3_EDMA0_1,
1584 		}
1585 	},
1586 	[EDMA_ID_DCORE3_INSTANCE1] = {
1587 		.funnel_id = COMPONENT_ID_INVALID,
1588 		.etf_id = GAUDI2_ETF_DCORE3_EDMA1_CS,
1589 		.stm_id = GAUDI2_STM_DCORE3_EDMA1_CS,
1590 		.spmu_id = GAUDI2_SPMU_DCORE3_EDMA1_CS,
1591 		.bmon_count = 2,
1592 		.bmon_ids = {
1593 			GAUDI2_BMON_DCORE3_EDMA1_0,
1594 			GAUDI2_BMON_DCORE3_EDMA1_1,
1595 		}
1596 	},
1597 };
1598 
1599 static struct component_config_offsets tpc_binning_cfg_table[TPC_ID_SIZE] = {
1600 	[TPC_ID_DCORE0_TPC0] = {
1601 		.funnel_id = GAUDI2_FUNNEL_DCORE0_TPC0_EML,
1602 		.etf_id = GAUDI2_ETF_DCORE0_TPC0_EML,
1603 		.stm_id = GAUDI2_STM_DCORE0_TPC0_EML,
1604 		.spmu_id = GAUDI2_SPMU_DCORE0_TPC0_EML,
1605 		.bmon_count = 4,
1606 		.bmon_ids = {
1607 			GAUDI2_BMON_DCORE0_TPC0_EML_0,
1608 			GAUDI2_BMON_DCORE0_TPC0_EML_1,
1609 			GAUDI2_BMON_DCORE0_TPC0_EML_2,
1610 			GAUDI2_BMON_DCORE0_TPC0_EML_3,
1611 		}
1612 	},
1613 	[TPC_ID_DCORE0_TPC1] = {
1614 		.funnel_id = GAUDI2_FUNNEL_DCORE0_TPC1_EML,
1615 		.etf_id = GAUDI2_ETF_DCORE0_TPC1_EML,
1616 		.stm_id = GAUDI2_STM_DCORE0_TPC1_EML,
1617 		.spmu_id = GAUDI2_SPMU_DCORE0_TPC1_EML,
1618 		.bmon_count = 4,
1619 		.bmon_ids = {
1620 			GAUDI2_BMON_DCORE0_TPC1_EML_0,
1621 			GAUDI2_BMON_DCORE0_TPC1_EML_1,
1622 			GAUDI2_BMON_DCORE0_TPC1_EML_2,
1623 			GAUDI2_BMON_DCORE0_TPC1_EML_3,
1624 		}
1625 	},
1626 	[TPC_ID_DCORE0_TPC2] = {
1627 		.funnel_id = GAUDI2_FUNNEL_DCORE0_TPC2_EML,
1628 		.etf_id = GAUDI2_ETF_DCORE0_TPC2_EML,
1629 		.stm_id = GAUDI2_STM_DCORE0_TPC2_EML,
1630 		.spmu_id = GAUDI2_SPMU_DCORE0_TPC2_EML,
1631 		.bmon_count = 4,
1632 		.bmon_ids = {
1633 			GAUDI2_BMON_DCORE0_TPC2_EML_0,
1634 			GAUDI2_BMON_DCORE0_TPC2_EML_1,
1635 			GAUDI2_BMON_DCORE0_TPC2_EML_2,
1636 			GAUDI2_BMON_DCORE0_TPC2_EML_3,
1637 		}
1638 	},
1639 	[TPC_ID_DCORE0_TPC3] = {
1640 		.funnel_id = GAUDI2_FUNNEL_DCORE0_TPC3_EML,
1641 		.etf_id = GAUDI2_ETF_DCORE0_TPC3_EML,
1642 		.stm_id = GAUDI2_STM_DCORE0_TPC3_EML,
1643 		.spmu_id = GAUDI2_SPMU_DCORE0_TPC3_EML,
1644 		.bmon_count = 4,
1645 		.bmon_ids = {
1646 			GAUDI2_BMON_DCORE0_TPC3_EML_0,
1647 			GAUDI2_BMON_DCORE0_TPC3_EML_1,
1648 			GAUDI2_BMON_DCORE0_TPC3_EML_2,
1649 			GAUDI2_BMON_DCORE0_TPC3_EML_3,
1650 		}
1651 	},
1652 	[TPC_ID_DCORE0_TPC4] = {
1653 		.funnel_id = GAUDI2_FUNNEL_DCORE0_TPC4_EML,
1654 		.etf_id = GAUDI2_ETF_DCORE0_TPC4_EML,
1655 		.stm_id = GAUDI2_STM_DCORE0_TPC4_EML,
1656 		.spmu_id = GAUDI2_SPMU_DCORE0_TPC4_EML,
1657 		.bmon_count = 4,
1658 		.bmon_ids = {
1659 			GAUDI2_BMON_DCORE0_TPC4_EML_0,
1660 			GAUDI2_BMON_DCORE0_TPC4_EML_1,
1661 			GAUDI2_BMON_DCORE0_TPC4_EML_2,
1662 			GAUDI2_BMON_DCORE0_TPC4_EML_3,
1663 		}
1664 	},
1665 	[TPC_ID_DCORE0_TPC5] = {
1666 		.funnel_id = GAUDI2_FUNNEL_DCORE0_TPC5_EML,
1667 		.etf_id = GAUDI2_ETF_DCORE0_TPC5_EML,
1668 		.stm_id = GAUDI2_STM_DCORE0_TPC5_EML,
1669 		.spmu_id = GAUDI2_SPMU_DCORE0_TPC5_EML,
1670 		.bmon_count = 4,
1671 		.bmon_ids = {
1672 			GAUDI2_BMON_DCORE0_TPC5_EML_0,
1673 			GAUDI2_BMON_DCORE0_TPC5_EML_1,
1674 			GAUDI2_BMON_DCORE0_TPC5_EML_2,
1675 			GAUDI2_BMON_DCORE0_TPC5_EML_3,
1676 		}
1677 	},
1678 	[TPC_ID_DCORE1_TPC0] = {
1679 		.funnel_id = GAUDI2_FUNNEL_DCORE1_TPC0_EML,
1680 		.etf_id = GAUDI2_ETF_DCORE1_TPC0_EML,
1681 		.stm_id = GAUDI2_STM_DCORE1_TPC0_EML,
1682 		.spmu_id = GAUDI2_SPMU_DCORE1_TPC0_EML,
1683 		.bmon_count = 4,
1684 		.bmon_ids = {
1685 			GAUDI2_BMON_DCORE1_TPC0_EML_0,
1686 			GAUDI2_BMON_DCORE1_TPC0_EML_1,
1687 			GAUDI2_BMON_DCORE1_TPC0_EML_2,
1688 			GAUDI2_BMON_DCORE1_TPC0_EML_3,
1689 		}
1690 	},
1691 	[TPC_ID_DCORE1_TPC1] = {
1692 		.funnel_id = GAUDI2_FUNNEL_DCORE1_TPC1_EML,
1693 		.etf_id = GAUDI2_ETF_DCORE1_TPC1_EML,
1694 		.stm_id = GAUDI2_STM_DCORE1_TPC1_EML,
1695 		.spmu_id = GAUDI2_SPMU_DCORE1_TPC1_EML,
1696 		.bmon_count = 4,
1697 		.bmon_ids = {
1698 			GAUDI2_BMON_DCORE1_TPC1_EML_0,
1699 			GAUDI2_BMON_DCORE1_TPC1_EML_1,
1700 			GAUDI2_BMON_DCORE1_TPC1_EML_2,
1701 			GAUDI2_BMON_DCORE1_TPC1_EML_3,
1702 		}
1703 	},
1704 	[TPC_ID_DCORE1_TPC2] = {
1705 		.funnel_id = GAUDI2_FUNNEL_DCORE1_TPC2_EML,
1706 		.etf_id = GAUDI2_ETF_DCORE1_TPC2_EML,
1707 		.stm_id = GAUDI2_STM_DCORE1_TPC2_EML,
1708 		.spmu_id = GAUDI2_SPMU_DCORE1_TPC2_EML,
1709 		.bmon_count = 4,
1710 		.bmon_ids = {
1711 			GAUDI2_BMON_DCORE1_TPC2_EML_0,
1712 			GAUDI2_BMON_DCORE1_TPC2_EML_1,
1713 			GAUDI2_BMON_DCORE1_TPC2_EML_2,
1714 			GAUDI2_BMON_DCORE1_TPC2_EML_3,
1715 		}
1716 	},
1717 	[TPC_ID_DCORE1_TPC3] = {
1718 		.funnel_id = GAUDI2_FUNNEL_DCORE1_TPC3_EML,
1719 		.etf_id = GAUDI2_ETF_DCORE1_TPC3_EML,
1720 		.stm_id = GAUDI2_STM_DCORE1_TPC3_EML,
1721 		.spmu_id = GAUDI2_SPMU_DCORE1_TPC3_EML,
1722 		.bmon_count = 4,
1723 		.bmon_ids = {
1724 			GAUDI2_BMON_DCORE1_TPC3_EML_0,
1725 			GAUDI2_BMON_DCORE1_TPC3_EML_1,
1726 			GAUDI2_BMON_DCORE1_TPC3_EML_2,
1727 			GAUDI2_BMON_DCORE1_TPC3_EML_3,
1728 		}
1729 	},
1730 	[TPC_ID_DCORE1_TPC4] = {
1731 		.funnel_id = GAUDI2_FUNNEL_DCORE1_TPC4_EML,
1732 		.etf_id = GAUDI2_ETF_DCORE1_TPC4_EML,
1733 		.stm_id = GAUDI2_STM_DCORE1_TPC4_EML,
1734 		.spmu_id = GAUDI2_SPMU_DCORE1_TPC4_EML,
1735 		.bmon_count = 4,
1736 		.bmon_ids = {
1737 			GAUDI2_BMON_DCORE1_TPC4_EML_0,
1738 			GAUDI2_BMON_DCORE1_TPC4_EML_1,
1739 			GAUDI2_BMON_DCORE1_TPC4_EML_2,
1740 			GAUDI2_BMON_DCORE1_TPC4_EML_3,
1741 		}
1742 	},
1743 	[TPC_ID_DCORE1_TPC5] = {
1744 		.funnel_id = GAUDI2_FUNNEL_DCORE1_TPC5_EML,
1745 		.etf_id = GAUDI2_ETF_DCORE1_TPC5_EML,
1746 		.stm_id = GAUDI2_STM_DCORE1_TPC5_EML,
1747 		.spmu_id = GAUDI2_SPMU_DCORE1_TPC5_EML,
1748 		.bmon_count = 4,
1749 		.bmon_ids = {
1750 			GAUDI2_BMON_DCORE1_TPC5_EML_0,
1751 			GAUDI2_BMON_DCORE1_TPC5_EML_1,
1752 			GAUDI2_BMON_DCORE1_TPC5_EML_2,
1753 			GAUDI2_BMON_DCORE1_TPC5_EML_3,
1754 		}
1755 	},
1756 	[TPC_ID_DCORE2_TPC0] = {
1757 		.funnel_id = GAUDI2_FUNNEL_DCORE2_TPC0_EML,
1758 		.etf_id = GAUDI2_ETF_DCORE2_TPC0_EML,
1759 		.stm_id = GAUDI2_STM_DCORE2_TPC0_EML,
1760 		.spmu_id = GAUDI2_SPMU_DCORE2_TPC0_EML,
1761 		.bmon_count = 4,
1762 		.bmon_ids = {
1763 			GAUDI2_BMON_DCORE2_TPC0_EML_0,
1764 			GAUDI2_BMON_DCORE2_TPC0_EML_1,
1765 			GAUDI2_BMON_DCORE2_TPC0_EML_2,
1766 			GAUDI2_BMON_DCORE2_TPC0_EML_3,
1767 		}
1768 	},
1769 	[TPC_ID_DCORE2_TPC1] = {
1770 		.funnel_id = GAUDI2_FUNNEL_DCORE2_TPC1_EML,
1771 		.etf_id = GAUDI2_ETF_DCORE2_TPC1_EML,
1772 		.stm_id = GAUDI2_STM_DCORE2_TPC1_EML,
1773 		.spmu_id = GAUDI2_SPMU_DCORE2_TPC1_EML,
1774 		.bmon_count = 4,
1775 		.bmon_ids = {
1776 			GAUDI2_BMON_DCORE2_TPC1_EML_0,
1777 			GAUDI2_BMON_DCORE2_TPC1_EML_1,
1778 			GAUDI2_BMON_DCORE2_TPC1_EML_2,
1779 			GAUDI2_BMON_DCORE2_TPC1_EML_3,
1780 		}
1781 	},
1782 	[TPC_ID_DCORE2_TPC2] = {
1783 		.funnel_id = GAUDI2_FUNNEL_DCORE2_TPC2_EML,
1784 		.etf_id = GAUDI2_ETF_DCORE2_TPC2_EML,
1785 		.stm_id = GAUDI2_STM_DCORE2_TPC2_EML,
1786 		.spmu_id = GAUDI2_SPMU_DCORE2_TPC2_EML,
1787 		.bmon_count = 4,
1788 		.bmon_ids = {
1789 			GAUDI2_BMON_DCORE2_TPC2_EML_0,
1790 			GAUDI2_BMON_DCORE2_TPC2_EML_1,
1791 			GAUDI2_BMON_DCORE2_TPC2_EML_2,
1792 			GAUDI2_BMON_DCORE2_TPC2_EML_3,
1793 		}
1794 	},
1795 	[TPC_ID_DCORE2_TPC3] = {
1796 		.funnel_id = GAUDI2_FUNNEL_DCORE2_TPC3_EML,
1797 		.etf_id = GAUDI2_ETF_DCORE2_TPC3_EML,
1798 		.stm_id = GAUDI2_STM_DCORE2_TPC3_EML,
1799 		.spmu_id = GAUDI2_SPMU_DCORE2_TPC3_EML,
1800 		.bmon_count = 4,
1801 		.bmon_ids = {
1802 			GAUDI2_BMON_DCORE2_TPC3_EML_0,
1803 			GAUDI2_BMON_DCORE2_TPC3_EML_1,
1804 			GAUDI2_BMON_DCORE2_TPC3_EML_2,
1805 			GAUDI2_BMON_DCORE2_TPC3_EML_3,
1806 		}
1807 	},
1808 	[TPC_ID_DCORE2_TPC4] = {
1809 		.funnel_id = GAUDI2_FUNNEL_DCORE2_TPC4_EML,
1810 		.etf_id = GAUDI2_ETF_DCORE2_TPC4_EML,
1811 		.stm_id = GAUDI2_STM_DCORE2_TPC4_EML,
1812 		.spmu_id = GAUDI2_SPMU_DCORE2_TPC4_EML,
1813 		.bmon_count = 4,
1814 		.bmon_ids = {
1815 			GAUDI2_BMON_DCORE2_TPC4_EML_0,
1816 			GAUDI2_BMON_DCORE2_TPC4_EML_1,
1817 			GAUDI2_BMON_DCORE2_TPC4_EML_2,
1818 			GAUDI2_BMON_DCORE2_TPC4_EML_3,
1819 		}
1820 	},
1821 	[TPC_ID_DCORE2_TPC5] = {
1822 		.funnel_id = GAUDI2_FUNNEL_DCORE2_TPC5_EML,
1823 		.etf_id = GAUDI2_ETF_DCORE2_TPC5_EML,
1824 		.stm_id = GAUDI2_STM_DCORE2_TPC5_EML,
1825 		.spmu_id = GAUDI2_SPMU_DCORE2_TPC5_EML,
1826 		.bmon_count = 4,
1827 		.bmon_ids = {
1828 			GAUDI2_BMON_DCORE2_TPC5_EML_0,
1829 			GAUDI2_BMON_DCORE2_TPC5_EML_1,
1830 			GAUDI2_BMON_DCORE2_TPC5_EML_2,
1831 			GAUDI2_BMON_DCORE2_TPC5_EML_3,
1832 		}
1833 	},
1834 	[TPC_ID_DCORE3_TPC0] = {
1835 		.funnel_id = GAUDI2_FUNNEL_DCORE3_TPC0_EML,
1836 		.etf_id = GAUDI2_ETF_DCORE3_TPC0_EML,
1837 		.stm_id = GAUDI2_STM_DCORE3_TPC0_EML,
1838 		.spmu_id = GAUDI2_SPMU_DCORE3_TPC0_EML,
1839 		.bmon_count = 4,
1840 		.bmon_ids = {
1841 			GAUDI2_BMON_DCORE3_TPC0_EML_0,
1842 			GAUDI2_BMON_DCORE3_TPC0_EML_1,
1843 			GAUDI2_BMON_DCORE3_TPC0_EML_2,
1844 			GAUDI2_BMON_DCORE3_TPC0_EML_3,
1845 		}
1846 	},
1847 	[TPC_ID_DCORE3_TPC1] = {
1848 		.funnel_id = GAUDI2_FUNNEL_DCORE3_TPC1_EML,
1849 		.etf_id = GAUDI2_ETF_DCORE3_TPC1_EML,
1850 		.stm_id = GAUDI2_STM_DCORE3_TPC1_EML,
1851 		.spmu_id = GAUDI2_SPMU_DCORE3_TPC1_EML,
1852 		.bmon_count = 4,
1853 		.bmon_ids = {
1854 			GAUDI2_BMON_DCORE3_TPC1_EML_0,
1855 			GAUDI2_BMON_DCORE3_TPC1_EML_1,
1856 			GAUDI2_BMON_DCORE3_TPC1_EML_2,
1857 			GAUDI2_BMON_DCORE3_TPC1_EML_3,
1858 		}
1859 	},
1860 	[TPC_ID_DCORE3_TPC2] = {
1861 		.funnel_id = GAUDI2_FUNNEL_DCORE3_TPC2_EML,
1862 		.etf_id = GAUDI2_ETF_DCORE3_TPC2_EML,
1863 		.stm_id = GAUDI2_STM_DCORE3_TPC2_EML,
1864 		.spmu_id = GAUDI2_SPMU_DCORE3_TPC2_EML,
1865 		.bmon_count = 4,
1866 		.bmon_ids = {
1867 			GAUDI2_BMON_DCORE3_TPC2_EML_0,
1868 			GAUDI2_BMON_DCORE3_TPC2_EML_1,
1869 			GAUDI2_BMON_DCORE3_TPC2_EML_2,
1870 			GAUDI2_BMON_DCORE3_TPC2_EML_3,
1871 		}
1872 	},
1873 	[TPC_ID_DCORE3_TPC3] = {
1874 		.funnel_id = GAUDI2_FUNNEL_DCORE3_TPC3_EML,
1875 		.etf_id = GAUDI2_ETF_DCORE3_TPC3_EML,
1876 		.stm_id = GAUDI2_STM_DCORE3_TPC3_EML,
1877 		.spmu_id = GAUDI2_SPMU_DCORE3_TPC3_EML,
1878 		.bmon_count = 4,
1879 		.bmon_ids = {
1880 			GAUDI2_BMON_DCORE3_TPC3_EML_0,
1881 			GAUDI2_BMON_DCORE3_TPC3_EML_1,
1882 			GAUDI2_BMON_DCORE3_TPC3_EML_2,
1883 			GAUDI2_BMON_DCORE3_TPC3_EML_3,
1884 		}
1885 	},
1886 	[TPC_ID_DCORE3_TPC4] = {
1887 		.funnel_id = GAUDI2_FUNNEL_DCORE3_TPC4_EML,
1888 		.etf_id = GAUDI2_ETF_DCORE3_TPC4_EML,
1889 		.stm_id = GAUDI2_STM_DCORE3_TPC4_EML,
1890 		.spmu_id = GAUDI2_SPMU_DCORE3_TPC4_EML,
1891 		.bmon_count = 4,
1892 		.bmon_ids = {
1893 			GAUDI2_BMON_DCORE3_TPC4_EML_0,
1894 			GAUDI2_BMON_DCORE3_TPC4_EML_1,
1895 			GAUDI2_BMON_DCORE3_TPC4_EML_2,
1896 			GAUDI2_BMON_DCORE3_TPC4_EML_3,
1897 		}
1898 	},
1899 	[TPC_ID_DCORE3_TPC5] = {
1900 		.funnel_id = GAUDI2_FUNNEL_DCORE3_TPC5_EML,
1901 		.etf_id = GAUDI2_ETF_DCORE3_TPC5_EML,
1902 		.stm_id = GAUDI2_STM_DCORE3_TPC5_EML,
1903 		.spmu_id = GAUDI2_SPMU_DCORE3_TPC5_EML,
1904 		.bmon_count = 4,
1905 		.bmon_ids = {
1906 			GAUDI2_BMON_DCORE3_TPC5_EML_0,
1907 			GAUDI2_BMON_DCORE3_TPC5_EML_1,
1908 			GAUDI2_BMON_DCORE3_TPC5_EML_2,
1909 			GAUDI2_BMON_DCORE3_TPC5_EML_3,
1910 		}
1911 	},
1912 	[TPC_ID_DCORE0_TPC6] = {
1913 		.funnel_id = GAUDI2_FUNNEL_DCORE0_TPC6_EML,
1914 		.etf_id = GAUDI2_ETF_DCORE0_TPC6_EML,
1915 		.stm_id = GAUDI2_STM_DCORE0_TPC6_EML,
1916 		.spmu_id = GAUDI2_SPMU_DCORE0_TPC6_EML,
1917 		.bmon_count = 4,
1918 		.bmon_ids = {
1919 			GAUDI2_BMON_DCORE0_TPC6_EML_0,
1920 			GAUDI2_BMON_DCORE0_TPC6_EML_1,
1921 			GAUDI2_BMON_DCORE0_TPC6_EML_2,
1922 			GAUDI2_BMON_DCORE0_TPC6_EML_3,
1923 		}
1924 	}
1925 };
1926 
1927 static int gaudi2_coresight_timeout(struct hl_device *hdev, u64 addr,
1928 					int position, bool up)
1929 {
1930 	int rc;
1931 	u32 val, timeout_usec;
1932 
1933 	if (hdev->pldm)
1934 		timeout_usec = GAUDI2_PLDM_CORESIGHT_TIMEOUT_USEC;
1935 	else
1936 		timeout_usec = CORESIGHT_TIMEOUT_USEC;
1937 
1938 	rc = hl_poll_timeout(
1939 		hdev,
1940 		addr,
1941 		val,
1942 		up ? val & BIT(position) : !(val & BIT(position)),
1943 		1000,
1944 		timeout_usec);
1945 
1946 	if (rc)
1947 		dev_err(hdev->dev,
1948 			"Timeout while waiting for coresight, addr: 0x%llx, position: %d, up: %d\n",
1949 			addr, position, up);
1950 
1951 	return rc;
1952 }
1953 
1954 static int gaudi2_unlock_coresight_unit(struct hl_device *hdev,
1955 	const u64 base_reg)
1956 {
1957 	int rc = 0;
1958 
1959 	WREG32(base_reg + mmCORESIGHT_UNLOCK_REGISTER_OFFSET, CORESIGHT_UNLOCK);
1960 
1961 	rc = gaudi2_coresight_timeout(hdev, base_reg + mmCORESIGHT_UNLOCK_STATUS_REGISTER_OFFSET,
1962 					1, 0);
1963 
1964 	if (rc)
1965 		dev_err(hdev->dev,
1966 			"Failed to unlock register base addr: 0x%llx , position: 1, up: 0\n",
1967 			base_reg);
1968 
1969 	return rc;
1970 }
1971 
1972 static int gaudi2_config_stm(struct hl_device *hdev, struct hl_debug_params *params)
1973 {
1974 	struct hl_debug_params_stm *input;
1975 	u64 base_reg;
1976 	u32 frequency;
1977 	u32 read_reg;
1978 	int rc;
1979 
1980 	if (params->reg_idx >= ARRAY_SIZE(debug_stm_regs)) {
1981 		dev_err(hdev->dev, "Invalid register index in STM\n");
1982 		return -EINVAL;
1983 	}
1984 
1985 	base_reg = debug_stm_regs[params->reg_idx];
1986 
1987 	/*
1988 	 * in case base reg is 0x0 we ignore this configuration
1989 	 */
1990 	if (!base_reg)
1991 		return 0;
1992 
1993 	/* check if stub component on pldm
1994 	 * we check offset 0xCFC STMDMAIDR in case
1995 	 * return value is 0x0 - hence stub component
1996 	 */
1997 	read_reg = RREG32(base_reg + mmSTM_STMDMAIDR_OFFSET);
1998 	if (hdev->pldm &&  read_reg == 0x0)
1999 		return 0;
2000 
2001 	rc = gaudi2_unlock_coresight_unit(hdev, base_reg);
2002 	if (rc)
2003 		return -EIO;
2004 
2005 	if (params->enable) {
2006 		input = params->input;
2007 
2008 		if (!input)
2009 			return -EINVAL;
2010 
2011 		WREG32(base_reg + mmSTM_STMTCSR_OFFSET, 0x80004);
2012 		/* dummy read for pldm to flush outstanding writes */
2013 		if (hdev->pldm)
2014 			RREG32(base_reg + mmSTM_STMTCSR_OFFSET);
2015 
2016 		WREG32(base_reg + mmSTM_STMHEMCR_OFFSET, 7);
2017 		WREG32(base_reg + mmSTM_STMHEBSR_OFFSET, 0);
2018 		WREG32(base_reg + mmSTM_STMHEER_OFFSET, lower_32_bits(input->he_mask));
2019 		WREG32(base_reg + mmSTM_STMHEBSR_OFFSET, 1);
2020 		WREG32(base_reg + mmSTM_STMHEER_OFFSET, upper_32_bits(input->he_mask));
2021 		WREG32(base_reg + mmSTM_STMSPTRIGCSR_OFFSET, 0x10);
2022 		WREG32(base_reg + mmSTM_STMSPSCR_OFFSET, 0);
2023 		WREG32(base_reg + mmSTM_STMSPER_OFFSET, lower_32_bits(input->sp_mask));
2024 		WREG32(base_reg + mmSTM_STMITATBID_OFFSET, input->id);
2025 		WREG32(base_reg + mmSTM_STMHEMASTR_OFFSET, 0x80);
2026 		frequency = hdev->asic_prop.psoc_timestamp_frequency;
2027 		if (frequency == 0)
2028 			frequency = input->frequency;
2029 		WREG32(base_reg + mmSTM_STMTSFREQR_OFFSET, frequency);
2030 		WREG32(base_reg + mmSTM_STMSYNCR_OFFSET, 0x7FF);
2031 		WREG32(base_reg + mmSTM_STMTCSR_OFFSET, 0x27 | (input->id << 16));
2032 	} else {
2033 		WREG32(base_reg + mmSTM_STMTCSR_OFFSET, 4);
2034 		WREG32(base_reg + mmSTM_STMHEMCR_OFFSET, 0);
2035 		WREG32(base_reg + mmSTM_STMHEBSR_OFFSET, 1);
2036 		WREG32(base_reg + mmSTM_STMHEER_OFFSET, 0);
2037 		WREG32(base_reg + mmSTM_STMHETER_OFFSET, 0);
2038 		WREG32(base_reg + mmSTM_STMHEBSR_OFFSET, 0);
2039 		WREG32(base_reg + mmSTM_STMSPTER_OFFSET, 0);
2040 		WREG32(base_reg + mmSTM_STMSPER_OFFSET, 0);
2041 		WREG32(base_reg + mmSTM_STMHEMASTR_OFFSET, 0x80);
2042 		WREG32(base_reg + mmSTM_STMSPTRIGCSR_OFFSET, 0);
2043 		WREG32(base_reg + mmSTM_STMSPSCR_OFFSET, 0);
2044 		WREG32(base_reg + mmSTM_STMSPMSCR_OFFSET, 0);
2045 		WREG32(base_reg + mmSTM_STMTSFREQR_OFFSET, 0);
2046 
2047 		rc = gaudi2_coresight_timeout(hdev, base_reg + mmSTM_STMTCSR_OFFSET, 23, false);
2048 		if (rc) {
2049 			dev_err(hdev->dev, "Failed to disable STM on timeout, error %d\n", rc);
2050 			return rc;
2051 		}
2052 
2053 		WREG32(base_reg + mmSTM_STMTCSR_OFFSET, 4);
2054 	}
2055 
2056 	return 0;
2057 }
2058 
2059 static int gaudi2_config_etf(struct hl_device *hdev, struct hl_debug_params *params)
2060 {
2061 	struct hl_debug_params_etf *input;
2062 	u64 base_reg;
2063 	u32 read_reg;
2064 	u32 val;
2065 	int rc;
2066 
2067 	if (params->reg_idx >= ARRAY_SIZE(debug_etf_regs)) {
2068 		dev_err(hdev->dev, "Invalid register index in ETF\n");
2069 		return -EINVAL;
2070 	}
2071 
2072 	base_reg = debug_etf_regs[params->reg_idx];
2073 
2074 	/*
2075 	 * in case base reg is 0x0 we ignore this configuration
2076 	 */
2077 	if (!base_reg)
2078 		return 0;
2079 
2080 
2081 	/* in pldm we need to check if unit is not stub
2082 	 * for doing do need to read ETF STS register and check
2083 	 * it is not return 0x0 - in case it does
2084 	 * it means that this is stub, we ignore this and return 0
2085 	 * means success
2086 	 */
2087 	read_reg = RREG32(base_reg + mmETF_STS_OFFSET);
2088 	if (hdev->pldm &&  read_reg == 0x0)
2089 		return 0;
2090 
2091 	rc = gaudi2_unlock_coresight_unit(hdev, base_reg);
2092 	if (rc)
2093 		return -EIO;
2094 
2095 	val = RREG32(base_reg + mmETF_CTL_OFFSET);
2096 
2097 	if ((!params->enable && val == 0x0) || (params->enable && val != 0x0))
2098 		return 0;
2099 
2100 	val = RREG32(base_reg + mmETF_FFCR_OFFSET);
2101 	val |= 0x1000;
2102 	WREG32(base_reg + mmETF_FFCR_OFFSET, val);
2103 	val |= 0x40;
2104 	WREG32(base_reg + mmETF_FFCR_OFFSET, val);
2105 
2106 	rc = gaudi2_coresight_timeout(hdev, base_reg + mmETF_FFCR_OFFSET, 6, false);
2107 	if (rc) {
2108 		dev_err(hdev->dev, "Failed to %s ETF on timeout, error %d\n",
2109 			params->enable ? "enable" : "disable", rc);
2110 		return rc;
2111 	}
2112 
2113 	rc = gaudi2_coresight_timeout(hdev, base_reg + mmETF_STS_OFFSET, 2, true);
2114 	if (rc) {
2115 		dev_err(hdev->dev, "Failed to %s ETF on timeout, error %d\n",
2116 			params->enable ? "enable" : "disable", rc);
2117 		return rc;
2118 	}
2119 
2120 	WREG32(base_reg + mmETF_CTL_OFFSET, 0);
2121 
2122 	if (params->enable) {
2123 		input = params->input;
2124 
2125 		if (!input)
2126 			return -EINVAL;
2127 
2128 		val = RREG32(base_reg + mmETF_RSZ_OFFSET) << 2;
2129 		if (val) {
2130 			val = ffs(val);
2131 			WREG32(base_reg + mmETF_PSCR_OFFSET, val);
2132 		} else {
2133 			WREG32(base_reg + mmETF_PSCR_OFFSET, 0x10);
2134 		}
2135 
2136 		WREG32(base_reg + mmETF_BUFWM_OFFSET, 0x3FFC);
2137 		WREG32(base_reg + mmETF_MODE_OFFSET, input->sink_mode);
2138 		WREG32(base_reg + mmETF_FFCR_OFFSET, 0x4001);
2139 		WREG32(base_reg + mmETF_CTL_OFFSET, 1);
2140 	} else {
2141 		WREG32(base_reg + mmETF_BUFWM_OFFSET, 0);
2142 		WREG32(base_reg + mmETF_MODE_OFFSET, 0);
2143 		WREG32(base_reg + mmETF_FFCR_OFFSET, 0);
2144 	}
2145 
2146 	return 0;
2147 }
2148 
2149 static int gaudi2_etr_validate_address(struct hl_device *hdev, u64 addr, u64 size)
2150 {
2151 	struct asic_fixed_properties *prop = &hdev->asic_prop;
2152 	struct gaudi2_device *gaudi2 = hdev->asic_specific;
2153 
2154 	if (addr > (addr + size)) {
2155 		dev_err(hdev->dev, "ETR buffer size %llu overflow\n", size);
2156 		return false;
2157 	}
2158 
2159 	if (gaudi2->hw_cap_initialized & HW_CAP_PMMU) {
2160 		if (hl_mem_area_inside_range(addr, size,
2161 				prop->pmmu.start_addr,
2162 				prop->pmmu.end_addr))
2163 			return true;
2164 
2165 		if (hl_mem_area_inside_range(addr, size,
2166 				prop->pmmu_huge.start_addr,
2167 				prop->pmmu_huge.end_addr))
2168 			return true;
2169 
2170 		if (hl_mem_area_inside_range(addr, size,
2171 				prop->dmmu.start_addr,
2172 				prop->dmmu.end_addr))
2173 			return true;
2174 	} else {
2175 		if (hl_mem_area_inside_range(addr, size,
2176 				prop->dram_user_base_address,
2177 				prop->dram_end_address))
2178 			return true;
2179 	}
2180 
2181 	if (hl_mem_area_inside_range(addr, size,
2182 			prop->sram_user_base_address,
2183 			prop->sram_end_address))
2184 		return true;
2185 
2186 	if (!(gaudi2->hw_cap_initialized & HW_CAP_PMMU))
2187 		dev_err(hdev->dev, "ETR buffer should be in SRAM/DRAM\n");
2188 
2189 	return false;
2190 }
2191 
2192 static int gaudi2_config_etr(struct hl_device *hdev, struct hl_ctx *ctx,
2193 				struct hl_debug_params *params)
2194 {
2195 	struct hl_debug_params_etr *input;
2196 	u64 msb;
2197 	u32 val;
2198 	int rc;
2199 
2200 	rc = gaudi2_unlock_coresight_unit(hdev, mmPSOC_ETR_BASE);
2201 	if (rc)
2202 		return -EIO;
2203 
2204 	val = RREG32(mmPSOC_ETR_CTL);
2205 
2206 	if ((!params->enable && val == 0x0) || (params->enable && val != 0x0))
2207 		return 0;
2208 
2209 	val = RREG32(mmPSOC_ETR_FFCR);
2210 	val |= 0x1000;
2211 	WREG32(mmPSOC_ETR_FFCR, val);
2212 	val |= 0x40;
2213 	WREG32(mmPSOC_ETR_FFCR, val);
2214 
2215 	rc = gaudi2_coresight_timeout(hdev, mmPSOC_ETR_FFCR, 6, false);
2216 	if (rc) {
2217 		dev_err(hdev->dev, "Failed to %s ETR on timeout, error %d\n",
2218 				params->enable ? "enable" : "disable", rc);
2219 		return rc;
2220 	}
2221 
2222 	rc = gaudi2_coresight_timeout(hdev, mmPSOC_ETR_STS, 2, true);
2223 	if (rc) {
2224 		dev_err(hdev->dev, "Failed to %s ETR on timeout, error %d\n",
2225 				params->enable ? "enable" : "disable", rc);
2226 		return rc;
2227 	}
2228 
2229 	WREG32(mmPSOC_ETR_CTL, 0);
2230 
2231 	if (params->enable) {
2232 		input = params->input;
2233 
2234 		if (!input)
2235 			return -EINVAL;
2236 
2237 		if (input->buffer_size == 0) {
2238 			dev_err(hdev->dev, "ETR buffer size should be bigger than 0\n");
2239 			return -EINVAL;
2240 		}
2241 
2242 		if (!gaudi2_etr_validate_address(hdev, input->buffer_address, input->buffer_size)) {
2243 			dev_err(hdev->dev, "ETR buffer address is invalid\n");
2244 			return -EINVAL;
2245 		}
2246 
2247 		RMWREG32(mmPSOC_GLOBAL_CONF_TRACE_AWUSER, ctx->asid, MMUBP_ASID_MASK);
2248 		RMWREG32(mmPSOC_GLOBAL_CONF_TRACE_ARUSER, ctx->asid, MMUBP_ASID_MASK);
2249 
2250 		msb = upper_32_bits(input->buffer_address) >> 8;
2251 		WREG32(mmPSOC_GLOBAL_CONF_TRACE_ADDR, msb);
2252 
2253 		WREG32(mmPSOC_ETR_BUFWM, 0x3FFC);
2254 		WREG32(mmPSOC_ETR_RSZ, input->buffer_size);
2255 		WREG32(mmPSOC_ETR_MODE, input->sink_mode);
2256 		/* write the protection bits only if security is disable */
2257 		if (!(hdev->fw_components & FW_TYPE_BOOT_CPU)) {
2258 			/* make ETR not privileged */
2259 			val = FIELD_PREP(PSOC_ETR_AXICTL_PROTCTRLBIT0_MASK, 0);
2260 			/* make ETR non-secured (inverted logic) */
2261 			val |= FIELD_PREP(PSOC_ETR_AXICTL_PROTCTRLBIT1_MASK, 1);
2262 			/* burst size 16 */
2263 			val |= FIELD_PREP(PSOC_ETR_AXICTL_WRBURSTLEN_MASK, 0xF);
2264 			WREG32(mmPSOC_ETR_AXICTL, val);
2265 		}
2266 		WREG32(mmPSOC_ETR_DBALO, lower_32_bits(input->buffer_address));
2267 		WREG32(mmPSOC_ETR_DBAHI, upper_32_bits(input->buffer_address));
2268 		WREG32(mmPSOC_ETR_FFCR, 3);
2269 		WREG32(mmPSOC_ETR_PSCR, 0x10);
2270 		WREG32(mmPSOC_ETR_CTL, 1);
2271 	} else {
2272 		WREG32(mmPSOC_ETR_BUFWM, 0);
2273 		WREG32(mmPSOC_ETR_RSZ, 0x400);
2274 		WREG32(mmPSOC_ETR_DBALO, 0);
2275 		WREG32(mmPSOC_ETR_DBAHI, 0);
2276 		WREG32(mmPSOC_ETR_PSCR, 0);
2277 		WREG32(mmPSOC_ETR_MODE, 0);
2278 		WREG32(mmPSOC_ETR_FFCR, 0);
2279 
2280 		if (params->output_size >= sizeof(u64)) {
2281 			u32 rwp, rwphi;
2282 
2283 			/*
2284 			 * The trace buffer address is 64 bits wide. The end of
2285 			 * the buffer is set in the RWP register (lower 32
2286 			 * bits), and in the RWPHI register (upper 8 bits).
2287 			 * The 24 msb of the 64-bit address are stored in a
2288 			 * global configuration register.
2289 			 */
2290 			rwp = RREG32(mmPSOC_ETR_RWP);
2291 			rwphi = RREG32(mmPSOC_ETR_RWPHI) & 0xff;
2292 			msb = RREG32(mmPSOC_GLOBAL_CONF_TRACE_ADDR);
2293 			*(u64 *) params->output = ((u64) msb << 40) | ((u64) rwphi << 32) | rwp;
2294 		}
2295 	}
2296 
2297 	return 0;
2298 }
2299 
2300 static int gaudi2_config_funnel(struct hl_device *hdev, struct hl_debug_params *params)
2301 {
2302 	u64 base_reg;
2303 	u32 val = params->enable ? 0xFFF : 0;
2304 	u32 read_reg;
2305 	int rc = 0;
2306 
2307 	if (params->reg_idx >= ARRAY_SIZE(debug_funnel_regs)) {
2308 		dev_err(hdev->dev, "Invalid register index in FUNNEL\n");
2309 		return -EINVAL;
2310 	}
2311 
2312 	base_reg = debug_funnel_regs[params->reg_idx];
2313 
2314 	/*
2315 	 * in case base reg is 0x0 we ignore this configuration
2316 	 */
2317 	if (!base_reg)
2318 		return 0;
2319 
2320 
2321 	/* in pldm we need to check if unit is not stub
2322 	 * for doing so, need to read DEVID value.
2323 	 * in case return 0x0 - it means that this is stub,
2324 	 * we ignore this and return 0 - means success
2325 	 */
2326 	read_reg = RREG32(base_reg + mmFUNNEL_DEVID_OFFSET);
2327 	if (hdev->pldm && read_reg == 0x0)
2328 		return 0;
2329 
2330 	rc = gaudi2_unlock_coresight_unit(hdev, base_reg);
2331 	if (rc)
2332 		return -EIO;
2333 
2334 	WREG32(base_reg, val);
2335 
2336 	return 0;
2337 }
2338 
2339 static int gaudi2_config_bmon(struct hl_device *hdev, struct hl_debug_params *params)
2340 {
2341 	struct hl_debug_params_bmon *input;
2342 	u64 base_reg;
2343 	u32 read_reg;
2344 
2345 	if (params->reg_idx >= ARRAY_SIZE(debug_bmon_regs)) {
2346 		dev_err(hdev->dev, "Invalid register index in BMON\n");
2347 		return -EINVAL;
2348 	}
2349 
2350 	base_reg = debug_bmon_regs[params->reg_idx];
2351 
2352 	/*
2353 	 * in case base reg is 0x0 we ignore this configuration
2354 	 */
2355 	if (!base_reg)
2356 		return 0;
2357 
2358 
2359 	/* in pldm we need to check if unit is not stub
2360 	 * for doing do need to read Control Register (offset 0x0) and check
2361 	 * it is not return 0x0 - in case it does
2362 	 * it means that this is stub, we ignore this and return 0
2363 	 * means success
2364 	 */
2365 	read_reg = RREG32(base_reg + mmBMON_CR_OFFSET);
2366 	if (hdev->pldm &&  read_reg == 0x0)
2367 		return 0;
2368 
2369 	WREG32(base_reg + mmBMON_ATTREN_OFFSET, 1);
2370 	/* dummy read for pldm to flush outstanding writes */
2371 	if (hdev->pldm)
2372 		RREG32(base_reg + mmBMON_ATTREN_OFFSET);
2373 
2374 	/* Write Only	Reset AXIMON */
2375 
2376 	WREG32(base_reg + mmBMON_RESET_OFFSET, 0x1);
2377 
2378 	if (params->enable) {
2379 		input = params->input;
2380 
2381 		if (!input)
2382 			return -EINVAL;
2383 
2384 		WREG32(base_reg + mmBMON_ADDRL_S0_OFFSET, lower_32_bits(input->start_addr0));
2385 		WREG32(base_reg + mmBMON_ADDRH_S0_OFFSET, upper_32_bits(input->start_addr0));
2386 		WREG32(base_reg + mmBMON_ADDRL_E0_OFFSET, lower_32_bits(input->addr_mask0));
2387 		WREG32(base_reg + mmBMON_ADDRH_E0_OFFSET, upper_32_bits(input->addr_mask0));
2388 		WREG32(base_reg + mmBMON_ADDRL_S1_OFFSET, lower_32_bits(input->start_addr1));
2389 		WREG32(base_reg + mmBMON_ADDRH_S1_OFFSET, upper_32_bits(input->start_addr1));
2390 		WREG32(base_reg + mmBMON_ADDRL_E1_OFFSET, lower_32_bits(input->addr_mask1));
2391 		WREG32(base_reg + mmBMON_ADDRH_E1_OFFSET, upper_32_bits(input->addr_mask1));
2392 		WREG32(base_reg + mmBMON_ADDRL_S2_OFFSET, lower_32_bits(input->start_addr2));
2393 		WREG32(base_reg + mmBMON_ADDRH_S2_OFFSET, upper_32_bits(input->start_addr2));
2394 		WREG32(base_reg + mmBMON_ADDRL_E2_OFFSET, lower_32_bits(input->end_addr2));
2395 		WREG32(base_reg + mmBMON_ADDRH_E2_OFFSET, upper_32_bits(input->end_addr2));
2396 		WREG32(base_reg + mmBMON_ADDRL_S3_OFFSET, lower_32_bits(input->start_addr3));
2397 		WREG32(base_reg + mmBMON_ADDRH_S3_OFFSET, upper_32_bits(input->start_addr3));
2398 		WREG32(base_reg + mmBMON_ADDRL_E3_OFFSET, lower_32_bits(input->end_addr3));
2399 		WREG32(base_reg + mmBMON_ADDRH_E3_OFFSET, upper_32_bits(input->end_addr3));
2400 
2401 		WREG32(base_reg + mmBMON_IDL_OFFSET, 0x0);
2402 		WREG32(base_reg + mmBMON_IDH_OFFSET, 0x0);
2403 
2404 		WREG32(base_reg + mmBMON_ATTREN_OFFSET, 0);
2405 		WREG32(base_reg + mmBMON_BW_WIN_OFFSET, input->bw_win);
2406 		WREG32(base_reg + mmBMON_WIN_CAPTURE_OFFSET, input->win_capture);
2407 		WREG32(base_reg + mmBMON_REDUCTION_OFFSET, 0x1 | (13 << 8));
2408 		WREG32(base_reg + mmBMON_STM_TRC_OFFSET, 0x7 | (input->id << 8));
2409 		WREG32(base_reg + mmBMON_CR_OFFSET, input->control);
2410 	} else {
2411 		WREG32(base_reg + mmBMON_ADDRL_S0_OFFSET, 0);
2412 		WREG32(base_reg + mmBMON_ADDRH_S0_OFFSET, 0);
2413 		WREG32(base_reg + mmBMON_ADDRL_E0_OFFSET, 0);
2414 		WREG32(base_reg + mmBMON_ADDRH_E0_OFFSET, 0);
2415 		WREG32(base_reg + mmBMON_ADDRL_S1_OFFSET, 0);
2416 		WREG32(base_reg + mmBMON_ADDRH_S1_OFFSET, 0);
2417 		WREG32(base_reg + mmBMON_ADDRL_E1_OFFSET, 0);
2418 		WREG32(base_reg + mmBMON_ADDRH_E1_OFFSET, 0);
2419 		WREG32(base_reg + mmBMON_ADDRL_S2_OFFSET, 0);
2420 		WREG32(base_reg + mmBMON_ADDRH_S2_OFFSET, 0);
2421 		WREG32(base_reg + mmBMON_ADDRL_E2_OFFSET, 0);
2422 		WREG32(base_reg + mmBMON_ADDRH_E2_OFFSET, 0);
2423 		WREG32(base_reg + mmBMON_ADDRL_S3_OFFSET, 0);
2424 		WREG32(base_reg + mmBMON_ADDRH_S3_OFFSET, 0);
2425 		WREG32(base_reg + mmBMON_ADDRL_E3_OFFSET, 0);
2426 		WREG32(base_reg + mmBMON_ADDRH_E3_OFFSET, 0);
2427 		WREG32(base_reg + mmBMON_REDUCTION_OFFSET, 0);
2428 		WREG32(base_reg + mmBMON_STM_TRC_OFFSET, 0x7 | (0xA << 8));
2429 		WREG32(base_reg + mmBMON_CR_OFFSET, 0x77 | 0xf << 24);
2430 	}
2431 
2432 	return 0;
2433 }
2434 
2435 static int gaudi2_config_spmu(struct hl_device *hdev, struct hl_debug_params *params)
2436 {
2437 	struct hl_debug_params_spmu *input = params->input;
2438 	u32 output_arr_len;
2439 	u32 cycle_cnt_idx;
2440 	u32 overflow_idx;
2441 	u32 events_num;
2442 	u32 event_mask;
2443 	u64 base_reg;
2444 	u32 read_reg;
2445 	u64 *output;
2446 	int i;
2447 
2448 	if (params->reg_idx >= ARRAY_SIZE(debug_spmu_regs)) {
2449 		dev_err(hdev->dev, "Invalid register index in SPMU\n");
2450 		return -EINVAL;
2451 	}
2452 
2453 	base_reg = debug_spmu_regs[params->reg_idx];
2454 
2455 	/*
2456 	 * in case base reg is 0x0 we ignore this configuration
2457 	 */
2458 	if (!base_reg)
2459 		return 0;
2460 
2461 	/* in pldm we need to check if unit is not stub
2462 	 * for doing do need to read  PMTRC (at offset 0x200)
2463 	 * address and check if return value is 0x0 - in case it does
2464 	 * it means that this is stub, we ignore this and return 0
2465 	 * means success
2466 	 */
2467 	read_reg = RREG32(base_reg + mmSPMU_PMCR_EL0_OFFSET);
2468 	if (hdev->pldm && read_reg == 0x0)
2469 		return 0;
2470 
2471 	if (params->enable) {
2472 		input = params->input;
2473 
2474 		if (!input)
2475 			return -EINVAL;
2476 
2477 		if (input->event_types_num > SPMU_MAX_COUNTERS) {
2478 			dev_err(hdev->dev, "too many event types values for SPMU enable\n");
2479 			return -EINVAL;
2480 		}
2481 
2482 		WREG32(base_reg + mmSPMU_PMCR_EL0_OFFSET, 0x41013046);
2483 		WREG32(base_reg + mmSPMU_PMCR_EL0_OFFSET, 0x41013040);
2484 
2485 		/* dummy read for pldm to flush outstanding writes */
2486 		if (hdev->pldm)
2487 			RREG32(base_reg);
2488 
2489 		for (i = 0 ; i < input->event_types_num ; i++)
2490 			WREG32(base_reg + mmSPMU_PMEVTYPER0_EL0_OFFSET + i * 4,
2491 				input->event_types[i]);
2492 
2493 		WREG32(base_reg + mmSPMU_PMTRC_OFFSET, input->pmtrc_val);
2494 		WREG32(base_reg + mmSPMU_TRC_CTRL_HOST_OFFSET, input->trc_ctrl_host_val);
2495 		WREG32(base_reg + mmSPMU_TRC_EN_HOST_OFFSET, input->trc_en_host_val);
2496 
2497 		WREG32(base_reg + mmSPMU_PMCR_EL0_OFFSET, 0x41013041);
2498 
2499 		/*
2500 		 * set enabled events mask based on input->event_types_num
2501 		 */
2502 		event_mask = 0x80000000;
2503 		if (input->event_types_num)
2504 			event_mask |= GENMASK(input->event_types_num - 1, 0);
2505 
2506 		WREG32(base_reg + mmSPMU_PMCNTENSET_EL0_OFFSET, event_mask);
2507 	} else {
2508 		output = params->output;
2509 		output_arr_len = params->output_size / 8;
2510 		events_num = output_arr_len - 2;
2511 		overflow_idx = output_arr_len - 2;
2512 		cycle_cnt_idx = output_arr_len - 1;
2513 
2514 		WREG32(base_reg + mmSPMU_PMCR_EL0_OFFSET, 0x41013040);
2515 
2516 		if (output && output_arr_len > 2) {
2517 
2518 			if (events_num > SPMU_MAX_COUNTERS) {
2519 				dev_err(hdev->dev, "too many events values for SPMU disable\n");
2520 				return -EINVAL;
2521 			}
2522 
2523 			for (i = 0 ; i < events_num ; i++) {
2524 				const u64 performance_counter_offset =
2525 					base_reg + mmSPMU_PMEVCNTR0_EL0_OFFSET + (i * 8);
2526 
2527 				output[i] = RREG32(performance_counter_offset);
2528 			}
2529 
2530 			output[overflow_idx] = RREG32(base_reg + mmSPMU_PMOVSSET_EL0_OFFSET);
2531 			output[cycle_cnt_idx] = RREG32(base_reg + mmSPMU_PMCCNTR_H_EL0_OFFSET);
2532 			output[cycle_cnt_idx] <<= 32;
2533 			output[cycle_cnt_idx] |= RREG32(base_reg + mmSPMU_PMCCNTR_L_EL0_OFFSET);
2534 		}
2535 
2536 		WREG32(base_reg + mmSPMU_PMOVSSET_EL0_OFFSET, 0);
2537 
2538 		/* clean pmtrc to reset value */
2539 		WREG32(base_reg + mmSPMU_PMTRC_OFFSET, 0x100400);
2540 	}
2541 
2542 	return 0;
2543 }
2544 
2545 int gaudi2_debug_coresight(struct hl_device *hdev, struct hl_ctx *ctx, void *data)
2546 {
2547 	struct hl_debug_params *params = data;
2548 	int rc = 0;
2549 
2550 	switch (params->op) {
2551 	case HL_DEBUG_OP_STM:
2552 		rc = gaudi2_config_stm(hdev, params);
2553 		break;
2554 	case HL_DEBUG_OP_ETF:
2555 		rc = gaudi2_config_etf(hdev, params);
2556 		break;
2557 	case HL_DEBUG_OP_ETR:
2558 		rc = gaudi2_config_etr(hdev, ctx, params);
2559 		break;
2560 	case HL_DEBUG_OP_FUNNEL:
2561 		rc = gaudi2_config_funnel(hdev, params);
2562 		break;
2563 	case HL_DEBUG_OP_BMON:
2564 		rc = gaudi2_config_bmon(hdev, params);
2565 		break;
2566 	case HL_DEBUG_OP_SPMU:
2567 		rc = gaudi2_config_spmu(hdev, params);
2568 		break;
2569 	case HL_DEBUG_OP_TIMESTAMP:
2570 		/* Do nothing as this opcode is deprecated */
2571 		break;
2572 	default:
2573 		dev_err(hdev->dev, "Unknown coresight id %d\n", params->op);
2574 		return -EINVAL;
2575 	}
2576 
2577 	return rc;
2578 }
2579 
2580 void gaudi2_halt_coresight(struct hl_device *hdev, struct hl_ctx *ctx)
2581 {
2582 	struct hl_debug_params params = {};
2583 	int i, rc;
2584 
2585 	/* in pldm attempting to access stubbed etfs can cause problems */
2586 	if (!hdev->pldm)
2587 		for (i = GAUDI2_ETF_FIRST ; i <= GAUDI2_ETF_LAST ; i++) {
2588 			params.reg_idx = i;
2589 			rc = gaudi2_config_etf(hdev, &params);
2590 			if (rc)
2591 				dev_err(hdev->dev, "halt ETF failed, %d/%d\n", rc, i);
2592 		}
2593 
2594 	rc = gaudi2_config_etr(hdev, ctx, &params);
2595 	if (rc)
2596 		dev_err(hdev->dev, "halt ETR failed, %d\n", rc);
2597 }
2598 
2599 
2600 static int gaudi2_coresight_set_disabled_components(struct hl_device *hdev, u32 unit_count,
2601 					u32 enabled_mask,
2602 					const struct component_config_offsets *binning_table)
2603 {
2604 	u32 component_idx = 0;
2605 	u32 disabled_mask;
2606 	u32 full_mask;
2607 
2608 	/* in case no unit - no need to do work */
2609 	if (!unit_count)
2610 		return 0;
2611 
2612 	full_mask = GENMASK(unit_count - 1, 0);
2613 
2614 	/* set the disable bits on disabled mask */
2615 	disabled_mask = (~enabled_mask) & full_mask;
2616 
2617 	while (disabled_mask) {
2618 		u32 component_mask = 1 << component_idx;
2619 
2620 		if (component_idx >= unit_count) {
2621 			dev_err(hdev->dev, "index is out of range index(%u) >= units_count(%u)\n",
2622 				component_idx, unit_count);
2623 			return -EINVAL;
2624 		}
2625 
2626 		/*
2627 		 * in case mask is set, driver need to set to 0x0
2628 		 * all offsets for the following structures in the appropriate indices:
2629 		 * debug_funnel_regs - offsets for all cs_dbg FUNNELs
2630 		 * debug_etf_regs - offsets for all cs_dbg ETFs
2631 		 * debug_stm_regs - offsets for all cs_dbg STMs
2632 		 * debug_spmu_regs - offsets for all cs_dbg SPMUs
2633 		 * debug_bmon_regs - offsets for all cs_dbg BMONs
2634 		 * when value is set to COMPONENT_ID_INVALID -
2635 		 * it means there is no such register for current component.
2636 		 */
2637 
2638 		if (disabled_mask & component_mask) {
2639 			u32 bmon_idx;
2640 			const struct component_config_offsets *binned_component =
2641 				&(binning_table[component_idx]);
2642 
2643 			if (binned_component->funnel_id != COMPONENT_ID_INVALID)
2644 				debug_funnel_regs[binned_component->funnel_id] = 0x0;
2645 
2646 			if (binned_component->etf_id != COMPONENT_ID_INVALID)
2647 				debug_etf_regs[binned_component->etf_id] = 0x0;
2648 
2649 			if (binned_component->stm_id != COMPONENT_ID_INVALID)
2650 				debug_stm_regs[binned_component->stm_id] = 0x0;
2651 
2652 			if (binned_component->spmu_id != COMPONENT_ID_INVALID)
2653 				debug_spmu_regs[binned_component->spmu_id] = 0x0;
2654 
2655 			for (bmon_idx = 0; bmon_idx < binned_component->bmon_count; bmon_idx++)
2656 				debug_bmon_regs[binned_component->bmon_ids[bmon_idx]] = 0x0;
2657 
2658 			/*
2659 			 * reset enabled bit
2660 			 */
2661 			disabled_mask &= ~component_mask;
2662 		}
2663 
2664 		component_idx++;
2665 	}
2666 
2667 	return 0;
2668 }
2669 
2670 int gaudi2_coresight_init(struct hl_device *hdev)
2671 {
2672 	struct asic_fixed_properties *prop = &hdev->asic_prop;
2673 	int ret;
2674 
2675 	/*
2676 	 * Mask out all the disabled binned offsets.
2677 	 * so when user request to configure a binned or masked out component,
2678 	 * driver will ignore programming it ( happens when offset value is set to 0x0 )
2679 	 * this is being set in gaudi2_coresight_set_disabled_components
2680 	 */
2681 
2682 	/* Set TPC disable components */
2683 	ret = gaudi2_coresight_set_disabled_components(hdev, TPC_ID_SIZE, prop->tpc_enabled_mask,
2684 							tpc_binning_cfg_table);
2685 	if (ret) {
2686 		dev_err(hdev->dev, "Failed to set disabled cs_dbg units for tpc coresight\n");
2687 		return ret;
2688 	}
2689 
2690 	/* Set decoder disable components */
2691 	ret = gaudi2_coresight_set_disabled_components(hdev, DEC_ID_SIZE,
2692 					prop->decoder_enabled_mask, decoder_binning_cfg_table);
2693 	if (ret) {
2694 		dev_err(hdev->dev, "Failed to set disabled cs_dbg units for decoder coresight\n");
2695 		return ret;
2696 	}
2697 
2698 	/* Set HBM (MC0 and MC1) disable components */
2699 	ret = gaudi2_coresight_set_disabled_components(hdev, HBM_ID_SIZE, prop->dram_enabled_mask,
2700 							hbm_mc0_binning_cfg_table);
2701 	if (ret) {
2702 		dev_err(hdev->dev, "Failed to set disabled cs_dbg units for hbm mc0 coresight\n");
2703 		return ret;
2704 	}
2705 
2706 	ret = gaudi2_coresight_set_disabled_components(hdev, HBM_ID_SIZE, prop->dram_enabled_mask,
2707 							hbm_mc1_binning_cfg_table);
2708 	if (ret) {
2709 		dev_err(hdev->dev, "Failed to set disabled cs_dbg units for hbm mc1 coresight\n");
2710 		return ret;
2711 	}
2712 
2713 	/* Set HIF_HMMU disable components */
2714 	ret = gaudi2_coresight_set_disabled_components(hdev, HMMU_ID_SIZE,
2715 					prop->hmmu_hif_enabled_mask, hmmu_binning_cfg_table);
2716 	if (ret) {
2717 		dev_err(hdev->dev, "Failed to set disabled cs_dbg units for hmmu coresight\n");
2718 		return ret;
2719 	}
2720 
2721 	/* Set XBAR_EDGE disable components */
2722 	ret = gaudi2_coresight_set_disabled_components(hdev, XBAR_EDGE_ID_SIZE,
2723 					prop->xbar_edge_enabled_mask, xbar_edge_binning_cfg_table);
2724 	if (ret) {
2725 		dev_err(hdev->dev, "Failed to set disabled cs_dbg units for xbar_edge coresight\n");
2726 		return ret;
2727 	}
2728 
2729 	/* Set EDMA disable components */
2730 	ret = gaudi2_coresight_set_disabled_components(hdev, EDMA_ID_SIZE, prop->edma_enabled_mask,
2731 							edma_binning_cfg_table);
2732 	if (ret) {
2733 		dev_err(hdev->dev, "Failed to set disabled cs_dbg units for edma coresight\n");
2734 		return ret;
2735 	}
2736 
2737 	return 0;
2738 }
2739