xref: /qemu/hw/net/can/ctu_can_fd_regs.h (revision b2a3cbb8)
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*******************************************************************************
3  *
4  * CTU CAN FD IP Core
5  *
6  * Copyright (C) 2015-2018 Ondrej Ille <ondrej.ille@gmail.com> FEE CTU
7  * Copyright (C) 2018-2020 Ondrej Ille <ondrej.ille@gmail.com> self-funded
8  * Copyright (C) 2018-2019 Martin Jerabek <martin.jerabek01@gmail.com> FEE CTU
9  * Copyright (C) 2018-2020 Pavel Pisa <pisa@cmp.felk.cvut.cz> FEE CTU/self-funded
10  *
11  * Project advisors:
12  *     Jiri Novak <jnovak@fel.cvut.cz>
13  *     Pavel Pisa <pisa@cmp.felk.cvut.cz>
14  *
15  * Department of Measurement         (http://meas.fel.cvut.cz/)
16  * Faculty of Electrical Engineering (http://www.fel.cvut.cz)
17  * Czech Technical University        (http://www.cvut.cz/)
18  *
19  * This program is free software; you can redistribute it and/or
20  * modify it under the terms of the GNU General Public License
21  * as published by the Free Software Foundation; either version 2
22  * of the License, or (at your option) any later version.
23  *
24  * This program is distributed in the hope that it will be useful,
25  * but WITHOUT ANY WARRANTY; without even the implied warranty of
26  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
27  * GNU General Public License for more details.
28  ******************************************************************************/
29 
30 /* This file is autogenerated, DO NOT EDIT! */
31 
32 #ifndef HW_CAN_CTU_CAN_FD_REGS_H
33 #define HW_CAN_CTU_CAN_FD_REGS_H
34 
35 /* CAN_Registers memory map */
36 enum ctu_can_fd_can_registers {
37 	CTU_CAN_FD_DEVICE_ID             = 0x0,
38 	CTU_CAN_FD_VERSION               = 0x2,
39 	CTU_CAN_FD_MODE                  = 0x4,
40 	CTU_CAN_FD_SETTINGS              = 0x6,
41 	CTU_CAN_FD_STATUS                = 0x8,
42 	CTU_CAN_FD_COMMAND               = 0xc,
43 	CTU_CAN_FD_INT_STAT             = 0x10,
44 	CTU_CAN_FD_INT_ENA_SET          = 0x14,
45 	CTU_CAN_FD_INT_ENA_CLR          = 0x18,
46 	CTU_CAN_FD_INT_MASK_SET         = 0x1c,
47 	CTU_CAN_FD_INT_MASK_CLR         = 0x20,
48 	CTU_CAN_FD_BTR                  = 0x24,
49 	CTU_CAN_FD_BTR_FD               = 0x28,
50 	CTU_CAN_FD_EWL                  = 0x2c,
51 	CTU_CAN_FD_ERP                  = 0x2d,
52 	CTU_CAN_FD_FAULT_STATE          = 0x2e,
53 	CTU_CAN_FD_REC                  = 0x30,
54 	CTU_CAN_FD_TEC                  = 0x32,
55 	CTU_CAN_FD_ERR_NORM             = 0x34,
56 	CTU_CAN_FD_ERR_FD               = 0x36,
57 	CTU_CAN_FD_CTR_PRES             = 0x38,
58 	CTU_CAN_FD_FILTER_A_MASK        = 0x3c,
59 	CTU_CAN_FD_FILTER_A_VAL         = 0x40,
60 	CTU_CAN_FD_FILTER_B_MASK        = 0x44,
61 	CTU_CAN_FD_FILTER_B_VAL         = 0x48,
62 	CTU_CAN_FD_FILTER_C_MASK        = 0x4c,
63 	CTU_CAN_FD_FILTER_C_VAL         = 0x50,
64 	CTU_CAN_FD_FILTER_RAN_LOW       = 0x54,
65 	CTU_CAN_FD_FILTER_RAN_HIGH      = 0x58,
66 	CTU_CAN_FD_FILTER_CONTROL       = 0x5c,
67 	CTU_CAN_FD_FILTER_STATUS        = 0x5e,
68 	CTU_CAN_FD_RX_MEM_INFO          = 0x60,
69 	CTU_CAN_FD_RX_POINTERS          = 0x64,
70 	CTU_CAN_FD_RX_STATUS            = 0x68,
71 	CTU_CAN_FD_RX_SETTINGS          = 0x6a,
72 	CTU_CAN_FD_RX_DATA              = 0x6c,
73 	CTU_CAN_FD_TX_STATUS            = 0x70,
74 	CTU_CAN_FD_TX_COMMAND           = 0x74,
75 	CTU_CAN_FD_TX_PRIORITY          = 0x78,
76 	CTU_CAN_FD_ERR_CAPT             = 0x7c,
77 	CTU_CAN_FD_ALC                  = 0x7e,
78 	CTU_CAN_FD_TRV_DELAY            = 0x80,
79 	CTU_CAN_FD_SSP_CFG              = 0x82,
80 	CTU_CAN_FD_RX_FR_CTR            = 0x84,
81 	CTU_CAN_FD_TX_FR_CTR            = 0x88,
82 	CTU_CAN_FD_DEBUG_REGISTER       = 0x8c,
83 	CTU_CAN_FD_YOLO_REG             = 0x90,
84 	CTU_CAN_FD_TIMESTAMP_LOW        = 0x94,
85 	CTU_CAN_FD_TIMESTAMP_HIGH       = 0x98,
86 	CTU_CAN_FD_TXTB1_DATA_1        = 0x100,
87 	CTU_CAN_FD_TXTB1_DATA_2        = 0x104,
88 	CTU_CAN_FD_TXTB1_DATA_20       = 0x14c,
89 	CTU_CAN_FD_TXTB2_DATA_1        = 0x200,
90 	CTU_CAN_FD_TXTB2_DATA_2        = 0x204,
91 	CTU_CAN_FD_TXTB2_DATA_20       = 0x24c,
92 	CTU_CAN_FD_TXTB3_DATA_1        = 0x300,
93 	CTU_CAN_FD_TXTB3_DATA_2        = 0x304,
94 	CTU_CAN_FD_TXTB3_DATA_20       = 0x34c,
95 	CTU_CAN_FD_TXTB4_DATA_1        = 0x400,
96 	CTU_CAN_FD_TXTB4_DATA_2        = 0x404,
97 	CTU_CAN_FD_TXTB4_DATA_20       = 0x44c,
98 };
99 
100 
101 /* Register descriptions: */
102 union ctu_can_fd_device_id_version {
103 	uint32_t u32;
104 	struct ctu_can_fd_device_id_version_s {
105 #ifdef __LITTLE_ENDIAN_BITFIELD
106   /* DEVICE_ID */
107 		uint32_t device_id              : 16;
108   /* VERSION */
109 		uint32_t ver_minor               : 8;
110 		uint32_t ver_major               : 8;
111 #else
112 		uint32_t ver_major               : 8;
113 		uint32_t ver_minor               : 8;
114 		uint32_t device_id              : 16;
115 #endif
116 	} s;
117 };
118 
119 enum ctu_can_fd_device_id_device_id {
120 	CTU_CAN_FD_ID    = 0xcafd,
121 };
122 
123 union ctu_can_fd_mode_settings {
124 	uint32_t u32;
125 	struct ctu_can_fd_mode_settings_s {
126 #ifdef __LITTLE_ENDIAN_BITFIELD
127   /* MODE */
128 		uint32_t rst                     : 1;
129 		uint32_t lom                     : 1;
130 		uint32_t stm                     : 1;
131 		uint32_t afm                     : 1;
132 		uint32_t fde                     : 1;
133 		uint32_t reserved_6_5            : 2;
134 		uint32_t acf                     : 1;
135 		uint32_t tstm                    : 1;
136 		uint32_t reserved_15_9           : 7;
137   /* SETTINGS */
138 		uint32_t rtrle                   : 1;
139 		uint32_t rtrth                   : 4;
140 		uint32_t ilbp                    : 1;
141 		uint32_t ena                     : 1;
142 		uint32_t nisofd                  : 1;
143 		uint32_t pex                     : 1;
144 		uint32_t reserved_31_25          : 7;
145 #else
146 		uint32_t reserved_31_25          : 7;
147 		uint32_t pex                     : 1;
148 		uint32_t nisofd                  : 1;
149 		uint32_t ena                     : 1;
150 		uint32_t ilbp                    : 1;
151 		uint32_t rtrth                   : 4;
152 		uint32_t rtrle                   : 1;
153 		uint32_t reserved_15_9           : 7;
154 		uint32_t tstm                    : 1;
155 		uint32_t acf                     : 1;
156 		uint32_t reserved_6_5            : 2;
157 		uint32_t fde                     : 1;
158 		uint32_t afm                     : 1;
159 		uint32_t stm                     : 1;
160 		uint32_t lom                     : 1;
161 		uint32_t rst                     : 1;
162 #endif
163 	} s;
164 };
165 
166 enum ctu_can_fd_mode_lom {
167 	LOM_DISABLED       = 0x0,
168 	LOM_ENABLED        = 0x1,
169 };
170 
171 enum ctu_can_fd_mode_stm {
172 	STM_DISABLED       = 0x0,
173 	STM_ENABLED        = 0x1,
174 };
175 
176 enum ctu_can_fd_mode_afm {
177 	AFM_DISABLED       = 0x0,
178 	AFM_ENABLED        = 0x1,
179 };
180 
181 enum ctu_can_fd_mode_fde {
182 	FDE_DISABLE       = 0x0,
183 	FDE_ENABLE        = 0x1,
184 };
185 
186 enum ctu_can_fd_mode_acf {
187 	ACF_DISABLED       = 0x0,
188 	ACF_ENABLED        = 0x1,
189 };
190 
191 enum ctu_can_fd_settings_rtrle {
192 	RTRLE_DISABLED       = 0x0,
193 	RTRLE_ENABLED        = 0x1,
194 };
195 
196 enum ctu_can_fd_settings_ilbp {
197 	INT_LOOP_DISABLED       = 0x0,
198 	INT_LOOP_ENABLED        = 0x1,
199 };
200 
201 enum ctu_can_fd_settings_ena {
202 	CTU_CAN_DISABLED       = 0x0,
203 	CTU_CAN_ENABLED        = 0x1,
204 };
205 
206 enum ctu_can_fd_settings_nisofd {
207 	ISO_FD           = 0x0,
208 	NON_ISO_FD       = 0x1,
209 };
210 
211 enum ctu_can_fd_settings_pex {
212 	PROTOCOL_EXCEPTION_DISABLED       = 0x0,
213 	PROTOCOL_EXCEPTION_ENABLED        = 0x1,
214 };
215 
216 union ctu_can_fd_status {
217 	uint32_t u32;
218 	struct ctu_can_fd_status_s {
219 #ifdef __LITTLE_ENDIAN_BITFIELD
220   /* STATUS */
221 		uint32_t rxne                    : 1;
222 		uint32_t dor                     : 1;
223 		uint32_t txnf                    : 1;
224 		uint32_t eft                     : 1;
225 		uint32_t rxs                     : 1;
226 		uint32_t txs                     : 1;
227 		uint32_t ewl                     : 1;
228 		uint32_t idle                    : 1;
229 		uint32_t reserved_31_8          : 24;
230 #else
231 		uint32_t reserved_31_8          : 24;
232 		uint32_t idle                    : 1;
233 		uint32_t ewl                     : 1;
234 		uint32_t txs                     : 1;
235 		uint32_t rxs                     : 1;
236 		uint32_t eft                     : 1;
237 		uint32_t txnf                    : 1;
238 		uint32_t dor                     : 1;
239 		uint32_t rxne                    : 1;
240 #endif
241 	} s;
242 };
243 
244 union ctu_can_fd_command {
245 	uint32_t u32;
246 	struct ctu_can_fd_command_s {
247 #ifdef __LITTLE_ENDIAN_BITFIELD
248 		uint32_t reserved_1_0            : 2;
249   /* COMMAND */
250 		uint32_t rrb                     : 1;
251 		uint32_t cdo                     : 1;
252 		uint32_t ercrst                  : 1;
253 		uint32_t rxfcrst                 : 1;
254 		uint32_t txfcrst                 : 1;
255 		uint32_t reserved_31_7          : 25;
256 #else
257 		uint32_t reserved_31_7          : 25;
258 		uint32_t txfcrst                 : 1;
259 		uint32_t rxfcrst                 : 1;
260 		uint32_t ercrst                  : 1;
261 		uint32_t cdo                     : 1;
262 		uint32_t rrb                     : 1;
263 		uint32_t reserved_1_0            : 2;
264 #endif
265 	} s;
266 };
267 
268 union ctu_can_fd_int_stat {
269 	uint32_t u32;
270 	struct ctu_can_fd_int_stat_s {
271 #ifdef __LITTLE_ENDIAN_BITFIELD
272   /* INT_STAT */
273 		uint32_t rxi                     : 1;
274 		uint32_t txi                     : 1;
275 		uint32_t ewli                    : 1;
276 		uint32_t doi                     : 1;
277 		uint32_t fcsi                    : 1;
278 		uint32_t ali                     : 1;
279 		uint32_t bei                     : 1;
280 		uint32_t ofi                     : 1;
281 		uint32_t rxfi                    : 1;
282 		uint32_t bsi                     : 1;
283 		uint32_t rbnei                   : 1;
284 		uint32_t txbhci                  : 1;
285 		uint32_t reserved_31_12         : 20;
286 #else
287 		uint32_t reserved_31_12         : 20;
288 		uint32_t txbhci                  : 1;
289 		uint32_t rbnei                   : 1;
290 		uint32_t bsi                     : 1;
291 		uint32_t rxfi                    : 1;
292 		uint32_t ofi                     : 1;
293 		uint32_t bei                     : 1;
294 		uint32_t ali                     : 1;
295 		uint32_t fcsi                    : 1;
296 		uint32_t doi                     : 1;
297 		uint32_t ewli                    : 1;
298 		uint32_t txi                     : 1;
299 		uint32_t rxi                     : 1;
300 #endif
301 	} s;
302 };
303 
304 union ctu_can_fd_int_ena_set {
305 	uint32_t u32;
306 	struct ctu_can_fd_int_ena_set_s {
307 #ifdef __LITTLE_ENDIAN_BITFIELD
308   /* INT_ENA_SET */
309 		uint32_t int_ena_set            : 12;
310 		uint32_t reserved_31_12         : 20;
311 #else
312 		uint32_t reserved_31_12         : 20;
313 		uint32_t int_ena_set            : 12;
314 #endif
315 	} s;
316 };
317 
318 union ctu_can_fd_int_ena_clr {
319 	uint32_t u32;
320 	struct ctu_can_fd_int_ena_clr_s {
321 #ifdef __LITTLE_ENDIAN_BITFIELD
322   /* INT_ENA_CLR */
323 		uint32_t int_ena_clr            : 12;
324 		uint32_t reserved_31_12         : 20;
325 #else
326 		uint32_t reserved_31_12         : 20;
327 		uint32_t int_ena_clr            : 12;
328 #endif
329 	} s;
330 };
331 
332 union ctu_can_fd_int_mask_set {
333 	uint32_t u32;
334 	struct ctu_can_fd_int_mask_set_s {
335 #ifdef __LITTLE_ENDIAN_BITFIELD
336   /* INT_MASK_SET */
337 		uint32_t int_mask_set           : 12;
338 		uint32_t reserved_31_12         : 20;
339 #else
340 		uint32_t reserved_31_12         : 20;
341 		uint32_t int_mask_set           : 12;
342 #endif
343 	} s;
344 };
345 
346 union ctu_can_fd_int_mask_clr {
347 	uint32_t u32;
348 	struct ctu_can_fd_int_mask_clr_s {
349 #ifdef __LITTLE_ENDIAN_BITFIELD
350   /* INT_MASK_CLR */
351 		uint32_t int_mask_clr           : 12;
352 		uint32_t reserved_31_12         : 20;
353 #else
354 		uint32_t reserved_31_12         : 20;
355 		uint32_t int_mask_clr           : 12;
356 #endif
357 	} s;
358 };
359 
360 union ctu_can_fd_btr {
361 	uint32_t u32;
362 	struct ctu_can_fd_btr_s {
363 #ifdef __LITTLE_ENDIAN_BITFIELD
364   /* BTR */
365 		uint32_t prop                    : 7;
366 		uint32_t ph1                     : 6;
367 		uint32_t ph2                     : 6;
368 		uint32_t brp                     : 8;
369 		uint32_t sjw                     : 5;
370 #else
371 		uint32_t sjw                     : 5;
372 		uint32_t brp                     : 8;
373 		uint32_t ph2                     : 6;
374 		uint32_t ph1                     : 6;
375 		uint32_t prop                    : 7;
376 #endif
377 	} s;
378 };
379 
380 union ctu_can_fd_btr_fd {
381 	uint32_t u32;
382 	struct ctu_can_fd_btr_fd_s {
383 #ifdef __LITTLE_ENDIAN_BITFIELD
384   /* BTR_FD */
385 		uint32_t prop_fd                 : 6;
386 		uint32_t reserved_6              : 1;
387 		uint32_t ph1_fd                  : 5;
388 		uint32_t reserved_12             : 1;
389 		uint32_t ph2_fd                  : 5;
390 		uint32_t reserved_18             : 1;
391 		uint32_t brp_fd                  : 8;
392 		uint32_t sjw_fd                  : 5;
393 #else
394 		uint32_t sjw_fd                  : 5;
395 		uint32_t brp_fd                  : 8;
396 		uint32_t reserved_18             : 1;
397 		uint32_t ph2_fd                  : 5;
398 		uint32_t reserved_12             : 1;
399 		uint32_t ph1_fd                  : 5;
400 		uint32_t reserved_6              : 1;
401 		uint32_t prop_fd                 : 6;
402 #endif
403 	} s;
404 };
405 
406 union ctu_can_fd_ewl_erp_fault_state {
407 	uint32_t u32;
408 	struct ctu_can_fd_ewl_erp_fault_state_s {
409 #ifdef __LITTLE_ENDIAN_BITFIELD
410   /* EWL */
411 		uint32_t ew_limit                : 8;
412   /* ERP */
413 		uint32_t erp_limit               : 8;
414   /* FAULT_STATE */
415 		uint32_t era                     : 1;
416 		uint32_t erp                     : 1;
417 		uint32_t bof                     : 1;
418 		uint32_t reserved_31_19         : 13;
419 #else
420 		uint32_t reserved_31_19         : 13;
421 		uint32_t bof                     : 1;
422 		uint32_t erp                     : 1;
423 		uint32_t era                     : 1;
424 		uint32_t erp_limit               : 8;
425 		uint32_t ew_limit                : 8;
426 #endif
427 	} s;
428 };
429 
430 union ctu_can_fd_rec_tec {
431 	uint32_t u32;
432 	struct ctu_can_fd_rec_tec_s {
433 #ifdef __LITTLE_ENDIAN_BITFIELD
434   /* REC */
435 		uint32_t rec_val                 : 9;
436 		uint32_t reserved_15_9           : 7;
437   /* TEC */
438 		uint32_t tec_val                 : 9;
439 		uint32_t reserved_31_25          : 7;
440 #else
441 		uint32_t reserved_31_25          : 7;
442 		uint32_t tec_val                 : 9;
443 		uint32_t reserved_15_9           : 7;
444 		uint32_t rec_val                 : 9;
445 #endif
446 	} s;
447 };
448 
449 union ctu_can_fd_err_norm_err_fd {
450 	uint32_t u32;
451 	struct ctu_can_fd_err_norm_err_fd_s {
452 #ifdef __LITTLE_ENDIAN_BITFIELD
453   /* ERR_NORM */
454 		uint32_t err_norm_val           : 16;
455   /* ERR_FD */
456 		uint32_t err_fd_val             : 16;
457 #else
458 		uint32_t err_fd_val             : 16;
459 		uint32_t err_norm_val           : 16;
460 #endif
461 	} s;
462 };
463 
464 union ctu_can_fd_ctr_pres {
465 	uint32_t u32;
466 	struct ctu_can_fd_ctr_pres_s {
467 #ifdef __LITTLE_ENDIAN_BITFIELD
468   /* CTR_PRES */
469 		uint32_t ctpv                    : 9;
470 		uint32_t ptx                     : 1;
471 		uint32_t prx                     : 1;
472 		uint32_t enorm                   : 1;
473 		uint32_t efd                     : 1;
474 		uint32_t reserved_31_13         : 19;
475 #else
476 		uint32_t reserved_31_13         : 19;
477 		uint32_t efd                     : 1;
478 		uint32_t enorm                   : 1;
479 		uint32_t prx                     : 1;
480 		uint32_t ptx                     : 1;
481 		uint32_t ctpv                    : 9;
482 #endif
483 	} s;
484 };
485 
486 union ctu_can_fd_filter_a_mask {
487 	uint32_t u32;
488 	struct ctu_can_fd_filter_a_mask_s {
489 #ifdef __LITTLE_ENDIAN_BITFIELD
490   /* FILTER_A_MASK */
491 		uint32_t bit_mask_a_val         : 29;
492 		uint32_t reserved_31_29          : 3;
493 #else
494 		uint32_t reserved_31_29          : 3;
495 		uint32_t bit_mask_a_val         : 29;
496 #endif
497 	} s;
498 };
499 
500 union ctu_can_fd_filter_a_val {
501 	uint32_t u32;
502 	struct ctu_can_fd_filter_a_val_s {
503 #ifdef __LITTLE_ENDIAN_BITFIELD
504   /* FILTER_A_VAL */
505 		uint32_t bit_val_a_val          : 29;
506 		uint32_t reserved_31_29          : 3;
507 #else
508 		uint32_t reserved_31_29          : 3;
509 		uint32_t bit_val_a_val          : 29;
510 #endif
511 	} s;
512 };
513 
514 union ctu_can_fd_filter_b_mask {
515 	uint32_t u32;
516 	struct ctu_can_fd_filter_b_mask_s {
517 #ifdef __LITTLE_ENDIAN_BITFIELD
518   /* FILTER_B_MASK */
519 		uint32_t bit_mask_b_val         : 29;
520 		uint32_t reserved_31_29          : 3;
521 #else
522 		uint32_t reserved_31_29          : 3;
523 		uint32_t bit_mask_b_val         : 29;
524 #endif
525 	} s;
526 };
527 
528 union ctu_can_fd_filter_b_val {
529 	uint32_t u32;
530 	struct ctu_can_fd_filter_b_val_s {
531 #ifdef __LITTLE_ENDIAN_BITFIELD
532   /* FILTER_B_VAL */
533 		uint32_t bit_val_b_val          : 29;
534 		uint32_t reserved_31_29          : 3;
535 #else
536 		uint32_t reserved_31_29          : 3;
537 		uint32_t bit_val_b_val          : 29;
538 #endif
539 	} s;
540 };
541 
542 union ctu_can_fd_filter_c_mask {
543 	uint32_t u32;
544 	struct ctu_can_fd_filter_c_mask_s {
545 #ifdef __LITTLE_ENDIAN_BITFIELD
546   /* FILTER_C_MASK */
547 		uint32_t bit_mask_c_val         : 29;
548 		uint32_t reserved_31_29          : 3;
549 #else
550 		uint32_t reserved_31_29          : 3;
551 		uint32_t bit_mask_c_val         : 29;
552 #endif
553 	} s;
554 };
555 
556 union ctu_can_fd_filter_c_val {
557 	uint32_t u32;
558 	struct ctu_can_fd_filter_c_val_s {
559 #ifdef __LITTLE_ENDIAN_BITFIELD
560   /* FILTER_C_VAL */
561 		uint32_t bit_val_c_val          : 29;
562 		uint32_t reserved_31_29          : 3;
563 #else
564 		uint32_t reserved_31_29          : 3;
565 		uint32_t bit_val_c_val          : 29;
566 #endif
567 	} s;
568 };
569 
570 union ctu_can_fd_filter_ran_low {
571 	uint32_t u32;
572 	struct ctu_can_fd_filter_ran_low_s {
573 #ifdef __LITTLE_ENDIAN_BITFIELD
574   /* FILTER_RAN_LOW */
575 		uint32_t bit_ran_low_val        : 29;
576 		uint32_t reserved_31_29          : 3;
577 #else
578 		uint32_t reserved_31_29          : 3;
579 		uint32_t bit_ran_low_val        : 29;
580 #endif
581 	} s;
582 };
583 
584 union ctu_can_fd_filter_ran_high {
585 	uint32_t u32;
586 	struct ctu_can_fd_filter_ran_high_s {
587 #ifdef __LITTLE_ENDIAN_BITFIELD
588   /* FILTER_RAN_HIGH */
589 		uint32_t bit_ran_high_val       : 29;
590 		uint32_t reserved_31_29          : 3;
591 #else
592 		uint32_t reserved_31_29          : 3;
593 		uint32_t bit_ran_high_val       : 29;
594 #endif
595 	} s;
596 };
597 
598 union ctu_can_fd_filter_control_filter_status {
599 	uint32_t u32;
600 	struct ctu_can_fd_filter_control_filter_status_s {
601 #ifdef __LITTLE_ENDIAN_BITFIELD
602   /* FILTER_CONTROL */
603 		uint32_t fanb                    : 1;
604 		uint32_t fane                    : 1;
605 		uint32_t fafb                    : 1;
606 		uint32_t fafe                    : 1;
607 		uint32_t fbnb                    : 1;
608 		uint32_t fbne                    : 1;
609 		uint32_t fbfb                    : 1;
610 		uint32_t fbfe                    : 1;
611 		uint32_t fcnb                    : 1;
612 		uint32_t fcne                    : 1;
613 		uint32_t fcfb                    : 1;
614 		uint32_t fcfe                    : 1;
615 		uint32_t frnb                    : 1;
616 		uint32_t frne                    : 1;
617 		uint32_t frfb                    : 1;
618 		uint32_t frfe                    : 1;
619   /* FILTER_STATUS */
620 		uint32_t sfa                     : 1;
621 		uint32_t sfb                     : 1;
622 		uint32_t sfc                     : 1;
623 		uint32_t sfr                     : 1;
624 		uint32_t reserved_31_20         : 12;
625 #else
626 		uint32_t reserved_31_20         : 12;
627 		uint32_t sfr                     : 1;
628 		uint32_t sfc                     : 1;
629 		uint32_t sfb                     : 1;
630 		uint32_t sfa                     : 1;
631 		uint32_t frfe                    : 1;
632 		uint32_t frfb                    : 1;
633 		uint32_t frne                    : 1;
634 		uint32_t frnb                    : 1;
635 		uint32_t fcfe                    : 1;
636 		uint32_t fcfb                    : 1;
637 		uint32_t fcne                    : 1;
638 		uint32_t fcnb                    : 1;
639 		uint32_t fbfe                    : 1;
640 		uint32_t fbfb                    : 1;
641 		uint32_t fbne                    : 1;
642 		uint32_t fbnb                    : 1;
643 		uint32_t fafe                    : 1;
644 		uint32_t fafb                    : 1;
645 		uint32_t fane                    : 1;
646 		uint32_t fanb                    : 1;
647 #endif
648 	} s;
649 };
650 
651 union ctu_can_fd_rx_mem_info {
652 	uint32_t u32;
653 	struct ctu_can_fd_rx_mem_info_s {
654 #ifdef __LITTLE_ENDIAN_BITFIELD
655   /* RX_MEM_INFO */
656 		uint32_t rx_buff_size           : 13;
657 		uint32_t reserved_15_13          : 3;
658 		uint32_t rx_mem_free            : 13;
659 		uint32_t reserved_31_29          : 3;
660 #else
661 		uint32_t reserved_31_29          : 3;
662 		uint32_t rx_mem_free            : 13;
663 		uint32_t reserved_15_13          : 3;
664 		uint32_t rx_buff_size           : 13;
665 #endif
666 	} s;
667 };
668 
669 union ctu_can_fd_rx_pointers {
670 	uint32_t u32;
671 	struct ctu_can_fd_rx_pointers_s {
672 #ifdef __LITTLE_ENDIAN_BITFIELD
673   /* RX_POINTERS */
674 		uint32_t rx_wpp                 : 12;
675 		uint32_t reserved_15_12          : 4;
676 		uint32_t rx_rpp                 : 12;
677 		uint32_t reserved_31_28          : 4;
678 #else
679 		uint32_t reserved_31_28          : 4;
680 		uint32_t rx_rpp                 : 12;
681 		uint32_t reserved_15_12          : 4;
682 		uint32_t rx_wpp                 : 12;
683 #endif
684 	} s;
685 };
686 
687 union ctu_can_fd_rx_status_rx_settings {
688 	uint32_t u32;
689 	struct ctu_can_fd_rx_status_rx_settings_s {
690 #ifdef __LITTLE_ENDIAN_BITFIELD
691   /* RX_STATUS */
692 		uint32_t rxe                     : 1;
693 		uint32_t rxf                     : 1;
694 		uint32_t reserved_3_2            : 2;
695 		uint32_t rxfrc                  : 11;
696 		uint32_t reserved_15             : 1;
697   /* RX_SETTINGS */
698 		uint32_t rtsop                   : 1;
699 		uint32_t reserved_31_17         : 15;
700 #else
701 		uint32_t reserved_31_17         : 15;
702 		uint32_t rtsop                   : 1;
703 		uint32_t reserved_15             : 1;
704 		uint32_t rxfrc                  : 11;
705 		uint32_t reserved_3_2            : 2;
706 		uint32_t rxf                     : 1;
707 		uint32_t rxe                     : 1;
708 #endif
709 	} s;
710 };
711 
712 enum ctu_can_fd_rx_settings_rtsop {
713 	RTS_END       = 0x0,
714 	RTS_BEG       = 0x1,
715 };
716 
717 union ctu_can_fd_rx_data {
718 	uint32_t u32;
719 	struct ctu_can_fd_rx_data_s {
720   /* RX_DATA */
721 		uint32_t rx_data                : 32;
722 	} s;
723 };
724 
725 union ctu_can_fd_tx_status {
726 	uint32_t u32;
727 	struct ctu_can_fd_tx_status_s {
728 #ifdef __LITTLE_ENDIAN_BITFIELD
729   /* TX_STATUS */
730 		uint32_t tx1s                    : 4;
731 		uint32_t tx2s                    : 4;
732 		uint32_t tx3s                    : 4;
733 		uint32_t tx4s                    : 4;
734 		uint32_t reserved_31_16         : 16;
735 #else
736 		uint32_t reserved_31_16         : 16;
737 		uint32_t tx4s                    : 4;
738 		uint32_t tx3s                    : 4;
739 		uint32_t tx2s                    : 4;
740 		uint32_t tx1s                    : 4;
741 #endif
742 	} s;
743 };
744 
745 enum ctu_can_fd_tx_status_tx1s {
746 	TXT_RDY        = 0x1,
747 	TXT_TRAN       = 0x2,
748 	TXT_ABTP       = 0x3,
749 	TXT_TOK        = 0x4,
750 	TXT_ERR        = 0x6,
751 	TXT_ABT        = 0x7,
752 	TXT_ETY        = 0x8,
753 };
754 
755 union ctu_can_fd_tx_command {
756 	uint32_t u32;
757 	struct ctu_can_fd_tx_command_s {
758 #ifdef __LITTLE_ENDIAN_BITFIELD
759   /* TX_COMMAND */
760 		uint32_t txce                    : 1;
761 		uint32_t txcr                    : 1;
762 		uint32_t txca                    : 1;
763 		uint32_t reserved_7_3            : 5;
764 		uint32_t txb1                    : 1;
765 		uint32_t txb2                    : 1;
766 		uint32_t txb3                    : 1;
767 		uint32_t txb4                    : 1;
768 		uint32_t reserved_31_12         : 20;
769 #else
770 		uint32_t reserved_31_12         : 20;
771 		uint32_t txb4                    : 1;
772 		uint32_t txb3                    : 1;
773 		uint32_t txb2                    : 1;
774 		uint32_t txb1                    : 1;
775 		uint32_t reserved_7_3            : 5;
776 		uint32_t txca                    : 1;
777 		uint32_t txcr                    : 1;
778 		uint32_t txce                    : 1;
779 #endif
780 	} s;
781 };
782 
783 union ctu_can_fd_tx_priority {
784 	uint32_t u32;
785 	struct ctu_can_fd_tx_priority_s {
786 #ifdef __LITTLE_ENDIAN_BITFIELD
787   /* TX_PRIORITY */
788 		uint32_t txt1p                   : 3;
789 		uint32_t reserved_3              : 1;
790 		uint32_t txt2p                   : 3;
791 		uint32_t reserved_7              : 1;
792 		uint32_t txt3p                   : 3;
793 		uint32_t reserved_11             : 1;
794 		uint32_t txt4p                   : 3;
795 		uint32_t reserved_31_15         : 17;
796 #else
797 		uint32_t reserved_31_15         : 17;
798 		uint32_t txt4p                   : 3;
799 		uint32_t reserved_11             : 1;
800 		uint32_t txt3p                   : 3;
801 		uint32_t reserved_7              : 1;
802 		uint32_t txt2p                   : 3;
803 		uint32_t reserved_3              : 1;
804 		uint32_t txt1p                   : 3;
805 #endif
806 	} s;
807 };
808 
809 union ctu_can_fd_err_capt_alc {
810 	uint32_t u32;
811 	struct ctu_can_fd_err_capt_alc_s {
812 #ifdef __LITTLE_ENDIAN_BITFIELD
813   /* ERR_CAPT */
814 		uint32_t err_pos                 : 5;
815 		uint32_t err_type                : 3;
816 		uint32_t reserved_15_8           : 8;
817   /* ALC */
818 		uint32_t alc_bit                 : 5;
819 		uint32_t alc_id_field            : 3;
820 		uint32_t reserved_31_24          : 8;
821 #else
822 		uint32_t reserved_31_24          : 8;
823 		uint32_t alc_id_field            : 3;
824 		uint32_t alc_bit                 : 5;
825 		uint32_t reserved_15_8           : 8;
826 		uint32_t err_type                : 3;
827 		uint32_t err_pos                 : 5;
828 #endif
829 	} s;
830 };
831 
832 enum ctu_can_fd_err_capt_err_pos {
833 	ERC_POS_SOF         = 0x0,
834 	ERC_POS_ARB         = 0x1,
835 	ERC_POS_CTRL        = 0x2,
836 	ERC_POS_DATA        = 0x3,
837 	ERC_POS_CRC         = 0x4,
838 	ERC_POS_ACK         = 0x5,
839 	ERC_POS_EOF         = 0x6,
840 	ERC_POS_ERR         = 0x7,
841 	ERC_POS_OVRL        = 0x8,
842 	ERC_POS_OTHER      = 0x1f,
843 };
844 
845 enum ctu_can_fd_err_capt_err_type {
846 	ERC_BIT_ERR        = 0x0,
847 	ERC_CRC_ERR        = 0x1,
848 	ERC_FRM_ERR        = 0x2,
849 	ERC_ACK_ERR        = 0x3,
850 	ERC_STUF_ERR       = 0x4,
851 };
852 
853 enum ctu_can_fd_alc_alc_id_field {
854 	ALC_RSVD            = 0x0,
855 	ALC_BASE_ID         = 0x1,
856 	ALC_SRR_RTR         = 0x2,
857 	ALC_IDE             = 0x3,
858 	ALC_EXTENSION       = 0x4,
859 	ALC_RTR             = 0x5,
860 };
861 
862 union ctu_can_fd_trv_delay_ssp_cfg {
863 	uint32_t u32;
864 	struct ctu_can_fd_trv_delay_ssp_cfg_s {
865 #ifdef __LITTLE_ENDIAN_BITFIELD
866   /* TRV_DELAY */
867 		uint32_t trv_delay_value         : 7;
868 		uint32_t reserved_15_7           : 9;
869   /* SSP_CFG */
870 		uint32_t ssp_offset              : 8;
871 		uint32_t ssp_src                 : 2;
872 		uint32_t reserved_31_26          : 6;
873 #else
874 		uint32_t reserved_31_26          : 6;
875 		uint32_t ssp_src                 : 2;
876 		uint32_t ssp_offset              : 8;
877 		uint32_t reserved_15_7           : 9;
878 		uint32_t trv_delay_value         : 7;
879 #endif
880 	} s;
881 };
882 
883 enum ctu_can_fd_ssp_cfg_ssp_src {
884 	SSP_SRC_MEAS_N_OFFSET       = 0x0,
885 	SSP_SRC_NO_SSP              = 0x1,
886 	SSP_SRC_OFFSET              = 0x2,
887 };
888 
889 union ctu_can_fd_rx_fr_ctr {
890 	uint32_t u32;
891 	struct ctu_can_fd_rx_fr_ctr_s {
892   /* RX_FR_CTR */
893 		uint32_t rx_fr_ctr_val          : 32;
894 	} s;
895 };
896 
897 union ctu_can_fd_tx_fr_ctr {
898 	uint32_t u32;
899 	struct ctu_can_fd_tx_fr_ctr_s {
900   /* TX_FR_CTR */
901 		uint32_t tx_fr_ctr_val          : 32;
902 	} s;
903 };
904 
905 union ctu_can_fd_debug_register {
906 	uint32_t u32;
907 	struct ctu_can_fd_debug_register_s {
908 #ifdef __LITTLE_ENDIAN_BITFIELD
909   /* DEBUG_REGISTER */
910 		uint32_t stuff_count             : 3;
911 		uint32_t destuff_count           : 3;
912 		uint32_t pc_arb                  : 1;
913 		uint32_t pc_con                  : 1;
914 		uint32_t pc_dat                  : 1;
915 		uint32_t pc_stc                  : 1;
916 		uint32_t pc_crc                  : 1;
917 		uint32_t pc_crcd                 : 1;
918 		uint32_t pc_ack                  : 1;
919 		uint32_t pc_ackd                 : 1;
920 		uint32_t pc_eof                  : 1;
921 		uint32_t pc_int                  : 1;
922 		uint32_t pc_susp                 : 1;
923 		uint32_t pc_ovr                  : 1;
924 		uint32_t pc_sof                  : 1;
925 		uint32_t reserved_31_19         : 13;
926 #else
927 		uint32_t reserved_31_19         : 13;
928 		uint32_t pc_sof                  : 1;
929 		uint32_t pc_ovr                  : 1;
930 		uint32_t pc_susp                 : 1;
931 		uint32_t pc_int                  : 1;
932 		uint32_t pc_eof                  : 1;
933 		uint32_t pc_ackd                 : 1;
934 		uint32_t pc_ack                  : 1;
935 		uint32_t pc_crcd                 : 1;
936 		uint32_t pc_crc                  : 1;
937 		uint32_t pc_stc                  : 1;
938 		uint32_t pc_dat                  : 1;
939 		uint32_t pc_con                  : 1;
940 		uint32_t pc_arb                  : 1;
941 		uint32_t destuff_count           : 3;
942 		uint32_t stuff_count             : 3;
943 #endif
944 	} s;
945 };
946 
947 union ctu_can_fd_yolo_reg {
948 	uint32_t u32;
949 	struct ctu_can_fd_yolo_reg_s {
950   /* YOLO_REG */
951 		uint32_t yolo_val               : 32;
952 	} s;
953 };
954 
955 union ctu_can_fd_timestamp_low {
956 	uint32_t u32;
957 	struct ctu_can_fd_timestamp_low_s {
958   /* TIMESTAMP_LOW */
959 		uint32_t timestamp_low          : 32;
960 	} s;
961 };
962 
963 union ctu_can_fd_timestamp_high {
964 	uint32_t u32;
965 	struct ctu_can_fd_timestamp_high_s {
966   /* TIMESTAMP_HIGH */
967 		uint32_t timestamp_high         : 32;
968 	} s;
969 };
970 
971 #endif
972