Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
14fa93cd SJ |
2 | #ifndef __NITROX_CSR_H |
3 | #define __NITROX_CSR_H | |
4 | ||
5 | #include <asm/byteorder.h> | |
6 | #include <linux/types.h> | |
7 | ||
8 | /* EMU clusters */ | |
9 | #define NR_CLUSTERS 4 | |
48e10548 SJ |
10 | /* Maximum cores per cluster, |
11 | * varies based on partname | |
12 | */ | |
14fa93cd SJ |
13 | #define AE_CORES_PER_CLUSTER 20 |
14 | #define SE_CORES_PER_CLUSTER 16 | |
15 | ||
48e10548 SJ |
16 | #define AE_MAX_CORES (AE_CORES_PER_CLUSTER * NR_CLUSTERS) |
17 | #define SE_MAX_CORES (SE_CORES_PER_CLUSTER * NR_CLUSTERS) | |
18 | #define ZIP_MAX_CORES 5 | |
19 | ||
14fa93cd SJ |
20 | /* BIST registers */ |
21 | #define EMU_BIST_STATUSX(_i) (0x1402700 + ((_i) * 0x40000)) | |
22 | #define UCD_BIST_STATUS 0x12C0070 | |
23 | #define NPS_CORE_BIST_REG 0x10000E8 | |
24 | #define NPS_CORE_NPC_BIST_REG 0x1000128 | |
25 | #define NPS_PKT_SLC_BIST_REG 0x1040088 | |
26 | #define NPS_PKT_IN_BIST_REG 0x1040100 | |
27 | #define POM_BIST_REG 0x11C0100 | |
28 | #define BMI_BIST_REG 0x1140080 | |
29 | #define EFL_CORE_BIST_REGX(_i) (0x1240100 + ((_i) * 0x400)) | |
30 | #define EFL_TOP_BIST_STAT 0x1241090 | |
31 | #define BMO_BIST_REG 0x1180080 | |
32 | #define LBC_BIST_STATUS 0x1200020 | |
33 | #define PEM_BIST_STATUSX(_i) (0x1080468 | ((_i) << 18)) | |
34 | ||
35 | /* EMU registers */ | |
36 | #define EMU_SE_ENABLEX(_i) (0x1400000 + ((_i) * 0x40000)) | |
37 | #define EMU_AE_ENABLEX(_i) (0x1400008 + ((_i) * 0x40000)) | |
38 | #define EMU_WD_INT_ENA_W1SX(_i) (0x1402318 + ((_i) * 0x40000)) | |
39 | #define EMU_GE_INT_ENA_W1SX(_i) (0x1402518 + ((_i) * 0x40000)) | |
40 | #define EMU_FUSE_MAPX(_i) (0x1402708 + ((_i) * 0x40000)) | |
41 | ||
42 | /* UCD registers */ | |
a7268c4d PKH |
43 | #define UCD_SE_EID_UCODE_BLOCK_NUMX(_i) (0x12C0000 + ((_i) * 0x1000)) |
44 | #define UCD_AE_EID_UCODE_BLOCK_NUMX(_i) (0x12C0008 + ((_i) * 0x800)) | |
14fa93cd SJ |
45 | #define UCD_UCODE_LOAD_BLOCK_NUM 0x12C0010 |
46 | #define UCD_UCODE_LOAD_IDX_DATAX(_i) (0x12C0018 + ((_i) * 0x20)) | |
a7268c4d PKH |
47 | #define UCD_SE_CNTX(_i) (0x12C0040 + ((_i) * 0x1000)) |
48 | #define UCD_AE_CNTX(_i) (0x12C0048 + ((_i) * 0x800)) | |
49 | ||
50 | /* AQM registers */ | |
51 | #define AQM_CTL 0x1300000 | |
52 | #define AQM_INT 0x1300008 | |
53 | #define AQM_DBELL_OVF_LO 0x1300010 | |
54 | #define AQM_DBELL_OVF_HI 0x1300018 | |
55 | #define AQM_DBELL_OVF_LO_W1S 0x1300020 | |
56 | #define AQM_DBELL_OVF_LO_ENA_W1C 0x1300028 | |
57 | #define AQM_DBELL_OVF_LO_ENA_W1S 0x1300030 | |
58 | #define AQM_DBELL_OVF_HI_W1S 0x1300038 | |
59 | #define AQM_DBELL_OVF_HI_ENA_W1C 0x1300040 | |
60 | #define AQM_DBELL_OVF_HI_ENA_W1S 0x1300048 | |
61 | #define AQM_DMA_RD_ERR_LO 0x1300050 | |
62 | #define AQM_DMA_RD_ERR_HI 0x1300058 | |
63 | #define AQM_DMA_RD_ERR_LO_W1S 0x1300060 | |
64 | #define AQM_DMA_RD_ERR_LO_ENA_W1C 0x1300068 | |
65 | #define AQM_DMA_RD_ERR_LO_ENA_W1S 0x1300070 | |
66 | #define AQM_DMA_RD_ERR_HI_W1S 0x1300078 | |
67 | #define AQM_DMA_RD_ERR_HI_ENA_W1C 0x1300080 | |
68 | #define AQM_DMA_RD_ERR_HI_ENA_W1S 0x1300088 | |
69 | #define AQM_EXEC_NA_LO 0x1300090 | |
70 | #define AQM_EXEC_NA_HI 0x1300098 | |
71 | #define AQM_EXEC_NA_LO_W1S 0x13000A0 | |
72 | #define AQM_EXEC_NA_LO_ENA_W1C 0x13000A8 | |
73 | #define AQM_EXEC_NA_LO_ENA_W1S 0x13000B0 | |
74 | #define AQM_EXEC_NA_HI_W1S 0x13000B8 | |
75 | #define AQM_EXEC_NA_HI_ENA_W1C 0x13000C0 | |
76 | #define AQM_EXEC_NA_HI_ENA_W1S 0x13000C8 | |
77 | #define AQM_EXEC_ERR_LO 0x13000D0 | |
78 | #define AQM_EXEC_ERR_HI 0x13000D8 | |
79 | #define AQM_EXEC_ERR_LO_W1S 0x13000E0 | |
80 | #define AQM_EXEC_ERR_LO_ENA_W1C 0x13000E8 | |
81 | #define AQM_EXEC_ERR_LO_ENA_W1S 0x13000F0 | |
82 | #define AQM_EXEC_ERR_HI_W1S 0x13000F8 | |
83 | #define AQM_EXEC_ERR_HI_ENA_W1C 0x1300100 | |
84 | #define AQM_EXEC_ERR_HI_ENA_W1S 0x1300108 | |
85 | #define AQM_ECC_INT 0x1300110 | |
86 | #define AQM_ECC_INT_W1S 0x1300118 | |
87 | #define AQM_ECC_INT_ENA_W1C 0x1300120 | |
88 | #define AQM_ECC_INT_ENA_W1S 0x1300128 | |
89 | #define AQM_ECC_CTL 0x1300130 | |
90 | #define AQM_BIST_STATUS 0x1300138 | |
91 | #define AQM_CMD_INF_THRX(x) (0x1300400 + ((x) * 0x8)) | |
92 | #define AQM_CMD_INFX(x) (0x1300800 + ((x) * 0x8)) | |
93 | #define AQM_GRP_EXECMSK_LOX(x) (0x1300C00 + ((x) * 0x10)) | |
94 | #define AQM_GRP_EXECMSK_HIX(x) (0x1300C08 + ((x) * 0x10)) | |
95 | #define AQM_ACTIVITY_STAT_LO 0x1300C80 | |
96 | #define AQM_ACTIVITY_STAT_HI 0x1300C88 | |
97 | #define AQM_Q_CMD_PROCX(x) (0x1301000 + ((x) * 0x8)) | |
98 | #define AQM_PERF_CTL_LO 0x1301400 | |
99 | #define AQM_PERF_CTL_HI 0x1301408 | |
100 | #define AQM_PERF_CNT 0x1301410 | |
101 | ||
102 | #define AQMQ_DRBLX(x) (0x20000 + ((x) * 0x40000)) | |
103 | #define AQMQ_QSZX(x) (0x20008 + ((x) * 0x40000)) | |
104 | #define AQMQ_BADRX(x) (0x20010 + ((x) * 0x40000)) | |
105 | #define AQMQ_NXT_CMDX(x) (0x20018 + ((x) * 0x40000)) | |
106 | #define AQMQ_CMD_CNTX(x) (0x20020 + ((x) * 0x40000)) | |
107 | #define AQMQ_CMP_THRX(x) (0x20028 + ((x) * 0x40000)) | |
108 | #define AQMQ_CMP_CNTX(x) (0x20030 + ((x) * 0x40000)) | |
109 | #define AQMQ_TIM_LDX(x) (0x20038 + ((x) * 0x40000)) | |
110 | #define AQMQ_TIMERX(x) (0x20040 + ((x) * 0x40000)) | |
111 | #define AQMQ_ENX(x) (0x20048 + ((x) * 0x40000)) | |
112 | #define AQMQ_ACTIVITY_STATX(x) (0x20050 + ((x) * 0x40000)) | |
113 | #define AQM_VF_CMP_STATX(x) (0x28000 + ((x) * 0x40000)) | |
14fa93cd SJ |
114 | |
115 | /* NPS core registers */ | |
116 | #define NPS_CORE_GBL_VFCFG 0x1000000 | |
117 | #define NPS_CORE_CONTROL 0x1000008 | |
118 | #define NPS_CORE_INT_ACTIVE 0x1000080 | |
119 | #define NPS_CORE_INT 0x10000A0 | |
120 | #define NPS_CORE_INT_ENA_W1S 0x10000B8 | |
086eac9e SJ |
121 | #define NPS_STATS_PKT_DMA_RD_CNT 0x1000180 |
122 | #define NPS_STATS_PKT_DMA_WR_CNT 0x1000190 | |
14fa93cd SJ |
123 | |
124 | /* NPS packet registers */ | |
cf718eaa SJ |
125 | #define NPS_PKT_INT 0x1040018 |
126 | #define NPS_PKT_MBOX_INT_LO 0x1040020 | |
127 | #define NPS_PKT_MBOX_INT_LO_ENA_W1C 0x1040030 | |
128 | #define NPS_PKT_MBOX_INT_LO_ENA_W1S 0x1040038 | |
129 | #define NPS_PKT_MBOX_INT_HI 0x1040040 | |
130 | #define NPS_PKT_MBOX_INT_HI_ENA_W1C 0x1040050 | |
131 | #define NPS_PKT_MBOX_INT_HI_ENA_W1S 0x1040058 | |
14fa93cd SJ |
132 | #define NPS_PKT_IN_RERR_HI 0x1040108 |
133 | #define NPS_PKT_IN_RERR_HI_ENA_W1S 0x1040120 | |
134 | #define NPS_PKT_IN_RERR_LO 0x1040128 | |
135 | #define NPS_PKT_IN_RERR_LO_ENA_W1S 0x1040140 | |
136 | #define NPS_PKT_IN_ERR_TYPE 0x1040148 | |
137 | #define NPS_PKT_IN_ERR_TYPE_ENA_W1S 0x1040160 | |
138 | #define NPS_PKT_IN_INSTR_CTLX(_i) (0x10060 + ((_i) * 0x40000)) | |
139 | #define NPS_PKT_IN_INSTR_BADDRX(_i) (0x10068 + ((_i) * 0x40000)) | |
140 | #define NPS_PKT_IN_INSTR_RSIZEX(_i) (0x10070 + ((_i) * 0x40000)) | |
141 | #define NPS_PKT_IN_DONE_CNTSX(_i) (0x10080 + ((_i) * 0x40000)) | |
142 | #define NPS_PKT_IN_INSTR_BAOFF_DBELLX(_i) (0x10078 + ((_i) * 0x40000)) | |
143 | #define NPS_PKT_IN_INT_LEVELSX(_i) (0x10088 + ((_i) * 0x40000)) | |
144 | ||
145 | #define NPS_PKT_SLC_RERR_HI 0x1040208 | |
146 | #define NPS_PKT_SLC_RERR_HI_ENA_W1S 0x1040220 | |
147 | #define NPS_PKT_SLC_RERR_LO 0x1040228 | |
148 | #define NPS_PKT_SLC_RERR_LO_ENA_W1S 0x1040240 | |
149 | #define NPS_PKT_SLC_ERR_TYPE 0x1040248 | |
150 | #define NPS_PKT_SLC_ERR_TYPE_ENA_W1S 0x1040260 | |
cf718eaa SJ |
151 | /* Mailbox PF->VF PF Accessible Data registers */ |
152 | #define NPS_PKT_MBOX_PF_VF_PFDATAX(_i) (0x1040800 + ((_i) * 0x8)) | |
153 | #define NPS_PKT_MBOX_VF_PF_PFDATAX(_i) (0x1040C00 + ((_i) * 0x8)) | |
154 | ||
14fa93cd SJ |
155 | #define NPS_PKT_SLC_CTLX(_i) (0x10000 + ((_i) * 0x40000)) |
156 | #define NPS_PKT_SLC_CNTSX(_i) (0x10008 + ((_i) * 0x40000)) | |
157 | #define NPS_PKT_SLC_INT_LEVELSX(_i) (0x10010 + ((_i) * 0x40000)) | |
158 | ||
159 | /* POM registers */ | |
160 | #define POM_INT_ENA_W1S 0x11C0018 | |
161 | #define POM_GRP_EXECMASKX(_i) (0x11C1100 | ((_i) * 8)) | |
162 | #define POM_INT 0x11C0000 | |
163 | #define POM_PERF_CTL 0x11CC400 | |
164 | ||
165 | /* BMI registers */ | |
166 | #define BMI_INT 0x1140000 | |
167 | #define BMI_CTL 0x1140020 | |
168 | #define BMI_INT_ENA_W1S 0x1140018 | |
086eac9e | 169 | #define BMI_NPS_PKT_CNT 0x1140070 |
14fa93cd SJ |
170 | |
171 | /* EFL registers */ | |
172 | #define EFL_CORE_INT_ENA_W1SX(_i) (0x1240018 + ((_i) * 0x400)) | |
173 | #define EFL_CORE_VF_ERR_INT0X(_i) (0x1240050 + ((_i) * 0x400)) | |
174 | #define EFL_CORE_VF_ERR_INT0_ENA_W1SX(_i) (0x1240068 + ((_i) * 0x400)) | |
175 | #define EFL_CORE_VF_ERR_INT1X(_i) (0x1240070 + ((_i) * 0x400)) | |
176 | #define EFL_CORE_VF_ERR_INT1_ENA_W1SX(_i) (0x1240088 + ((_i) * 0x400)) | |
177 | #define EFL_CORE_SE_ERR_INTX(_i) (0x12400A0 + ((_i) * 0x400)) | |
178 | #define EFL_RNM_CTL_STATUS 0x1241800 | |
179 | #define EFL_CORE_INTX(_i) (0x1240000 + ((_i) * 0x400)) | |
180 | ||
181 | /* BMO registers */ | |
182 | #define BMO_CTL2 0x1180028 | |
086eac9e | 183 | #define BMO_NPS_SLC_PKT_CNT 0x1180078 |
14fa93cd SJ |
184 | |
185 | /* LBC registers */ | |
186 | #define LBC_INT 0x1200000 | |
187 | #define LBC_INVAL_CTL 0x1201010 | |
188 | #define LBC_PLM_VF1_64_INT 0x1202008 | |
189 | #define LBC_INVAL_STATUS 0x1202010 | |
190 | #define LBC_INT_ENA_W1S 0x1203000 | |
191 | #define LBC_PLM_VF1_64_INT_ENA_W1S 0x1205008 | |
192 | #define LBC_PLM_VF65_128_INT 0x1206008 | |
193 | #define LBC_ELM_VF1_64_INT 0x1208000 | |
194 | #define LBC_PLM_VF65_128_INT_ENA_W1S 0x1209008 | |
195 | #define LBC_ELM_VF1_64_INT_ENA_W1S 0x120B000 | |
196 | #define LBC_ELM_VF65_128_INT 0x120C000 | |
197 | #define LBC_ELM_VF65_128_INT_ENA_W1S 0x120F000 | |
198 | ||
48e10548 SJ |
199 | #define RST_BOOT 0x10C1600 |
200 | #define FUS_DAT1 0x10C1408 | |
201 | ||
14fa93cd SJ |
202 | /* PEM registers */ |
203 | #define PEM0_INT 0x1080428 | |
204 | ||
a7268c4d PKH |
205 | /** |
206 | * struct ucd_core_eid_ucode_block_num - Core Eid to Ucode Blk Mapping Registers | |
207 | * @ucode_len: Ucode length identifier 32KB or 64KB | |
208 | * @ucode_blk: Ucode Block Number | |
209 | */ | |
210 | union ucd_core_eid_ucode_block_num { | |
211 | u64 value; | |
212 | struct { | |
213 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
214 | u64 raz_4_63 : 60; | |
215 | u64 ucode_len : 1; | |
216 | u64 ucode_blk : 3; | |
217 | #else | |
218 | u64 ucode_blk : 3; | |
219 | u64 ucode_len : 1; | |
220 | u64 raz_4_63 : 60; | |
221 | #endif | |
222 | }; | |
223 | }; | |
224 | ||
225 | /** | |
226 | * struct aqm_grp_execmsk_lo - Available AE engines for the group | |
227 | * @exec_0_to_39: AE engines 0 to 39 status | |
228 | */ | |
229 | union aqm_grp_execmsk_lo { | |
230 | u64 value; | |
231 | struct { | |
232 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
233 | u64 raz_40_63 : 24; | |
234 | u64 exec_0_to_39 : 40; | |
235 | #else | |
236 | u64 exec_0_to_39 : 40; | |
237 | u64 raz_40_63 : 24; | |
238 | #endif | |
239 | }; | |
240 | }; | |
241 | ||
242 | /** | |
243 | * struct aqm_grp_execmsk_hi - Available AE engines for the group | |
244 | * @exec_40_to_79: AE engines 40 to 79 status | |
245 | */ | |
246 | union aqm_grp_execmsk_hi { | |
247 | u64 value; | |
248 | struct { | |
249 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
250 | u64 raz_40_63 : 24; | |
251 | u64 exec_40_to_79 : 40; | |
252 | #else | |
253 | u64 exec_40_to_79 : 40; | |
254 | u64 raz_40_63 : 24; | |
255 | #endif | |
256 | }; | |
257 | }; | |
258 | ||
5f05cdca PKH |
259 | /** |
260 | * struct aqmq_drbl - AQM Queue Doorbell Counter Registers | |
261 | * @dbell_count: Doorbell Counter | |
262 | */ | |
263 | union aqmq_drbl { | |
264 | u64 value; | |
265 | struct { | |
266 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
267 | u64 raz_32_63 : 32; | |
268 | u64 dbell_count : 32; | |
269 | #else | |
270 | u64 dbell_count : 32; | |
271 | u64 raz_32_63 : 32; | |
272 | #endif | |
273 | }; | |
274 | }; | |
275 | ||
276 | /** | |
277 | * struct aqmq_qsz - AQM Queue Host Queue Size Registers | |
278 | * @host_queue_size: Size, in numbers of 'aqmq_command_s' command | |
279 | * of the Host Ring. | |
280 | */ | |
281 | union aqmq_qsz { | |
282 | u64 value; | |
283 | struct { | |
284 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
285 | u64 raz_32_63 : 32; | |
286 | u64 host_queue_size : 32; | |
287 | #else | |
288 | u64 host_queue_size : 32; | |
289 | u64 raz_32_63 : 32; | |
290 | #endif | |
291 | }; | |
292 | }; | |
293 | ||
294 | /** | |
295 | * struct aqmq_cmp_thr - AQM Queue Commands Completed Threshold Registers | |
296 | * @commands_completed_threshold: Count of 'aqmq_command_s' commands executed | |
297 | * by AE engines for which completion interrupt is asserted. | |
298 | */ | |
299 | union aqmq_cmp_thr { | |
300 | u64 value; | |
301 | struct { | |
302 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
303 | u64 raz_32_63 : 32; | |
304 | u64 commands_completed_threshold : 32; | |
305 | #else | |
306 | u64 commands_completed_threshold : 32; | |
307 | u64 raz_32_63 : 32; | |
308 | #endif | |
309 | }; | |
310 | }; | |
311 | ||
312 | /** | |
313 | * struct aqmq_cmp_cnt - AQM Queue Commands Completed Count Registers | |
314 | * @resend: Bit to request completion interrupt Resend. | |
315 | * @completion_status: Command completion status of the ring. | |
316 | * @commands_completed_count: Count of 'aqmq_command_s' commands executed by | |
317 | * AE engines. | |
318 | */ | |
319 | union aqmq_cmp_cnt { | |
320 | u64 value; | |
321 | struct { | |
322 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
323 | u64 raz_34_63 : 30; | |
324 | u64 resend : 1; | |
325 | u64 completion_status : 1; | |
326 | u64 commands_completed_count : 32; | |
327 | #else | |
328 | u64 commands_completed_count : 32; | |
329 | u64 completion_status : 1; | |
330 | u64 resend : 1; | |
331 | u64 raz_34_63 : 30; | |
332 | #endif | |
333 | }; | |
334 | }; | |
335 | ||
336 | /** | |
337 | * struct aqmq_en - AQM Queue Enable Registers | |
338 | * @queue_status: 1 = AQMQ is enabled, 0 = AQMQ is disabled | |
339 | */ | |
340 | union aqmq_en { | |
341 | u64 value; | |
342 | struct { | |
343 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
344 | u64 raz_1_63 : 63; | |
345 | u64 queue_enable : 1; | |
346 | #else | |
347 | u64 queue_enable : 1; | |
348 | u64 raz_1_63 : 63; | |
349 | #endif | |
350 | }; | |
351 | }; | |
352 | ||
353 | /** | |
354 | * struct aqmq_activity_stat - AQM Queue Activity Status Registers | |
355 | * @queue_active: 1 = AQMQ is active, 0 = AQMQ is quiescent | |
356 | */ | |
357 | union aqmq_activity_stat { | |
358 | u64 value; | |
359 | struct { | |
360 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
361 | u64 raz_1_63 : 63; | |
362 | u64 queue_active : 1; | |
363 | #else | |
364 | u64 queue_active : 1; | |
365 | u64 raz_1_63 : 63; | |
366 | #endif | |
367 | }; | |
368 | }; | |
369 | ||
14fa93cd SJ |
370 | /** |
371 | * struct emu_fuse_map - EMU Fuse Map Registers | |
372 | * @ae_fuse: Fuse settings for AE 19..0 | |
373 | * @se_fuse: Fuse settings for SE 15..0 | |
374 | * | |
375 | * A set bit indicates the unit is fuse disabled. | |
376 | */ | |
377 | union emu_fuse_map { | |
378 | u64 value; | |
379 | struct { | |
380 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
381 | u64 valid : 1; | |
382 | u64 raz_52_62 : 11; | |
383 | u64 ae_fuse : 20; | |
384 | u64 raz_16_31 : 16; | |
385 | u64 se_fuse : 16; | |
386 | #else | |
387 | u64 se_fuse : 16; | |
388 | u64 raz_16_31 : 16; | |
389 | u64 ae_fuse : 20; | |
390 | u64 raz_52_62 : 11; | |
391 | u64 valid : 1; | |
392 | #endif | |
393 | } s; | |
394 | }; | |
395 | ||
396 | /** | |
397 | * struct emu_se_enable - Symmetric Engine Enable Registers | |
398 | * @enable: Individual enables for each of the clusters | |
399 | * 16 symmetric engines. | |
400 | */ | |
401 | union emu_se_enable { | |
402 | u64 value; | |
403 | struct { | |
404 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
405 | u64 raz : 48; | |
406 | u64 enable : 16; | |
407 | #else | |
408 | u64 enable : 16; | |
409 | u64 raz : 48; | |
410 | #endif | |
411 | } s; | |
412 | }; | |
413 | ||
414 | /** | |
415 | * struct emu_ae_enable - EMU Asymmetric engines. | |
416 | * @enable: Individual enables for each of the cluster's | |
417 | * 20 Asymmetric Engines. | |
418 | */ | |
419 | union emu_ae_enable { | |
420 | u64 value; | |
421 | struct { | |
422 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
423 | u64 raz : 44; | |
424 | u64 enable : 20; | |
425 | #else | |
426 | u64 enable : 20; | |
427 | u64 raz : 44; | |
428 | #endif | |
429 | } s; | |
430 | }; | |
431 | ||
432 | /** | |
433 | * struct emu_wd_int_ena_w1s - EMU Interrupt Enable Registers | |
434 | * @ae_wd: Reads or sets enable for EMU(0..3)_WD_INT[AE_WD] | |
435 | * @se_wd: Reads or sets enable for EMU(0..3)_WD_INT[SE_WD] | |
436 | */ | |
437 | union emu_wd_int_ena_w1s { | |
438 | u64 value; | |
439 | struct { | |
440 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
441 | u64 raz2 : 12; | |
442 | u64 ae_wd : 20; | |
443 | u64 raz1 : 16; | |
444 | u64 se_wd : 16; | |
445 | #else | |
446 | u64 se_wd : 16; | |
447 | u64 raz1 : 16; | |
448 | u64 ae_wd : 20; | |
449 | u64 raz2 : 12; | |
450 | #endif | |
451 | } s; | |
452 | }; | |
453 | ||
454 | /** | |
455 | * struct emu_ge_int_ena_w1s - EMU Interrupt Enable set registers | |
456 | * @ae_ge: Reads or sets enable for EMU(0..3)_GE_INT[AE_GE] | |
457 | * @se_ge: Reads or sets enable for EMU(0..3)_GE_INT[SE_GE] | |
458 | */ | |
459 | union emu_ge_int_ena_w1s { | |
460 | u64 value; | |
461 | struct { | |
462 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
463 | u64 raz_52_63 : 12; | |
464 | u64 ae_ge : 20; | |
465 | u64 raz_16_31: 16; | |
466 | u64 se_ge : 16; | |
467 | #else | |
468 | u64 se_ge : 16; | |
469 | u64 raz_16_31: 16; | |
470 | u64 ae_ge : 20; | |
471 | u64 raz_52_63 : 12; | |
472 | #endif | |
473 | } s; | |
474 | }; | |
475 | ||
476 | /** | |
477 | * struct nps_pkt_slc_ctl - Solicited Packet Out Control Registers | |
478 | * @rh: Indicates whether to remove or include the response header | |
479 | * 1 = Include, 0 = Remove | |
480 | * @z: If set, 8 trailing 0x00 bytes will be added to the end of the | |
481 | * outgoing packet. | |
482 | * @enb: Enable for this port. | |
483 | */ | |
484 | union nps_pkt_slc_ctl { | |
485 | u64 value; | |
486 | struct { | |
487 | #if defined(__BIG_ENDIAN_BITFIELD) | |
488 | u64 raz : 61; | |
489 | u64 rh : 1; | |
490 | u64 z : 1; | |
491 | u64 enb : 1; | |
492 | #else | |
493 | u64 enb : 1; | |
494 | u64 z : 1; | |
495 | u64 rh : 1; | |
496 | u64 raz : 61; | |
497 | #endif | |
498 | } s; | |
499 | }; | |
500 | ||
501 | /** | |
502 | * struct nps_pkt_slc_cnts - Solicited Packet Out Count Registers | |
503 | * @slc_int: Returns a 1 when: | |
504 | * NPS_PKT_SLC(i)_CNTS[CNT] > NPS_PKT_SLC(i)_INT_LEVELS[CNT], or | |
505 | * NPS_PKT_SLC(i)_CNTS[TIMER] > NPS_PKT_SLC(i)_INT_LEVELS[TIMET]. | |
506 | * To clear the bit, the CNTS register must be written to clear. | |
507 | * @in_int: Returns a 1 when: | |
508 | * NPS_PKT_IN(i)_DONE_CNTS[CNT] > NPS_PKT_IN(i)_INT_LEVELS[CNT]. | |
509 | * To clear the bit, the DONE_CNTS register must be written to clear. | |
510 | * @mbox_int: Returns a 1 when: | |
511 | * NPS_PKT_MBOX_PF_VF(i)_INT[INTR] is set. To clear the bit, | |
512 | * write NPS_PKT_MBOX_PF_VF(i)_INT[INTR] with 1. | |
513 | * @timer: Timer, incremented every 2048 coprocessor clock cycles | |
514 | * when [CNT] is not zero. The hardware clears both [TIMER] and | |
515 | * [INT] when [CNT] goes to 0. | |
516 | * @cnt: Packet counter. Hardware adds to [CNT] as it sends packets out. | |
517 | * On a write to this CSR, hardware subtracts the amount written to the | |
518 | * [CNT] field from [CNT]. | |
519 | */ | |
520 | union nps_pkt_slc_cnts { | |
521 | u64 value; | |
522 | struct { | |
523 | #if defined(__BIG_ENDIAN_BITFIELD) | |
524 | u64 slc_int : 1; | |
525 | u64 uns_int : 1; | |
526 | u64 in_int : 1; | |
527 | u64 mbox_int : 1; | |
528 | u64 resend : 1; | |
529 | u64 raz : 5; | |
530 | u64 timer : 22; | |
531 | u64 cnt : 32; | |
532 | #else | |
533 | u64 cnt : 32; | |
534 | u64 timer : 22; | |
535 | u64 raz : 5; | |
536 | u64 resend : 1; | |
537 | u64 mbox_int : 1; | |
538 | u64 in_int : 1; | |
539 | u64 uns_int : 1; | |
540 | u64 slc_int : 1; | |
541 | #endif | |
542 | } s; | |
543 | }; | |
544 | ||
545 | /** | |
546 | * struct nps_pkt_slc_int_levels - Solicited Packet Out Interrupt Levels | |
547 | * Registers. | |
548 | * @bmode: Determines whether NPS_PKT_SLC_CNTS[CNT] is a byte or | |
549 | * packet counter. | |
550 | * @timet: Output port counter time interrupt threshold. | |
551 | * @cnt: Output port counter interrupt threshold. | |
552 | */ | |
553 | union nps_pkt_slc_int_levels { | |
554 | u64 value; | |
555 | struct { | |
556 | #if defined(__BIG_ENDIAN_BITFIELD) | |
557 | u64 bmode : 1; | |
558 | u64 raz : 9; | |
559 | u64 timet : 22; | |
560 | u64 cnt : 32; | |
561 | #else | |
562 | u64 cnt : 32; | |
563 | u64 timet : 22; | |
564 | u64 raz : 9; | |
565 | u64 bmode : 1; | |
566 | #endif | |
567 | } s; | |
568 | }; | |
569 | ||
570 | /** | |
571 | * struct nps_pkt_inst - NPS Packet Interrupt Register | |
572 | * @in_err: Set when any NPS_PKT_IN_RERR_HI/LO bit and | |
573 | * corresponding NPS_PKT_IN_RERR_*_ENA_* bit are bot set. | |
574 | * @uns_err: Set when any NSP_PKT_UNS_RERR_HI/LO bit and | |
575 | * corresponding NPS_PKT_UNS_RERR_*_ENA_* bit are both set. | |
576 | * @slc_er: Set when any NSP_PKT_SLC_RERR_HI/LO bit and | |
577 | * corresponding NPS_PKT_SLC_RERR_*_ENA_* bit are both set. | |
578 | */ | |
579 | union nps_pkt_int { | |
580 | u64 value; | |
581 | struct { | |
582 | #if defined(__BIG_ENDIAN_BITFIELD) | |
583 | u64 raz : 54; | |
584 | u64 uns_wto : 1; | |
585 | u64 in_err : 1; | |
586 | u64 uns_err : 1; | |
587 | u64 slc_err : 1; | |
588 | u64 in_dbe : 1; | |
589 | u64 in_sbe : 1; | |
590 | u64 uns_dbe : 1; | |
591 | u64 uns_sbe : 1; | |
592 | u64 slc_dbe : 1; | |
593 | u64 slc_sbe : 1; | |
594 | #else | |
595 | u64 slc_sbe : 1; | |
596 | u64 slc_dbe : 1; | |
597 | u64 uns_sbe : 1; | |
598 | u64 uns_dbe : 1; | |
599 | u64 in_sbe : 1; | |
600 | u64 in_dbe : 1; | |
601 | u64 slc_err : 1; | |
602 | u64 uns_err : 1; | |
603 | u64 in_err : 1; | |
604 | u64 uns_wto : 1; | |
605 | u64 raz : 54; | |
606 | #endif | |
607 | } s; | |
608 | }; | |
609 | ||
610 | /** | |
611 | * struct nps_pkt_in_done_cnts - Input instruction ring counts registers | |
612 | * @slc_cnt: Returns a 1 when: | |
613 | * NPS_PKT_SLC(i)_CNTS[CNT] > NPS_PKT_SLC(i)_INT_LEVELS[CNT], or | |
614 | * NPS_PKT_SLC(i)_CNTS[TIMER] > NPS_PKT_SCL(i)_INT_LEVELS[TIMET] | |
615 | * To clear the bit, the CNTS register must be | |
616 | * written to clear the underlying condition | |
617 | * @uns_int: Return a 1 when: | |
618 | * NPS_PKT_UNS(i)_CNTS[CNT] > NPS_PKT_UNS(i)_INT_LEVELS[CNT], or | |
619 | * NPS_PKT_UNS(i)_CNTS[TIMER] > NPS_PKT_UNS(i)_INT_LEVELS[TIMET] | |
620 | * To clear the bit, the CNTS register must be | |
621 | * written to clear the underlying condition | |
622 | * @in_int: Returns a 1 when: | |
623 | * NPS_PKT_IN(i)_DONE_CNTS[CNT] > NPS_PKT_IN(i)_INT_LEVELS[CNT] | |
624 | * To clear the bit, the DONE_CNTS register | |
625 | * must be written to clear the underlying condition | |
626 | * @mbox_int: Returns a 1 when: | |
627 | * NPS_PKT_MBOX_PF_VF(i)_INT[INTR] is set. | |
628 | * To clear the bit, write NPS_PKT_MBOX_PF_VF(i)_INT[INTR] | |
629 | * with 1. | |
630 | * @resend: A write of 1 will resend an MSI-X interrupt message if any | |
631 | * of the following conditions are true for this ring "i". | |
632 | * NPS_PKT_SLC(i)_CNTS[CNT] > NPS_PKT_SLC(i)_INT_LEVELS[CNT] | |
633 | * NPS_PKT_SLC(i)_CNTS[TIMER] > NPS_PKT_SLC(i)_INT_LEVELS[TIMET] | |
634 | * NPS_PKT_UNS(i)_CNTS[CNT] > NPS_PKT_UNS(i)_INT_LEVELS[CNT] | |
635 | * NPS_PKT_UNS(i)_CNTS[TIMER] > NPS_PKT_UNS(i)_INT_LEVELS[TIMET] | |
636 | * NPS_PKT_IN(i)_DONE_CNTS[CNT] > NPS_PKT_IN(i)_INT_LEVELS[CNT] | |
637 | * NPS_PKT_MBOX_PF_VF(i)_INT[INTR] is set | |
638 | * @cnt: Packet counter. Hardware adds to [CNT] as it reads | |
639 | * packets. On a write to this CSR, hardware substracts the | |
640 | * amount written to the [CNT] field from [CNT], which will | |
641 | * clear PKT_IN(i)_INT_STATUS[INTR] if [CNT] becomes <= | |
642 | * NPS_PKT_IN(i)_INT_LEVELS[CNT]. This register should be | |
643 | * cleared before enabling a ring by reading the current | |
644 | * value and writing it back. | |
645 | */ | |
646 | union nps_pkt_in_done_cnts { | |
647 | u64 value; | |
648 | struct { | |
649 | #if defined(__BIG_ENDIAN_BITFIELD) | |
650 | u64 slc_int : 1; | |
651 | u64 uns_int : 1; | |
652 | u64 in_int : 1; | |
653 | u64 mbox_int : 1; | |
654 | u64 resend : 1; | |
655 | u64 raz : 27; | |
656 | u64 cnt : 32; | |
657 | #else | |
658 | u64 cnt : 32; | |
659 | u64 raz : 27; | |
660 | u64 resend : 1; | |
661 | u64 mbox_int : 1; | |
662 | u64 in_int : 1; | |
663 | u64 uns_int : 1; | |
664 | u64 slc_int : 1; | |
665 | #endif | |
666 | } s; | |
667 | }; | |
668 | ||
669 | /** | |
670 | * struct nps_pkt_in_instr_ctl - Input Instruction Ring Control Registers. | |
671 | * @is64b: If 1, the ring uses 64-byte instructions. If 0, the | |
672 | * ring uses 32-byte instructions. | |
673 | * @enb: Enable for the input ring. | |
674 | */ | |
675 | union nps_pkt_in_instr_ctl { | |
676 | u64 value; | |
677 | struct { | |
678 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
679 | u64 raz : 62; | |
680 | u64 is64b : 1; | |
681 | u64 enb : 1; | |
682 | #else | |
683 | u64 enb : 1; | |
684 | u64 is64b : 1; | |
685 | u64 raz : 62; | |
686 | #endif | |
687 | } s; | |
688 | }; | |
689 | ||
690 | /** | |
691 | * struct nps_pkt_in_instr_rsize - Input instruction ring size registers | |
692 | * @rsize: Ring size (number of instructions) | |
693 | */ | |
694 | union nps_pkt_in_instr_rsize { | |
695 | u64 value; | |
696 | struct { | |
697 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
698 | u64 raz : 32; | |
699 | u64 rsize : 32; | |
700 | #else | |
701 | u64 rsize : 32; | |
702 | u64 raz : 32; | |
703 | #endif | |
704 | } s; | |
705 | }; | |
706 | ||
707 | /** | |
708 | * struct nps_pkt_in_instr_baoff_dbell - Input instruction ring | |
709 | * base address offset and doorbell registers | |
710 | * @aoff: Address offset. The offset from the NPS_PKT_IN_INSTR_BADDR | |
711 | * where the next pointer is read. | |
712 | * @dbell: Pointer list doorbell count. Write operations to this field | |
713 | * increments the present value here. Read operations return the | |
714 | * present value. | |
715 | */ | |
716 | union nps_pkt_in_instr_baoff_dbell { | |
717 | u64 value; | |
718 | struct { | |
719 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
720 | u64 aoff : 32; | |
721 | u64 dbell : 32; | |
722 | #else | |
723 | u64 dbell : 32; | |
724 | u64 aoff : 32; | |
725 | #endif | |
726 | } s; | |
727 | }; | |
728 | ||
729 | /** | |
730 | * struct nps_core_int_ena_w1s - NPS core interrupt enable set register | |
731 | * @host_nps_wr_err: Reads or sets enable for | |
732 | * NPS_CORE_INT[HOST_NPS_WR_ERR]. | |
733 | * @npco_dma_malform: Reads or sets enable for | |
734 | * NPS_CORE_INT[NPCO_DMA_MALFORM]. | |
735 | * @exec_wr_timeout: Reads or sets enable for | |
736 | * NPS_CORE_INT[EXEC_WR_TIMEOUT]. | |
737 | * @host_wr_timeout: Reads or sets enable for | |
738 | * NPS_CORE_INT[HOST_WR_TIMEOUT]. | |
739 | * @host_wr_err: Reads or sets enable for | |
740 | * NPS_CORE_INT[HOST_WR_ERR] | |
741 | */ | |
742 | union nps_core_int_ena_w1s { | |
743 | u64 value; | |
744 | struct { | |
745 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
746 | u64 raz4 : 55; | |
747 | u64 host_nps_wr_err : 1; | |
748 | u64 npco_dma_malform : 1; | |
749 | u64 exec_wr_timeout : 1; | |
750 | u64 host_wr_timeout : 1; | |
751 | u64 host_wr_err : 1; | |
752 | u64 raz3 : 1; | |
753 | u64 raz2 : 1; | |
754 | u64 raz1 : 1; | |
755 | u64 raz0 : 1; | |
756 | #else | |
757 | u64 raz0 : 1; | |
758 | u64 raz1 : 1; | |
759 | u64 raz2 : 1; | |
760 | u64 raz3 : 1; | |
761 | u64 host_wr_err : 1; | |
762 | u64 host_wr_timeout : 1; | |
763 | u64 exec_wr_timeout : 1; | |
764 | u64 npco_dma_malform : 1; | |
765 | u64 host_nps_wr_err : 1; | |
766 | u64 raz4 : 55; | |
767 | #endif | |
768 | } s; | |
769 | }; | |
770 | ||
771 | /** | |
772 | * struct nps_core_gbl_vfcfg - Global VF Configuration Register. | |
773 | * @ilk_disable: When set, this bit indicates that the ILK interface has | |
774 | * been disabled. | |
775 | * @obaf: BMO allocation control | |
776 | * 0 = allocate per queue | |
777 | * 1 = allocate per VF | |
778 | * @ibaf: BMI allocation control | |
779 | * 0 = allocate per queue | |
780 | * 1 = allocate per VF | |
781 | * @zaf: ZIP allocation control | |
782 | * 0 = allocate per queue | |
783 | * 1 = allocate per VF | |
784 | * @aeaf: AE allocation control | |
785 | * 0 = allocate per queue | |
786 | * 1 = allocate per VF | |
787 | * @seaf: SE allocation control | |
788 | * 0 = allocation per queue | |
789 | * 1 = allocate per VF | |
790 | * @cfg: VF/PF mode. | |
791 | */ | |
792 | union nps_core_gbl_vfcfg { | |
793 | u64 value; | |
794 | struct { | |
795 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
796 | u64 raz :55; | |
797 | u64 ilk_disable :1; | |
798 | u64 obaf :1; | |
799 | u64 ibaf :1; | |
800 | u64 zaf :1; | |
801 | u64 aeaf :1; | |
802 | u64 seaf :1; | |
803 | u64 cfg :3; | |
804 | #else | |
805 | u64 cfg :3; | |
806 | u64 seaf :1; | |
807 | u64 aeaf :1; | |
808 | u64 zaf :1; | |
809 | u64 ibaf :1; | |
810 | u64 obaf :1; | |
811 | u64 ilk_disable :1; | |
812 | u64 raz :55; | |
813 | #endif | |
814 | } s; | |
815 | }; | |
816 | ||
817 | /** | |
818 | * struct nps_core_int_active - NPS Core Interrupt Active Register | |
819 | * @resend: Resend MSI-X interrupt if needs to handle interrupts | |
820 | * Sofware can set this bit and then exit the ISR. | |
821 | * @ocla: Set when any OCLA(0)_INT and corresponding OCLA(0_INT_ENA_W1C | |
822 | * bit are set | |
823 | * @mbox: Set when any NPS_PKT_MBOX_INT_LO/HI and corresponding | |
824 | * NPS_PKT_MBOX_INT_LO_ENA_W1C/HI_ENA_W1C bits are set | |
825 | * @emu: bit i is set in [EMU] when any EMU(i)_INT bit is set | |
826 | * @bmo: Set when any BMO_INT bit is set | |
827 | * @bmi: Set when any BMI_INT bit is set or when any non-RO | |
828 | * BMI_INT and corresponding BMI_INT_ENA_W1C bits are both set | |
829 | * @aqm: Set when any AQM_INT bit is set | |
830 | * @zqm: Set when any ZQM_INT bit is set | |
831 | * @efl: Set when any EFL_INT RO bit is set or when any non-RO EFL_INT | |
832 | * and corresponding EFL_INT_ENA_W1C bits are both set | |
833 | * @ilk: Set when any ILK_INT bit is set | |
834 | * @lbc: Set when any LBC_INT RO bit is set or when any non-RO LBC_INT | |
835 | * and corresponding LBC_INT_ENA_W1C bits are bot set | |
836 | * @pem: Set when any PEM(0)_INT RO bit is set or when any non-RO | |
837 | * PEM(0)_INT and corresponding PEM(0)_INT_ENA_W1C bit are both set | |
838 | * @ucd: Set when any UCD_INT bit is set | |
839 | * @zctl: Set when any ZIP_INT RO bit is set or when any non-RO ZIP_INT | |
840 | * and corresponding ZIP_INT_ENA_W1C bits are both set | |
841 | * @lbm: Set when any LBM_INT bit is set | |
842 | * @nps_pkt: Set when any NPS_PKT_INT bit is set | |
843 | * @nps_core: Set when any NPS_CORE_INT RO bit is set or when non-RO | |
844 | * NPS_CORE_INT and corresponding NSP_CORE_INT_ENA_W1C bits are both set | |
845 | */ | |
846 | union nps_core_int_active { | |
847 | u64 value; | |
848 | struct { | |
849 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
850 | u64 resend : 1; | |
851 | u64 raz : 43; | |
852 | u64 ocla : 1; | |
853 | u64 mbox : 1; | |
854 | u64 emu : 4; | |
855 | u64 bmo : 1; | |
856 | u64 bmi : 1; | |
857 | u64 aqm : 1; | |
858 | u64 zqm : 1; | |
859 | u64 efl : 1; | |
860 | u64 ilk : 1; | |
861 | u64 lbc : 1; | |
862 | u64 pem : 1; | |
863 | u64 pom : 1; | |
864 | u64 ucd : 1; | |
865 | u64 zctl : 1; | |
866 | u64 lbm : 1; | |
867 | u64 nps_pkt : 1; | |
868 | u64 nps_core : 1; | |
869 | #else | |
870 | u64 nps_core : 1; | |
871 | u64 nps_pkt : 1; | |
872 | u64 lbm : 1; | |
873 | u64 zctl: 1; | |
874 | u64 ucd : 1; | |
875 | u64 pom : 1; | |
876 | u64 pem : 1; | |
877 | u64 lbc : 1; | |
878 | u64 ilk : 1; | |
879 | u64 efl : 1; | |
880 | u64 zqm : 1; | |
881 | u64 aqm : 1; | |
882 | u64 bmi : 1; | |
883 | u64 bmo : 1; | |
884 | u64 emu : 4; | |
885 | u64 mbox : 1; | |
886 | u64 ocla : 1; | |
887 | u64 raz : 43; | |
888 | u64 resend : 1; | |
889 | #endif | |
890 | } s; | |
891 | }; | |
892 | ||
893 | /** | |
894 | * struct efl_core_int - EFL Interrupt Registers | |
895 | * @epci_decode_err: EPCI decoded a transacation that was unknown | |
896 | * This error should only occurred when there is a micrcode/SE error | |
897 | * and should be considered fatal | |
898 | * @ae_err: An AE uncorrectable error occurred. | |
899 | * See EFL_CORE(0..3)_AE_ERR_INT | |
900 | * @se_err: An SE uncorrectable error occurred. | |
901 | * See EFL_CORE(0..3)_SE_ERR_INT | |
902 | * @dbe: Double-bit error occurred in EFL | |
903 | * @sbe: Single-bit error occurred in EFL | |
904 | * @d_left: Asserted when new POM-Header-BMI-data is | |
905 | * being sent to an Exec, and that Exec has Not read all BMI | |
906 | * data associated with the previous POM header | |
907 | * @len_ovr: Asserted when an Exec-Read is issued that is more than | |
908 | * 14 greater in length that the BMI data left to be read | |
909 | */ | |
910 | union efl_core_int { | |
911 | u64 value; | |
912 | struct { | |
913 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
914 | u64 raz : 57; | |
915 | u64 epci_decode_err : 1; | |
916 | u64 ae_err : 1; | |
917 | u64 se_err : 1; | |
918 | u64 dbe : 1; | |
919 | u64 sbe : 1; | |
920 | u64 d_left : 1; | |
921 | u64 len_ovr : 1; | |
922 | #else | |
923 | u64 len_ovr : 1; | |
924 | u64 d_left : 1; | |
925 | u64 sbe : 1; | |
926 | u64 dbe : 1; | |
927 | u64 se_err : 1; | |
928 | u64 ae_err : 1; | |
929 | u64 epci_decode_err : 1; | |
930 | u64 raz : 57; | |
931 | #endif | |
932 | } s; | |
933 | }; | |
934 | ||
935 | /** | |
936 | * struct efl_core_int_ena_w1s - EFL core interrupt enable set register | |
937 | * @epci_decode_err: Reads or sets enable for | |
938 | * EFL_CORE(0..3)_INT[EPCI_DECODE_ERR]. | |
939 | * @d_left: Reads or sets enable for | |
940 | * EFL_CORE(0..3)_INT[D_LEFT]. | |
941 | * @len_ovr: Reads or sets enable for | |
942 | * EFL_CORE(0..3)_INT[LEN_OVR]. | |
943 | */ | |
944 | union efl_core_int_ena_w1s { | |
945 | u64 value; | |
946 | struct { | |
947 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
948 | u64 raz_7_63 : 57; | |
949 | u64 epci_decode_err : 1; | |
950 | u64 raz_2_5 : 4; | |
951 | u64 d_left : 1; | |
952 | u64 len_ovr : 1; | |
953 | #else | |
954 | u64 len_ovr : 1; | |
955 | u64 d_left : 1; | |
956 | u64 raz_2_5 : 4; | |
957 | u64 epci_decode_err : 1; | |
958 | u64 raz_7_63 : 57; | |
959 | #endif | |
960 | } s; | |
961 | }; | |
962 | ||
963 | /** | |
964 | * struct efl_rnm_ctl_status - RNM Control and Status Register | |
965 | * @ent_sel: Select input to RNM FIFO | |
966 | * @exp_ent: Exported entropy enable for random number generator | |
967 | * @rng_rst: Reset to RNG. Setting this bit to 1 cancels the generation | |
968 | * of the current random number. | |
969 | * @rnm_rst: Reset the RNM. Setting this bit to 1 clears all sorted numbers | |
970 | * in the random number memory. | |
971 | * @rng_en: Enabled the output of the RNG. | |
972 | * @ent_en: Entropy enable for random number generator. | |
973 | */ | |
974 | union efl_rnm_ctl_status { | |
975 | u64 value; | |
976 | struct { | |
977 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
978 | u64 raz_9_63 : 55; | |
979 | u64 ent_sel : 4; | |
980 | u64 exp_ent : 1; | |
981 | u64 rng_rst : 1; | |
982 | u64 rnm_rst : 1; | |
983 | u64 rng_en : 1; | |
984 | u64 ent_en : 1; | |
985 | #else | |
986 | u64 ent_en : 1; | |
987 | u64 rng_en : 1; | |
988 | u64 rnm_rst : 1; | |
989 | u64 rng_rst : 1; | |
990 | u64 exp_ent : 1; | |
991 | u64 ent_sel : 4; | |
992 | u64 raz_9_63 : 55; | |
993 | #endif | |
994 | } s; | |
995 | }; | |
996 | ||
997 | /** | |
998 | * struct bmi_ctl - BMI control register | |
999 | * @ilk_hdrq_thrsh: Maximum number of header queue locations | |
1000 | * that ILK packets may consume. When the threshold is | |
1001 | * exceeded ILK_XOFF is sent to the BMI_X2P_ARB. | |
1002 | * @nps_hdrq_thrsh: Maximum number of header queue locations | |
1003 | * that NPS packets may consume. When the threshold is | |
1004 | * exceeded NPS_XOFF is sent to the BMI_X2P_ARB. | |
1005 | * @totl_hdrq_thrsh: Maximum number of header queue locations | |
1006 | * that the sum of ILK and NPS packets may consume. | |
1007 | * @ilk_free_thrsh: Maximum number of buffers that ILK packet | |
1008 | * flows may consume before ILK_XOFF is sent to the BMI_X2P_ARB. | |
1009 | * @nps_free_thrsh: Maximum number of buffers that NPS packet | |
1010 | * flows may consume before NPS XOFF is sent to the BMI_X2p_ARB. | |
1011 | * @totl_free_thrsh: Maximum number of buffers that bot ILK and NPS | |
1012 | * packet flows may consume before both NPS_XOFF and ILK_XOFF | |
1013 | * are asserted to the BMI_X2P_ARB. | |
1014 | * @max_pkt_len: Maximum packet length, integral number of 256B | |
1015 | * buffers. | |
1016 | */ | |
1017 | union bmi_ctl { | |
1018 | u64 value; | |
1019 | struct { | |
1020 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
1021 | u64 raz_56_63 : 8; | |
1022 | u64 ilk_hdrq_thrsh : 8; | |
1023 | u64 nps_hdrq_thrsh : 8; | |
1024 | u64 totl_hdrq_thrsh : 8; | |
1025 | u64 ilk_free_thrsh : 8; | |
1026 | u64 nps_free_thrsh : 8; | |
1027 | u64 totl_free_thrsh : 8; | |
1028 | u64 max_pkt_len : 8; | |
1029 | #else | |
1030 | u64 max_pkt_len : 8; | |
1031 | u64 totl_free_thrsh : 8; | |
1032 | u64 nps_free_thrsh : 8; | |
1033 | u64 ilk_free_thrsh : 8; | |
1034 | u64 totl_hdrq_thrsh : 8; | |
1035 | u64 nps_hdrq_thrsh : 8; | |
1036 | u64 ilk_hdrq_thrsh : 8; | |
1037 | u64 raz_56_63 : 8; | |
1038 | #endif | |
1039 | } s; | |
1040 | }; | |
1041 | ||
1042 | /** | |
1043 | * struct bmi_int_ena_w1s - BMI interrupt enable set register | |
1044 | * @ilk_req_oflw: Reads or sets enable for | |
1045 | * BMI_INT[ILK_REQ_OFLW]. | |
1046 | * @nps_req_oflw: Reads or sets enable for | |
1047 | * BMI_INT[NPS_REQ_OFLW]. | |
1048 | * @fpf_undrrn: Reads or sets enable for | |
1049 | * BMI_INT[FPF_UNDRRN]. | |
1050 | * @eop_err_ilk: Reads or sets enable for | |
1051 | * BMI_INT[EOP_ERR_ILK]. | |
1052 | * @eop_err_nps: Reads or sets enable for | |
1053 | * BMI_INT[EOP_ERR_NPS]. | |
1054 | * @sop_err_ilk: Reads or sets enable for | |
1055 | * BMI_INT[SOP_ERR_ILK]. | |
1056 | * @sop_err_nps: Reads or sets enable for | |
1057 | * BMI_INT[SOP_ERR_NPS]. | |
1058 | * @pkt_rcv_err_ilk: Reads or sets enable for | |
1059 | * BMI_INT[PKT_RCV_ERR_ILK]. | |
1060 | * @pkt_rcv_err_nps: Reads or sets enable for | |
1061 | * BMI_INT[PKT_RCV_ERR_NPS]. | |
1062 | * @max_len_err_ilk: Reads or sets enable for | |
1063 | * BMI_INT[MAX_LEN_ERR_ILK]. | |
1064 | * @max_len_err_nps: Reads or sets enable for | |
1065 | * BMI_INT[MAX_LEN_ERR_NPS]. | |
1066 | */ | |
1067 | union bmi_int_ena_w1s { | |
1068 | u64 value; | |
1069 | struct { | |
1070 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
1071 | u64 raz_13_63 : 51; | |
1072 | u64 ilk_req_oflw : 1; | |
1073 | u64 nps_req_oflw : 1; | |
1074 | u64 raz_10 : 1; | |
1075 | u64 raz_9 : 1; | |
1076 | u64 fpf_undrrn : 1; | |
1077 | u64 eop_err_ilk : 1; | |
1078 | u64 eop_err_nps : 1; | |
1079 | u64 sop_err_ilk : 1; | |
1080 | u64 sop_err_nps : 1; | |
1081 | u64 pkt_rcv_err_ilk : 1; | |
1082 | u64 pkt_rcv_err_nps : 1; | |
1083 | u64 max_len_err_ilk : 1; | |
1084 | u64 max_len_err_nps : 1; | |
1085 | #else | |
1086 | u64 max_len_err_nps : 1; | |
1087 | u64 max_len_err_ilk : 1; | |
1088 | u64 pkt_rcv_err_nps : 1; | |
1089 | u64 pkt_rcv_err_ilk : 1; | |
1090 | u64 sop_err_nps : 1; | |
1091 | u64 sop_err_ilk : 1; | |
1092 | u64 eop_err_nps : 1; | |
1093 | u64 eop_err_ilk : 1; | |
1094 | u64 fpf_undrrn : 1; | |
1095 | u64 raz_9 : 1; | |
1096 | u64 raz_10 : 1; | |
1097 | u64 nps_req_oflw : 1; | |
1098 | u64 ilk_req_oflw : 1; | |
1099 | u64 raz_13_63 : 51; | |
1100 | #endif | |
1101 | } s; | |
1102 | }; | |
1103 | ||
1104 | /** | |
1105 | * struct bmo_ctl2 - BMO Control2 Register | |
1106 | * @arb_sel: Determines P2X Arbitration | |
1107 | * @ilk_buf_thrsh: Maximum number of buffers that the | |
1108 | * ILK packet flows may consume before ILK XOFF is | |
1109 | * asserted to the POM. | |
1110 | * @nps_slc_buf_thrsh: Maximum number of buffers that the | |
1111 | * NPS_SLC packet flow may consume before NPS_SLC XOFF is | |
1112 | * asserted to the POM. | |
1113 | * @nps_uns_buf_thrsh: Maximum number of buffers that the | |
1114 | * NPS_UNS packet flow may consume before NPS_UNS XOFF is | |
1115 | * asserted to the POM. | |
1116 | * @totl_buf_thrsh: Maximum number of buffers that ILK, NPS_UNS and | |
1117 | * NPS_SLC packet flows may consume before NPS_UNS XOFF, NSP_SLC and | |
1118 | * ILK_XOFF are all asserted POM. | |
1119 | */ | |
1120 | union bmo_ctl2 { | |
1121 | u64 value; | |
1122 | struct { | |
1123 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
1124 | u64 arb_sel : 1; | |
1125 | u64 raz_32_62 : 31; | |
1126 | u64 ilk_buf_thrsh : 8; | |
1127 | u64 nps_slc_buf_thrsh : 8; | |
1128 | u64 nps_uns_buf_thrsh : 8; | |
1129 | u64 totl_buf_thrsh : 8; | |
1130 | #else | |
1131 | u64 totl_buf_thrsh : 8; | |
1132 | u64 nps_uns_buf_thrsh : 8; | |
1133 | u64 nps_slc_buf_thrsh : 8; | |
1134 | u64 ilk_buf_thrsh : 8; | |
1135 | u64 raz_32_62 : 31; | |
1136 | u64 arb_sel : 1; | |
1137 | #endif | |
1138 | } s; | |
1139 | }; | |
1140 | ||
1141 | /** | |
1142 | * struct pom_int_ena_w1s - POM interrupt enable set register | |
1143 | * @illegal_intf: Reads or sets enable for POM_INT[ILLEGAL_INTF]. | |
1144 | * @illegal_dport: Reads or sets enable for POM_INT[ILLEGAL_DPORT]. | |
1145 | */ | |
1146 | union pom_int_ena_w1s { | |
1147 | u64 value; | |
1148 | struct { | |
1149 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
1150 | u64 raz2 : 60; | |
1151 | u64 illegal_intf : 1; | |
1152 | u64 illegal_dport : 1; | |
1153 | u64 raz1 : 1; | |
1154 | u64 raz0 : 1; | |
1155 | #else | |
1156 | u64 raz0 : 1; | |
1157 | u64 raz1 : 1; | |
1158 | u64 illegal_dport : 1; | |
1159 | u64 illegal_intf : 1; | |
1160 | u64 raz2 : 60; | |
1161 | #endif | |
1162 | } s; | |
1163 | }; | |
1164 | ||
1165 | /** | |
1166 | * struct lbc_inval_ctl - LBC invalidation control register | |
1167 | * @wait_timer: Wait timer for wait state. [WAIT_TIMER] must | |
1168 | * always be written with its reset value. | |
1169 | * @cam_inval_start: Software should write [CAM_INVAL_START]=1 | |
1170 | * to initiate an LBC cache invalidation. After this, software | |
1171 | * should read LBC_INVAL_STATUS until LBC_INVAL_STATUS[DONE] is set. | |
1172 | * LBC hardware clears [CAVM_INVAL_START] before software can | |
1173 | * observed LBC_INVAL_STATUS[DONE] to be set | |
1174 | */ | |
1175 | union lbc_inval_ctl { | |
1176 | u64 value; | |
1177 | struct { | |
1178 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
1179 | u64 raz2 : 48; | |
1180 | u64 wait_timer : 8; | |
1181 | u64 raz1 : 6; | |
1182 | u64 cam_inval_start : 1; | |
1183 | u64 raz0 : 1; | |
1184 | #else | |
1185 | u64 raz0 : 1; | |
1186 | u64 cam_inval_start : 1; | |
1187 | u64 raz1 : 6; | |
1188 | u64 wait_timer : 8; | |
1189 | u64 raz2 : 48; | |
1190 | #endif | |
1191 | } s; | |
1192 | }; | |
1193 | ||
1194 | /** | |
1195 | * struct lbc_int_ena_w1s - LBC interrupt enable set register | |
1196 | * @cam_hard_err: Reads or sets enable for LBC_INT[CAM_HARD_ERR]. | |
1197 | * @cam_inval_abort: Reads or sets enable for LBC_INT[CAM_INVAL_ABORT]. | |
1198 | * @over_fetch_err: Reads or sets enable for LBC_INT[OVER_FETCH_ERR]. | |
1199 | * @cache_line_to_err: Reads or sets enable for | |
1200 | * LBC_INT[CACHE_LINE_TO_ERR]. | |
1201 | * @cam_soft_err: Reads or sets enable for | |
1202 | * LBC_INT[CAM_SOFT_ERR]. | |
1203 | * @dma_rd_err: Reads or sets enable for | |
1204 | * LBC_INT[DMA_RD_ERR]. | |
1205 | */ | |
1206 | union lbc_int_ena_w1s { | |
1207 | u64 value; | |
1208 | struct { | |
1209 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
1210 | u64 raz_10_63 : 54; | |
1211 | u64 cam_hard_err : 1; | |
1212 | u64 cam_inval_abort : 1; | |
1213 | u64 over_fetch_err : 1; | |
1214 | u64 cache_line_to_err : 1; | |
1215 | u64 raz_2_5 : 4; | |
1216 | u64 cam_soft_err : 1; | |
1217 | u64 dma_rd_err : 1; | |
1218 | #else | |
1219 | u64 dma_rd_err : 1; | |
1220 | u64 cam_soft_err : 1; | |
1221 | u64 raz_2_5 : 4; | |
1222 | u64 cache_line_to_err : 1; | |
1223 | u64 over_fetch_err : 1; | |
1224 | u64 cam_inval_abort : 1; | |
1225 | u64 cam_hard_err : 1; | |
1226 | u64 raz_10_63 : 54; | |
1227 | #endif | |
1228 | } s; | |
1229 | }; | |
1230 | ||
1231 | /** | |
1232 | * struct lbc_int - LBC interrupt summary register | |
1233 | * @cam_hard_err: indicates a fatal hardware error. | |
1234 | * It requires system reset. | |
1235 | * When [CAM_HARD_ERR] is set, LBC stops logging any new information in | |
1236 | * LBC_POM_MISS_INFO_LOG, | |
1237 | * LBC_POM_MISS_ADDR_LOG, | |
1238 | * LBC_EFL_MISS_INFO_LOG, and | |
1239 | * LBC_EFL_MISS_ADDR_LOG. | |
1240 | * Software should sample them. | |
1241 | * @cam_inval_abort: indicates a fatal hardware error. | |
1242 | * System reset is required. | |
1243 | * @over_fetch_err: indicates a fatal hardware error | |
1244 | * System reset is required | |
1245 | * @cache_line_to_err: is a debug feature. | |
1246 | * This timeout interrupt bit tells the software that | |
1247 | * a cacheline in LBC has non-zero usage and the context | |
1248 | * has not been used for greater than the | |
1249 | * LBC_TO_CNT[TO_CNT] time interval. | |
1250 | * @sbe: Memory SBE error. This is recoverable via ECC. | |
1251 | * See LBC_ECC_INT for more details. | |
1252 | * @dbe: Memory DBE error. This is a fatal and requires a | |
1253 | * system reset. | |
1254 | * @pref_dat_len_mismatch_err: Summary bit for context length | |
1255 | * mismatch errors. | |
1256 | * @rd_dat_len_mismatch_err: Summary bit for SE read data length | |
1257 | * greater than data prefect length errors. | |
1258 | * @cam_soft_err: is recoverable. Software must complete a | |
1259 | * LBC_INVAL_CTL[CAM_INVAL_START] invalidation sequence and | |
1260 | * then clear [CAM_SOFT_ERR]. | |
1261 | * @dma_rd_err: A context prefect read of host memory returned with | |
1262 | * a read error. | |
1263 | */ | |
1264 | union lbc_int { | |
1265 | u64 value; | |
1266 | struct { | |
1267 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
1268 | u64 raz_10_63 : 54; | |
1269 | u64 cam_hard_err : 1; | |
1270 | u64 cam_inval_abort : 1; | |
1271 | u64 over_fetch_err : 1; | |
1272 | u64 cache_line_to_err : 1; | |
1273 | u64 sbe : 1; | |
1274 | u64 dbe : 1; | |
1275 | u64 pref_dat_len_mismatch_err : 1; | |
1276 | u64 rd_dat_len_mismatch_err : 1; | |
1277 | u64 cam_soft_err : 1; | |
1278 | u64 dma_rd_err : 1; | |
1279 | #else | |
1280 | u64 dma_rd_err : 1; | |
1281 | u64 cam_soft_err : 1; | |
1282 | u64 rd_dat_len_mismatch_err : 1; | |
1283 | u64 pref_dat_len_mismatch_err : 1; | |
1284 | u64 dbe : 1; | |
1285 | u64 sbe : 1; | |
1286 | u64 cache_line_to_err : 1; | |
1287 | u64 over_fetch_err : 1; | |
1288 | u64 cam_inval_abort : 1; | |
1289 | u64 cam_hard_err : 1; | |
1290 | u64 raz_10_63 : 54; | |
1291 | #endif | |
1292 | } s; | |
1293 | }; | |
1294 | ||
1295 | /** | |
1296 | * struct lbc_inval_status: LBC Invalidation status register | |
1297 | * @cam_clean_entry_complete_cnt: The number of entries that are | |
1298 | * cleaned up successfully. | |
1299 | * @cam_clean_entry_cnt: The number of entries that have the CAM | |
1300 | * inval command issued. | |
1301 | * @cam_inval_state: cam invalidation FSM state | |
1302 | * @cam_inval_abort: cam invalidation abort | |
1303 | * @cam_rst_rdy: lbc_cam reset ready | |
1304 | * @done: LBC clears [DONE] when | |
1305 | * LBC_INVAL_CTL[CAM_INVAL_START] is written with a one, | |
1306 | * and sets [DONE] when it completes the invalidation | |
1307 | * sequence. | |
1308 | */ | |
1309 | union lbc_inval_status { | |
1310 | u64 value; | |
1311 | struct { | |
1312 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
1313 | u64 raz3 : 23; | |
1314 | u64 cam_clean_entry_complete_cnt : 9; | |
1315 | u64 raz2 : 7; | |
1316 | u64 cam_clean_entry_cnt : 9; | |
1317 | u64 raz1 : 5; | |
1318 | u64 cam_inval_state : 3; | |
1319 | u64 raz0 : 5; | |
1320 | u64 cam_inval_abort : 1; | |
1321 | u64 cam_rst_rdy : 1; | |
1322 | u64 done : 1; | |
1323 | #else | |
1324 | u64 done : 1; | |
1325 | u64 cam_rst_rdy : 1; | |
1326 | u64 cam_inval_abort : 1; | |
1327 | u64 raz0 : 5; | |
1328 | u64 cam_inval_state : 3; | |
1329 | u64 raz1 : 5; | |
1330 | u64 cam_clean_entry_cnt : 9; | |
1331 | u64 raz2 : 7; | |
1332 | u64 cam_clean_entry_complete_cnt : 9; | |
1333 | u64 raz3 : 23; | |
1334 | #endif | |
1335 | } s; | |
1336 | }; | |
1337 | ||
48e10548 SJ |
1338 | /** |
1339 | * struct rst_boot: RST Boot Register | |
1340 | * @jtcsrdis: when set, internal CSR access via JTAG TAP controller | |
1341 | * is disabled | |
1342 | * @jt_tst_mode: JTAG test mode | |
1343 | * @io_supply: I/O power supply setting based on IO_VDD_SELECT pin: | |
1344 | * 0x1 = 1.8V | |
1345 | * 0x2 = 2.5V | |
1346 | * 0x4 = 3.3V | |
1347 | * All other values are reserved | |
1348 | * @pnr_mul: clock multiplier | |
1349 | * @lboot: last boot cause mask, resets only with PLL_DC_OK | |
1350 | * @rboot: determines whether core 0 remains in reset after | |
1351 | * chip cold or warm or soft reset | |
1352 | * @rboot_pin: read only access to REMOTE_BOOT pin | |
1353 | */ | |
1354 | union rst_boot { | |
1355 | u64 value; | |
1356 | struct { | |
1357 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
1358 | u64 raz_63 : 1; | |
1359 | u64 jtcsrdis : 1; | |
1360 | u64 raz_59_61 : 3; | |
1361 | u64 jt_tst_mode : 1; | |
1362 | u64 raz_40_57 : 18; | |
1363 | u64 io_supply : 3; | |
1364 | u64 raz_30_36 : 7; | |
1365 | u64 pnr_mul : 6; | |
1366 | u64 raz_12_23 : 12; | |
1367 | u64 lboot : 10; | |
1368 | u64 rboot : 1; | |
1369 | u64 rboot_pin : 1; | |
1370 | #else | |
1371 | u64 rboot_pin : 1; | |
1372 | u64 rboot : 1; | |
1373 | u64 lboot : 10; | |
1374 | u64 raz_12_23 : 12; | |
1375 | u64 pnr_mul : 6; | |
1376 | u64 raz_30_36 : 7; | |
1377 | u64 io_supply : 3; | |
1378 | u64 raz_40_57 : 18; | |
1379 | u64 jt_tst_mode : 1; | |
1380 | u64 raz_59_61 : 3; | |
1381 | u64 jtcsrdis : 1; | |
1382 | u64 raz_63 : 1; | |
1383 | #endif | |
1384 | }; | |
1385 | }; | |
1386 | ||
1387 | /** | |
1388 | * struct fus_dat1: Fuse Data 1 Register | |
1389 | * @pll_mul: main clock PLL multiplier hardware limit | |
1390 | * @pll_half_dis: main clock PLL control | |
1391 | * @efus_lck: efuse lockdown | |
1392 | * @zip_info: ZIP information | |
1393 | * @bar2_sz_conf: when zero, BAR2 size conforms to | |
1394 | * PCIe specification | |
1395 | * @efus_ign: efuse ignore | |
1396 | * @nozip: ZIP disable | |
1397 | * @pll_alt_matrix: select alternate PLL matrix | |
1398 | * @pll_bwadj_denom: select CLKF denominator for | |
1399 | * BWADJ value | |
1400 | * @chip_id: chip ID | |
1401 | */ | |
1402 | union fus_dat1 { | |
1403 | u64 value; | |
1404 | struct { | |
1405 | #if (defined(__BIG_ENDIAN_BITFIELD)) | |
1406 | u64 raz_57_63 : 7; | |
1407 | u64 pll_mul : 3; | |
1408 | u64 pll_half_dis : 1; | |
1409 | u64 raz_43_52 : 10; | |
1410 | u64 efus_lck : 3; | |
1411 | u64 raz_26_39 : 14; | |
1412 | u64 zip_info : 5; | |
1413 | u64 bar2_sz_conf : 1; | |
1414 | u64 efus_ign : 1; | |
1415 | u64 nozip : 1; | |
1416 | u64 raz_11_17 : 7; | |
1417 | u64 pll_alt_matrix : 1; | |
1418 | u64 pll_bwadj_denom : 2; | |
1419 | u64 chip_id : 8; | |
1420 | #else | |
1421 | u64 chip_id : 8; | |
1422 | u64 pll_bwadj_denom : 2; | |
1423 | u64 pll_alt_matrix : 1; | |
1424 | u64 raz_11_17 : 7; | |
1425 | u64 nozip : 1; | |
1426 | u64 efus_ign : 1; | |
1427 | u64 bar2_sz_conf : 1; | |
1428 | u64 zip_info : 5; | |
1429 | u64 raz_26_39 : 14; | |
1430 | u64 efus_lck : 3; | |
1431 | u64 raz_43_52 : 10; | |
1432 | u64 pll_half_dis : 1; | |
1433 | u64 pll_mul : 3; | |
1434 | u64 raz_57_63 : 7; | |
1435 | #endif | |
1436 | }; | |
1437 | }; | |
1438 | ||
14fa93cd | 1439 | #endif /* __NITROX_CSR_H */ |