xref: /openbmc/qemu/hw/net/can/ctu_can_fd_regs.h (revision 6a4cff8e1a80bafc4b8fe2bfb10081f4880d1b3b)
13c21c530SJan Charvat /* SPDX-License-Identifier: GPL-2.0-or-later */
23c21c530SJan Charvat /*******************************************************************************
33c21c530SJan Charvat  *
43c21c530SJan Charvat  * CTU CAN FD IP Core
53c21c530SJan Charvat  *
63c21c530SJan Charvat  * Copyright (C) 2015-2018 Ondrej Ille <ondrej.ille@gmail.com> FEE CTU
73c21c530SJan Charvat  * Copyright (C) 2018-2020 Ondrej Ille <ondrej.ille@gmail.com> self-funded
83c21c530SJan Charvat  * Copyright (C) 2018-2019 Martin Jerabek <martin.jerabek01@gmail.com> FEE CTU
93c21c530SJan Charvat  * Copyright (C) 2018-2020 Pavel Pisa <pisa@cmp.felk.cvut.cz> FEE CTU/self-funded
103c21c530SJan Charvat  *
113c21c530SJan Charvat  * Project advisors:
123c21c530SJan Charvat  *     Jiri Novak <jnovak@fel.cvut.cz>
133c21c530SJan Charvat  *     Pavel Pisa <pisa@cmp.felk.cvut.cz>
143c21c530SJan Charvat  *
153c21c530SJan Charvat  * Department of Measurement         (http://meas.fel.cvut.cz/)
163c21c530SJan Charvat  * Faculty of Electrical Engineering (http://www.fel.cvut.cz)
173c21c530SJan Charvat  * Czech Technical University        (http://www.cvut.cz/)
183c21c530SJan Charvat  *
193c21c530SJan Charvat  * This program is free software; you can redistribute it and/or
203c21c530SJan Charvat  * modify it under the terms of the GNU General Public License
213c21c530SJan Charvat  * as published by the Free Software Foundation; either version 2
223c21c530SJan Charvat  * of the License, or (at your option) any later version.
233c21c530SJan Charvat  *
243c21c530SJan Charvat  * This program is distributed in the hope that it will be useful,
253c21c530SJan Charvat  * but WITHOUT ANY WARRANTY; without even the implied warranty of
263c21c530SJan Charvat  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
273c21c530SJan Charvat  * GNU General Public License for more details.
283c21c530SJan Charvat  ******************************************************************************/
293c21c530SJan Charvat 
303c21c530SJan Charvat /* This file is autogenerated, DO NOT EDIT! */
313c21c530SJan Charvat 
32*52581c71SMarkus Armbruster #ifndef HW_CAN_CTU_CAN_FD_REGS_H
33*52581c71SMarkus Armbruster #define HW_CAN_CTU_CAN_FD_REGS_H
343c21c530SJan Charvat 
353c21c530SJan Charvat /* CAN_Registers memory map */
363c21c530SJan Charvat enum ctu_can_fd_can_registers {
373c21c530SJan Charvat     CTU_CAN_FD_DEVICE_ID             = 0x0,
383c21c530SJan Charvat     CTU_CAN_FD_VERSION               = 0x2,
393c21c530SJan Charvat     CTU_CAN_FD_MODE                  = 0x4,
403c21c530SJan Charvat     CTU_CAN_FD_SETTINGS              = 0x6,
413c21c530SJan Charvat     CTU_CAN_FD_STATUS                = 0x8,
423c21c530SJan Charvat     CTU_CAN_FD_COMMAND               = 0xc,
433c21c530SJan Charvat     CTU_CAN_FD_INT_STAT             = 0x10,
443c21c530SJan Charvat     CTU_CAN_FD_INT_ENA_SET          = 0x14,
453c21c530SJan Charvat     CTU_CAN_FD_INT_ENA_CLR          = 0x18,
463c21c530SJan Charvat     CTU_CAN_FD_INT_MASK_SET         = 0x1c,
473c21c530SJan Charvat     CTU_CAN_FD_INT_MASK_CLR         = 0x20,
483c21c530SJan Charvat     CTU_CAN_FD_BTR                  = 0x24,
493c21c530SJan Charvat     CTU_CAN_FD_BTR_FD               = 0x28,
503c21c530SJan Charvat     CTU_CAN_FD_EWL                  = 0x2c,
513c21c530SJan Charvat     CTU_CAN_FD_ERP                  = 0x2d,
523c21c530SJan Charvat     CTU_CAN_FD_FAULT_STATE          = 0x2e,
533c21c530SJan Charvat     CTU_CAN_FD_REC                  = 0x30,
543c21c530SJan Charvat     CTU_CAN_FD_TEC                  = 0x32,
553c21c530SJan Charvat     CTU_CAN_FD_ERR_NORM             = 0x34,
563c21c530SJan Charvat     CTU_CAN_FD_ERR_FD               = 0x36,
573c21c530SJan Charvat     CTU_CAN_FD_CTR_PRES             = 0x38,
583c21c530SJan Charvat     CTU_CAN_FD_FILTER_A_MASK        = 0x3c,
593c21c530SJan Charvat     CTU_CAN_FD_FILTER_A_VAL         = 0x40,
603c21c530SJan Charvat     CTU_CAN_FD_FILTER_B_MASK        = 0x44,
613c21c530SJan Charvat     CTU_CAN_FD_FILTER_B_VAL         = 0x48,
623c21c530SJan Charvat     CTU_CAN_FD_FILTER_C_MASK        = 0x4c,
633c21c530SJan Charvat     CTU_CAN_FD_FILTER_C_VAL         = 0x50,
643c21c530SJan Charvat     CTU_CAN_FD_FILTER_RAN_LOW       = 0x54,
653c21c530SJan Charvat     CTU_CAN_FD_FILTER_RAN_HIGH      = 0x58,
663c21c530SJan Charvat     CTU_CAN_FD_FILTER_CONTROL       = 0x5c,
673c21c530SJan Charvat     CTU_CAN_FD_FILTER_STATUS        = 0x5e,
683c21c530SJan Charvat     CTU_CAN_FD_RX_MEM_INFO          = 0x60,
693c21c530SJan Charvat     CTU_CAN_FD_RX_POINTERS          = 0x64,
703c21c530SJan Charvat     CTU_CAN_FD_RX_STATUS            = 0x68,
713c21c530SJan Charvat     CTU_CAN_FD_RX_SETTINGS          = 0x6a,
723c21c530SJan Charvat     CTU_CAN_FD_RX_DATA              = 0x6c,
733c21c530SJan Charvat     CTU_CAN_FD_TX_STATUS            = 0x70,
743c21c530SJan Charvat     CTU_CAN_FD_TX_COMMAND           = 0x74,
753c21c530SJan Charvat     CTU_CAN_FD_TX_PRIORITY          = 0x78,
763c21c530SJan Charvat     CTU_CAN_FD_ERR_CAPT             = 0x7c,
773c21c530SJan Charvat     CTU_CAN_FD_ALC                  = 0x7e,
783c21c530SJan Charvat     CTU_CAN_FD_TRV_DELAY            = 0x80,
793c21c530SJan Charvat     CTU_CAN_FD_SSP_CFG              = 0x82,
803c21c530SJan Charvat     CTU_CAN_FD_RX_FR_CTR            = 0x84,
813c21c530SJan Charvat     CTU_CAN_FD_TX_FR_CTR            = 0x88,
823c21c530SJan Charvat     CTU_CAN_FD_DEBUG_REGISTER       = 0x8c,
833c21c530SJan Charvat     CTU_CAN_FD_YOLO_REG             = 0x90,
843c21c530SJan Charvat     CTU_CAN_FD_TIMESTAMP_LOW        = 0x94,
853c21c530SJan Charvat     CTU_CAN_FD_TIMESTAMP_HIGH       = 0x98,
863c21c530SJan Charvat     CTU_CAN_FD_TXTB1_DATA_1        = 0x100,
873c21c530SJan Charvat     CTU_CAN_FD_TXTB1_DATA_2        = 0x104,
883c21c530SJan Charvat     CTU_CAN_FD_TXTB1_DATA_20       = 0x14c,
893c21c530SJan Charvat     CTU_CAN_FD_TXTB2_DATA_1        = 0x200,
903c21c530SJan Charvat     CTU_CAN_FD_TXTB2_DATA_2        = 0x204,
913c21c530SJan Charvat     CTU_CAN_FD_TXTB2_DATA_20       = 0x24c,
923c21c530SJan Charvat     CTU_CAN_FD_TXTB3_DATA_1        = 0x300,
933c21c530SJan Charvat     CTU_CAN_FD_TXTB3_DATA_2        = 0x304,
943c21c530SJan Charvat     CTU_CAN_FD_TXTB3_DATA_20       = 0x34c,
953c21c530SJan Charvat     CTU_CAN_FD_TXTB4_DATA_1        = 0x400,
963c21c530SJan Charvat     CTU_CAN_FD_TXTB4_DATA_2        = 0x404,
973c21c530SJan Charvat     CTU_CAN_FD_TXTB4_DATA_20       = 0x44c,
983c21c530SJan Charvat };
993c21c530SJan Charvat 
1003c21c530SJan Charvat 
1013c21c530SJan Charvat /* Register descriptions: */
1023c21c530SJan Charvat union ctu_can_fd_device_id_version {
1033c21c530SJan Charvat     uint32_t u32;
1043c21c530SJan Charvat     struct ctu_can_fd_device_id_version_s {
1053c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
1063c21c530SJan Charvat   /* DEVICE_ID */
1073c21c530SJan Charvat         uint32_t device_id              : 16;
1083c21c530SJan Charvat   /* VERSION */
1093c21c530SJan Charvat         uint32_t ver_minor               : 8;
1103c21c530SJan Charvat         uint32_t ver_major               : 8;
1113c21c530SJan Charvat #else
1123c21c530SJan Charvat         uint32_t ver_major               : 8;
1133c21c530SJan Charvat         uint32_t ver_minor               : 8;
1143c21c530SJan Charvat         uint32_t device_id              : 16;
1153c21c530SJan Charvat #endif
1163c21c530SJan Charvat     } s;
1173c21c530SJan Charvat };
1183c21c530SJan Charvat 
1193c21c530SJan Charvat enum ctu_can_fd_device_id_device_id {
1203c21c530SJan Charvat     CTU_CAN_FD_ID    = 0xcafd,
1213c21c530SJan Charvat };
1223c21c530SJan Charvat 
1233c21c530SJan Charvat union ctu_can_fd_mode_settings {
1243c21c530SJan Charvat     uint32_t u32;
1253c21c530SJan Charvat     struct ctu_can_fd_mode_settings_s {
1263c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
1273c21c530SJan Charvat   /* MODE */
1283c21c530SJan Charvat         uint32_t rst                     : 1;
1293c21c530SJan Charvat         uint32_t lom                     : 1;
1303c21c530SJan Charvat         uint32_t stm                     : 1;
1313c21c530SJan Charvat         uint32_t afm                     : 1;
1323c21c530SJan Charvat         uint32_t fde                     : 1;
1333c21c530SJan Charvat         uint32_t reserved_6_5            : 2;
1343c21c530SJan Charvat         uint32_t acf                     : 1;
1353c21c530SJan Charvat         uint32_t tstm                    : 1;
1363c21c530SJan Charvat         uint32_t reserved_15_9           : 7;
1373c21c530SJan Charvat   /* SETTINGS */
1383c21c530SJan Charvat         uint32_t rtrle                   : 1;
1393c21c530SJan Charvat         uint32_t rtrth                   : 4;
1403c21c530SJan Charvat         uint32_t ilbp                    : 1;
1413c21c530SJan Charvat         uint32_t ena                     : 1;
1423c21c530SJan Charvat         uint32_t nisofd                  : 1;
1433c21c530SJan Charvat         uint32_t pex                     : 1;
1443c21c530SJan Charvat         uint32_t reserved_31_25          : 7;
1453c21c530SJan Charvat #else
1463c21c530SJan Charvat         uint32_t reserved_31_25          : 7;
1473c21c530SJan Charvat         uint32_t pex                     : 1;
1483c21c530SJan Charvat         uint32_t nisofd                  : 1;
1493c21c530SJan Charvat         uint32_t ena                     : 1;
1503c21c530SJan Charvat         uint32_t ilbp                    : 1;
1513c21c530SJan Charvat         uint32_t rtrth                   : 4;
1523c21c530SJan Charvat         uint32_t rtrle                   : 1;
1533c21c530SJan Charvat         uint32_t reserved_15_9           : 7;
1543c21c530SJan Charvat         uint32_t tstm                    : 1;
1553c21c530SJan Charvat         uint32_t acf                     : 1;
1563c21c530SJan Charvat         uint32_t reserved_6_5            : 2;
1573c21c530SJan Charvat         uint32_t fde                     : 1;
1583c21c530SJan Charvat         uint32_t afm                     : 1;
1593c21c530SJan Charvat         uint32_t stm                     : 1;
1603c21c530SJan Charvat         uint32_t lom                     : 1;
1613c21c530SJan Charvat         uint32_t rst                     : 1;
1623c21c530SJan Charvat #endif
1633c21c530SJan Charvat     } s;
1643c21c530SJan Charvat };
1653c21c530SJan Charvat 
1663c21c530SJan Charvat enum ctu_can_fd_mode_lom {
1673c21c530SJan Charvat     LOM_DISABLED       = 0x0,
1683c21c530SJan Charvat     LOM_ENABLED        = 0x1,
1693c21c530SJan Charvat };
1703c21c530SJan Charvat 
1713c21c530SJan Charvat enum ctu_can_fd_mode_stm {
1723c21c530SJan Charvat     STM_DISABLED       = 0x0,
1733c21c530SJan Charvat     STM_ENABLED        = 0x1,
1743c21c530SJan Charvat };
1753c21c530SJan Charvat 
1763c21c530SJan Charvat enum ctu_can_fd_mode_afm {
1773c21c530SJan Charvat     AFM_DISABLED       = 0x0,
1783c21c530SJan Charvat     AFM_ENABLED        = 0x1,
1793c21c530SJan Charvat };
1803c21c530SJan Charvat 
1813c21c530SJan Charvat enum ctu_can_fd_mode_fde {
1823c21c530SJan Charvat     FDE_DISABLE       = 0x0,
1833c21c530SJan Charvat     FDE_ENABLE        = 0x1,
1843c21c530SJan Charvat };
1853c21c530SJan Charvat 
1863c21c530SJan Charvat enum ctu_can_fd_mode_acf {
1873c21c530SJan Charvat     ACF_DISABLED       = 0x0,
1883c21c530SJan Charvat     ACF_ENABLED        = 0x1,
1893c21c530SJan Charvat };
1903c21c530SJan Charvat 
1913c21c530SJan Charvat enum ctu_can_fd_settings_rtrle {
1923c21c530SJan Charvat     RTRLE_DISABLED       = 0x0,
1933c21c530SJan Charvat     RTRLE_ENABLED        = 0x1,
1943c21c530SJan Charvat };
1953c21c530SJan Charvat 
1963c21c530SJan Charvat enum ctu_can_fd_settings_ilbp {
1973c21c530SJan Charvat     INT_LOOP_DISABLED       = 0x0,
1983c21c530SJan Charvat     INT_LOOP_ENABLED        = 0x1,
1993c21c530SJan Charvat };
2003c21c530SJan Charvat 
2013c21c530SJan Charvat enum ctu_can_fd_settings_ena {
2023c21c530SJan Charvat     CTU_CAN_DISABLED       = 0x0,
2033c21c530SJan Charvat     CTU_CAN_ENABLED        = 0x1,
2043c21c530SJan Charvat };
2053c21c530SJan Charvat 
2063c21c530SJan Charvat enum ctu_can_fd_settings_nisofd {
2073c21c530SJan Charvat     ISO_FD           = 0x0,
2083c21c530SJan Charvat     NON_ISO_FD       = 0x1,
2093c21c530SJan Charvat };
2103c21c530SJan Charvat 
2113c21c530SJan Charvat enum ctu_can_fd_settings_pex {
2123c21c530SJan Charvat     PROTOCOL_EXCEPTION_DISABLED       = 0x0,
2133c21c530SJan Charvat     PROTOCOL_EXCEPTION_ENABLED        = 0x1,
2143c21c530SJan Charvat };
2153c21c530SJan Charvat 
2163c21c530SJan Charvat union ctu_can_fd_status {
2173c21c530SJan Charvat     uint32_t u32;
2183c21c530SJan Charvat     struct ctu_can_fd_status_s {
2193c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
2203c21c530SJan Charvat   /* STATUS */
2213c21c530SJan Charvat         uint32_t rxne                    : 1;
2223c21c530SJan Charvat         uint32_t dor                     : 1;
2233c21c530SJan Charvat         uint32_t txnf                    : 1;
2243c21c530SJan Charvat         uint32_t eft                     : 1;
2253c21c530SJan Charvat         uint32_t rxs                     : 1;
2263c21c530SJan Charvat         uint32_t txs                     : 1;
2273c21c530SJan Charvat         uint32_t ewl                     : 1;
2283c21c530SJan Charvat         uint32_t idle                    : 1;
2293c21c530SJan Charvat         uint32_t reserved_31_8          : 24;
2303c21c530SJan Charvat #else
2313c21c530SJan Charvat         uint32_t reserved_31_8          : 24;
2323c21c530SJan Charvat         uint32_t idle                    : 1;
2333c21c530SJan Charvat         uint32_t ewl                     : 1;
2343c21c530SJan Charvat         uint32_t txs                     : 1;
2353c21c530SJan Charvat         uint32_t rxs                     : 1;
2363c21c530SJan Charvat         uint32_t eft                     : 1;
2373c21c530SJan Charvat         uint32_t txnf                    : 1;
2383c21c530SJan Charvat         uint32_t dor                     : 1;
2393c21c530SJan Charvat         uint32_t rxne                    : 1;
2403c21c530SJan Charvat #endif
2413c21c530SJan Charvat     } s;
2423c21c530SJan Charvat };
2433c21c530SJan Charvat 
2443c21c530SJan Charvat union ctu_can_fd_command {
2453c21c530SJan Charvat     uint32_t u32;
2463c21c530SJan Charvat     struct ctu_can_fd_command_s {
2473c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
2483c21c530SJan Charvat         uint32_t reserved_1_0            : 2;
2493c21c530SJan Charvat   /* COMMAND */
2503c21c530SJan Charvat         uint32_t rrb                     : 1;
2513c21c530SJan Charvat         uint32_t cdo                     : 1;
2523c21c530SJan Charvat         uint32_t ercrst                  : 1;
2533c21c530SJan Charvat         uint32_t rxfcrst                 : 1;
2543c21c530SJan Charvat         uint32_t txfcrst                 : 1;
2553c21c530SJan Charvat         uint32_t reserved_31_7          : 25;
2563c21c530SJan Charvat #else
2573c21c530SJan Charvat         uint32_t reserved_31_7          : 25;
2583c21c530SJan Charvat         uint32_t txfcrst                 : 1;
2593c21c530SJan Charvat         uint32_t rxfcrst                 : 1;
2603c21c530SJan Charvat         uint32_t ercrst                  : 1;
2613c21c530SJan Charvat         uint32_t cdo                     : 1;
2623c21c530SJan Charvat         uint32_t rrb                     : 1;
2633c21c530SJan Charvat         uint32_t reserved_1_0            : 2;
2643c21c530SJan Charvat #endif
2653c21c530SJan Charvat     } s;
2663c21c530SJan Charvat };
2673c21c530SJan Charvat 
2683c21c530SJan Charvat union ctu_can_fd_int_stat {
2693c21c530SJan Charvat     uint32_t u32;
2703c21c530SJan Charvat     struct ctu_can_fd_int_stat_s {
2713c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
2723c21c530SJan Charvat   /* INT_STAT */
2733c21c530SJan Charvat         uint32_t rxi                     : 1;
2743c21c530SJan Charvat         uint32_t txi                     : 1;
2753c21c530SJan Charvat         uint32_t ewli                    : 1;
2763c21c530SJan Charvat         uint32_t doi                     : 1;
2773c21c530SJan Charvat         uint32_t fcsi                    : 1;
2783c21c530SJan Charvat         uint32_t ali                     : 1;
2793c21c530SJan Charvat         uint32_t bei                     : 1;
2803c21c530SJan Charvat         uint32_t ofi                     : 1;
2813c21c530SJan Charvat         uint32_t rxfi                    : 1;
2823c21c530SJan Charvat         uint32_t bsi                     : 1;
2833c21c530SJan Charvat         uint32_t rbnei                   : 1;
2843c21c530SJan Charvat         uint32_t txbhci                  : 1;
2853c21c530SJan Charvat         uint32_t reserved_31_12         : 20;
2863c21c530SJan Charvat #else
2873c21c530SJan Charvat         uint32_t reserved_31_12         : 20;
2883c21c530SJan Charvat         uint32_t txbhci                  : 1;
2893c21c530SJan Charvat         uint32_t rbnei                   : 1;
2903c21c530SJan Charvat         uint32_t bsi                     : 1;
2913c21c530SJan Charvat         uint32_t rxfi                    : 1;
2923c21c530SJan Charvat         uint32_t ofi                     : 1;
2933c21c530SJan Charvat         uint32_t bei                     : 1;
2943c21c530SJan Charvat         uint32_t ali                     : 1;
2953c21c530SJan Charvat         uint32_t fcsi                    : 1;
2963c21c530SJan Charvat         uint32_t doi                     : 1;
2973c21c530SJan Charvat         uint32_t ewli                    : 1;
2983c21c530SJan Charvat         uint32_t txi                     : 1;
2993c21c530SJan Charvat         uint32_t rxi                     : 1;
3003c21c530SJan Charvat #endif
3013c21c530SJan Charvat     } s;
3023c21c530SJan Charvat };
3033c21c530SJan Charvat 
3043c21c530SJan Charvat union ctu_can_fd_int_ena_set {
3053c21c530SJan Charvat     uint32_t u32;
3063c21c530SJan Charvat     struct ctu_can_fd_int_ena_set_s {
3073c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
3083c21c530SJan Charvat   /* INT_ENA_SET */
3093c21c530SJan Charvat         uint32_t int_ena_set            : 12;
3103c21c530SJan Charvat         uint32_t reserved_31_12         : 20;
3113c21c530SJan Charvat #else
3123c21c530SJan Charvat         uint32_t reserved_31_12         : 20;
3133c21c530SJan Charvat         uint32_t int_ena_set            : 12;
3143c21c530SJan Charvat #endif
3153c21c530SJan Charvat     } s;
3163c21c530SJan Charvat };
3173c21c530SJan Charvat 
3183c21c530SJan Charvat union ctu_can_fd_int_ena_clr {
3193c21c530SJan Charvat     uint32_t u32;
3203c21c530SJan Charvat     struct ctu_can_fd_int_ena_clr_s {
3213c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
3223c21c530SJan Charvat   /* INT_ENA_CLR */
3233c21c530SJan Charvat         uint32_t int_ena_clr            : 12;
3243c21c530SJan Charvat         uint32_t reserved_31_12         : 20;
3253c21c530SJan Charvat #else
3263c21c530SJan Charvat         uint32_t reserved_31_12         : 20;
3273c21c530SJan Charvat         uint32_t int_ena_clr            : 12;
3283c21c530SJan Charvat #endif
3293c21c530SJan Charvat     } s;
3303c21c530SJan Charvat };
3313c21c530SJan Charvat 
3323c21c530SJan Charvat union ctu_can_fd_int_mask_set {
3333c21c530SJan Charvat     uint32_t u32;
3343c21c530SJan Charvat     struct ctu_can_fd_int_mask_set_s {
3353c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
3363c21c530SJan Charvat   /* INT_MASK_SET */
3373c21c530SJan Charvat         uint32_t int_mask_set           : 12;
3383c21c530SJan Charvat         uint32_t reserved_31_12         : 20;
3393c21c530SJan Charvat #else
3403c21c530SJan Charvat         uint32_t reserved_31_12         : 20;
3413c21c530SJan Charvat         uint32_t int_mask_set           : 12;
3423c21c530SJan Charvat #endif
3433c21c530SJan Charvat     } s;
3443c21c530SJan Charvat };
3453c21c530SJan Charvat 
3463c21c530SJan Charvat union ctu_can_fd_int_mask_clr {
3473c21c530SJan Charvat     uint32_t u32;
3483c21c530SJan Charvat     struct ctu_can_fd_int_mask_clr_s {
3493c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
3503c21c530SJan Charvat   /* INT_MASK_CLR */
3513c21c530SJan Charvat         uint32_t int_mask_clr           : 12;
3523c21c530SJan Charvat         uint32_t reserved_31_12         : 20;
3533c21c530SJan Charvat #else
3543c21c530SJan Charvat         uint32_t reserved_31_12         : 20;
3553c21c530SJan Charvat         uint32_t int_mask_clr           : 12;
3563c21c530SJan Charvat #endif
3573c21c530SJan Charvat     } s;
3583c21c530SJan Charvat };
3593c21c530SJan Charvat 
3603c21c530SJan Charvat union ctu_can_fd_btr {
3613c21c530SJan Charvat     uint32_t u32;
3623c21c530SJan Charvat     struct ctu_can_fd_btr_s {
3633c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
3643c21c530SJan Charvat   /* BTR */
3653c21c530SJan Charvat         uint32_t prop                    : 7;
3663c21c530SJan Charvat         uint32_t ph1                     : 6;
3673c21c530SJan Charvat         uint32_t ph2                     : 6;
3683c21c530SJan Charvat         uint32_t brp                     : 8;
3693c21c530SJan Charvat         uint32_t sjw                     : 5;
3703c21c530SJan Charvat #else
3713c21c530SJan Charvat         uint32_t sjw                     : 5;
3723c21c530SJan Charvat         uint32_t brp                     : 8;
3733c21c530SJan Charvat         uint32_t ph2                     : 6;
3743c21c530SJan Charvat         uint32_t ph1                     : 6;
3753c21c530SJan Charvat         uint32_t prop                    : 7;
3763c21c530SJan Charvat #endif
3773c21c530SJan Charvat     } s;
3783c21c530SJan Charvat };
3793c21c530SJan Charvat 
3803c21c530SJan Charvat union ctu_can_fd_btr_fd {
3813c21c530SJan Charvat     uint32_t u32;
3823c21c530SJan Charvat     struct ctu_can_fd_btr_fd_s {
3833c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
3843c21c530SJan Charvat   /* BTR_FD */
3853c21c530SJan Charvat         uint32_t prop_fd                 : 6;
3863c21c530SJan Charvat         uint32_t reserved_6              : 1;
3873c21c530SJan Charvat         uint32_t ph1_fd                  : 5;
3883c21c530SJan Charvat         uint32_t reserved_12             : 1;
3893c21c530SJan Charvat         uint32_t ph2_fd                  : 5;
3903c21c530SJan Charvat         uint32_t reserved_18             : 1;
3913c21c530SJan Charvat         uint32_t brp_fd                  : 8;
3923c21c530SJan Charvat         uint32_t sjw_fd                  : 5;
3933c21c530SJan Charvat #else
3943c21c530SJan Charvat         uint32_t sjw_fd                  : 5;
3953c21c530SJan Charvat         uint32_t brp_fd                  : 8;
3963c21c530SJan Charvat         uint32_t reserved_18             : 1;
3973c21c530SJan Charvat         uint32_t ph2_fd                  : 5;
3983c21c530SJan Charvat         uint32_t reserved_12             : 1;
3993c21c530SJan Charvat         uint32_t ph1_fd                  : 5;
4003c21c530SJan Charvat         uint32_t reserved_6              : 1;
4013c21c530SJan Charvat         uint32_t prop_fd                 : 6;
4023c21c530SJan Charvat #endif
4033c21c530SJan Charvat     } s;
4043c21c530SJan Charvat };
4053c21c530SJan Charvat 
4063c21c530SJan Charvat union ctu_can_fd_ewl_erp_fault_state {
4073c21c530SJan Charvat     uint32_t u32;
4083c21c530SJan Charvat     struct ctu_can_fd_ewl_erp_fault_state_s {
4093c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
4103c21c530SJan Charvat   /* EWL */
4113c21c530SJan Charvat         uint32_t ew_limit                : 8;
4123c21c530SJan Charvat   /* ERP */
4133c21c530SJan Charvat         uint32_t erp_limit               : 8;
4143c21c530SJan Charvat   /* FAULT_STATE */
4153c21c530SJan Charvat         uint32_t era                     : 1;
4163c21c530SJan Charvat         uint32_t erp                     : 1;
4173c21c530SJan Charvat         uint32_t bof                     : 1;
4183c21c530SJan Charvat         uint32_t reserved_31_19         : 13;
4193c21c530SJan Charvat #else
4203c21c530SJan Charvat         uint32_t reserved_31_19         : 13;
4213c21c530SJan Charvat         uint32_t bof                     : 1;
4223c21c530SJan Charvat         uint32_t erp                     : 1;
4233c21c530SJan Charvat         uint32_t era                     : 1;
4243c21c530SJan Charvat         uint32_t erp_limit               : 8;
4253c21c530SJan Charvat         uint32_t ew_limit                : 8;
4263c21c530SJan Charvat #endif
4273c21c530SJan Charvat     } s;
4283c21c530SJan Charvat };
4293c21c530SJan Charvat 
4303c21c530SJan Charvat union ctu_can_fd_rec_tec {
4313c21c530SJan Charvat     uint32_t u32;
4323c21c530SJan Charvat     struct ctu_can_fd_rec_tec_s {
4333c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
4343c21c530SJan Charvat   /* REC */
4353c21c530SJan Charvat         uint32_t rec_val                 : 9;
4363c21c530SJan Charvat         uint32_t reserved_15_9           : 7;
4373c21c530SJan Charvat   /* TEC */
4383c21c530SJan Charvat         uint32_t tec_val                 : 9;
4393c21c530SJan Charvat         uint32_t reserved_31_25          : 7;
4403c21c530SJan Charvat #else
4413c21c530SJan Charvat         uint32_t reserved_31_25          : 7;
4423c21c530SJan Charvat         uint32_t tec_val                 : 9;
4433c21c530SJan Charvat         uint32_t reserved_15_9           : 7;
4443c21c530SJan Charvat         uint32_t rec_val                 : 9;
4453c21c530SJan Charvat #endif
4463c21c530SJan Charvat     } s;
4473c21c530SJan Charvat };
4483c21c530SJan Charvat 
4493c21c530SJan Charvat union ctu_can_fd_err_norm_err_fd {
4503c21c530SJan Charvat     uint32_t u32;
4513c21c530SJan Charvat     struct ctu_can_fd_err_norm_err_fd_s {
4523c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
4533c21c530SJan Charvat   /* ERR_NORM */
4543c21c530SJan Charvat         uint32_t err_norm_val           : 16;
4553c21c530SJan Charvat   /* ERR_FD */
4563c21c530SJan Charvat         uint32_t err_fd_val             : 16;
4573c21c530SJan Charvat #else
4583c21c530SJan Charvat         uint32_t err_fd_val             : 16;
4593c21c530SJan Charvat         uint32_t err_norm_val           : 16;
4603c21c530SJan Charvat #endif
4613c21c530SJan Charvat     } s;
4623c21c530SJan Charvat };
4633c21c530SJan Charvat 
4643c21c530SJan Charvat union ctu_can_fd_ctr_pres {
4653c21c530SJan Charvat     uint32_t u32;
4663c21c530SJan Charvat     struct ctu_can_fd_ctr_pres_s {
4673c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
4683c21c530SJan Charvat   /* CTR_PRES */
4693c21c530SJan Charvat         uint32_t ctpv                    : 9;
4703c21c530SJan Charvat         uint32_t ptx                     : 1;
4713c21c530SJan Charvat         uint32_t prx                     : 1;
4723c21c530SJan Charvat         uint32_t enorm                   : 1;
4733c21c530SJan Charvat         uint32_t efd                     : 1;
4743c21c530SJan Charvat         uint32_t reserved_31_13         : 19;
4753c21c530SJan Charvat #else
4763c21c530SJan Charvat         uint32_t reserved_31_13         : 19;
4773c21c530SJan Charvat         uint32_t efd                     : 1;
4783c21c530SJan Charvat         uint32_t enorm                   : 1;
4793c21c530SJan Charvat         uint32_t prx                     : 1;
4803c21c530SJan Charvat         uint32_t ptx                     : 1;
4813c21c530SJan Charvat         uint32_t ctpv                    : 9;
4823c21c530SJan Charvat #endif
4833c21c530SJan Charvat     } s;
4843c21c530SJan Charvat };
4853c21c530SJan Charvat 
4863c21c530SJan Charvat union ctu_can_fd_filter_a_mask {
4873c21c530SJan Charvat     uint32_t u32;
4883c21c530SJan Charvat     struct ctu_can_fd_filter_a_mask_s {
4893c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
4903c21c530SJan Charvat   /* FILTER_A_MASK */
4913c21c530SJan Charvat         uint32_t bit_mask_a_val         : 29;
4923c21c530SJan Charvat         uint32_t reserved_31_29          : 3;
4933c21c530SJan Charvat #else
4943c21c530SJan Charvat         uint32_t reserved_31_29          : 3;
4953c21c530SJan Charvat         uint32_t bit_mask_a_val         : 29;
4963c21c530SJan Charvat #endif
4973c21c530SJan Charvat     } s;
4983c21c530SJan Charvat };
4993c21c530SJan Charvat 
5003c21c530SJan Charvat union ctu_can_fd_filter_a_val {
5013c21c530SJan Charvat     uint32_t u32;
5023c21c530SJan Charvat     struct ctu_can_fd_filter_a_val_s {
5033c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
5043c21c530SJan Charvat   /* FILTER_A_VAL */
5053c21c530SJan Charvat         uint32_t bit_val_a_val          : 29;
5063c21c530SJan Charvat         uint32_t reserved_31_29          : 3;
5073c21c530SJan Charvat #else
5083c21c530SJan Charvat         uint32_t reserved_31_29          : 3;
5093c21c530SJan Charvat         uint32_t bit_val_a_val          : 29;
5103c21c530SJan Charvat #endif
5113c21c530SJan Charvat     } s;
5123c21c530SJan Charvat };
5133c21c530SJan Charvat 
5143c21c530SJan Charvat union ctu_can_fd_filter_b_mask {
5153c21c530SJan Charvat     uint32_t u32;
5163c21c530SJan Charvat     struct ctu_can_fd_filter_b_mask_s {
5173c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
5183c21c530SJan Charvat   /* FILTER_B_MASK */
5193c21c530SJan Charvat         uint32_t bit_mask_b_val         : 29;
5203c21c530SJan Charvat         uint32_t reserved_31_29          : 3;
5213c21c530SJan Charvat #else
5223c21c530SJan Charvat         uint32_t reserved_31_29          : 3;
5233c21c530SJan Charvat         uint32_t bit_mask_b_val         : 29;
5243c21c530SJan Charvat #endif
5253c21c530SJan Charvat     } s;
5263c21c530SJan Charvat };
5273c21c530SJan Charvat 
5283c21c530SJan Charvat union ctu_can_fd_filter_b_val {
5293c21c530SJan Charvat     uint32_t u32;
5303c21c530SJan Charvat     struct ctu_can_fd_filter_b_val_s {
5313c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
5323c21c530SJan Charvat   /* FILTER_B_VAL */
5333c21c530SJan Charvat         uint32_t bit_val_b_val          : 29;
5343c21c530SJan Charvat         uint32_t reserved_31_29          : 3;
5353c21c530SJan Charvat #else
5363c21c530SJan Charvat         uint32_t reserved_31_29          : 3;
5373c21c530SJan Charvat         uint32_t bit_val_b_val          : 29;
5383c21c530SJan Charvat #endif
5393c21c530SJan Charvat     } s;
5403c21c530SJan Charvat };
5413c21c530SJan Charvat 
5423c21c530SJan Charvat union ctu_can_fd_filter_c_mask {
5433c21c530SJan Charvat     uint32_t u32;
5443c21c530SJan Charvat     struct ctu_can_fd_filter_c_mask_s {
5453c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
5463c21c530SJan Charvat   /* FILTER_C_MASK */
5473c21c530SJan Charvat         uint32_t bit_mask_c_val         : 29;
5483c21c530SJan Charvat         uint32_t reserved_31_29          : 3;
5493c21c530SJan Charvat #else
5503c21c530SJan Charvat         uint32_t reserved_31_29          : 3;
5513c21c530SJan Charvat         uint32_t bit_mask_c_val         : 29;
5523c21c530SJan Charvat #endif
5533c21c530SJan Charvat     } s;
5543c21c530SJan Charvat };
5553c21c530SJan Charvat 
5563c21c530SJan Charvat union ctu_can_fd_filter_c_val {
5573c21c530SJan Charvat     uint32_t u32;
5583c21c530SJan Charvat     struct ctu_can_fd_filter_c_val_s {
5593c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
5603c21c530SJan Charvat   /* FILTER_C_VAL */
5613c21c530SJan Charvat         uint32_t bit_val_c_val          : 29;
5623c21c530SJan Charvat         uint32_t reserved_31_29          : 3;
5633c21c530SJan Charvat #else
5643c21c530SJan Charvat         uint32_t reserved_31_29          : 3;
5653c21c530SJan Charvat         uint32_t bit_val_c_val          : 29;
5663c21c530SJan Charvat #endif
5673c21c530SJan Charvat     } s;
5683c21c530SJan Charvat };
5693c21c530SJan Charvat 
5703c21c530SJan Charvat union ctu_can_fd_filter_ran_low {
5713c21c530SJan Charvat     uint32_t u32;
5723c21c530SJan Charvat     struct ctu_can_fd_filter_ran_low_s {
5733c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
5743c21c530SJan Charvat   /* FILTER_RAN_LOW */
5753c21c530SJan Charvat         uint32_t bit_ran_low_val        : 29;
5763c21c530SJan Charvat         uint32_t reserved_31_29          : 3;
5773c21c530SJan Charvat #else
5783c21c530SJan Charvat         uint32_t reserved_31_29          : 3;
5793c21c530SJan Charvat         uint32_t bit_ran_low_val        : 29;
5803c21c530SJan Charvat #endif
5813c21c530SJan Charvat     } s;
5823c21c530SJan Charvat };
5833c21c530SJan Charvat 
5843c21c530SJan Charvat union ctu_can_fd_filter_ran_high {
5853c21c530SJan Charvat     uint32_t u32;
5863c21c530SJan Charvat     struct ctu_can_fd_filter_ran_high_s {
5873c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
5883c21c530SJan Charvat   /* FILTER_RAN_HIGH */
5893c21c530SJan Charvat         uint32_t bit_ran_high_val       : 29;
5903c21c530SJan Charvat         uint32_t reserved_31_29          : 3;
5913c21c530SJan Charvat #else
5923c21c530SJan Charvat         uint32_t reserved_31_29          : 3;
5933c21c530SJan Charvat         uint32_t bit_ran_high_val       : 29;
5943c21c530SJan Charvat #endif
5953c21c530SJan Charvat     } s;
5963c21c530SJan Charvat };
5973c21c530SJan Charvat 
5983c21c530SJan Charvat union ctu_can_fd_filter_control_filter_status {
5993c21c530SJan Charvat     uint32_t u32;
6003c21c530SJan Charvat     struct ctu_can_fd_filter_control_filter_status_s {
6013c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
6023c21c530SJan Charvat   /* FILTER_CONTROL */
6033c21c530SJan Charvat         uint32_t fanb                    : 1;
6043c21c530SJan Charvat         uint32_t fane                    : 1;
6053c21c530SJan Charvat         uint32_t fafb                    : 1;
6063c21c530SJan Charvat         uint32_t fafe                    : 1;
6073c21c530SJan Charvat         uint32_t fbnb                    : 1;
6083c21c530SJan Charvat         uint32_t fbne                    : 1;
6093c21c530SJan Charvat         uint32_t fbfb                    : 1;
6103c21c530SJan Charvat         uint32_t fbfe                    : 1;
6113c21c530SJan Charvat         uint32_t fcnb                    : 1;
6123c21c530SJan Charvat         uint32_t fcne                    : 1;
6133c21c530SJan Charvat         uint32_t fcfb                    : 1;
6143c21c530SJan Charvat         uint32_t fcfe                    : 1;
6153c21c530SJan Charvat         uint32_t frnb                    : 1;
6163c21c530SJan Charvat         uint32_t frne                    : 1;
6173c21c530SJan Charvat         uint32_t frfb                    : 1;
6183c21c530SJan Charvat         uint32_t frfe                    : 1;
6193c21c530SJan Charvat   /* FILTER_STATUS */
6203c21c530SJan Charvat         uint32_t sfa                     : 1;
6213c21c530SJan Charvat         uint32_t sfb                     : 1;
6223c21c530SJan Charvat         uint32_t sfc                     : 1;
6233c21c530SJan Charvat         uint32_t sfr                     : 1;
6243c21c530SJan Charvat         uint32_t reserved_31_20         : 12;
6253c21c530SJan Charvat #else
6263c21c530SJan Charvat         uint32_t reserved_31_20         : 12;
6273c21c530SJan Charvat         uint32_t sfr                     : 1;
6283c21c530SJan Charvat         uint32_t sfc                     : 1;
6293c21c530SJan Charvat         uint32_t sfb                     : 1;
6303c21c530SJan Charvat         uint32_t sfa                     : 1;
6313c21c530SJan Charvat         uint32_t frfe                    : 1;
6323c21c530SJan Charvat         uint32_t frfb                    : 1;
6333c21c530SJan Charvat         uint32_t frne                    : 1;
6343c21c530SJan Charvat         uint32_t frnb                    : 1;
6353c21c530SJan Charvat         uint32_t fcfe                    : 1;
6363c21c530SJan Charvat         uint32_t fcfb                    : 1;
6373c21c530SJan Charvat         uint32_t fcne                    : 1;
6383c21c530SJan Charvat         uint32_t fcnb                    : 1;
6393c21c530SJan Charvat         uint32_t fbfe                    : 1;
6403c21c530SJan Charvat         uint32_t fbfb                    : 1;
6413c21c530SJan Charvat         uint32_t fbne                    : 1;
6423c21c530SJan Charvat         uint32_t fbnb                    : 1;
6433c21c530SJan Charvat         uint32_t fafe                    : 1;
6443c21c530SJan Charvat         uint32_t fafb                    : 1;
6453c21c530SJan Charvat         uint32_t fane                    : 1;
6463c21c530SJan Charvat         uint32_t fanb                    : 1;
6473c21c530SJan Charvat #endif
6483c21c530SJan Charvat     } s;
6493c21c530SJan Charvat };
6503c21c530SJan Charvat 
6513c21c530SJan Charvat union ctu_can_fd_rx_mem_info {
6523c21c530SJan Charvat     uint32_t u32;
6533c21c530SJan Charvat     struct ctu_can_fd_rx_mem_info_s {
6543c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
6553c21c530SJan Charvat   /* RX_MEM_INFO */
6563c21c530SJan Charvat         uint32_t rx_buff_size           : 13;
6573c21c530SJan Charvat         uint32_t reserved_15_13          : 3;
6583c21c530SJan Charvat         uint32_t rx_mem_free            : 13;
6593c21c530SJan Charvat         uint32_t reserved_31_29          : 3;
6603c21c530SJan Charvat #else
6613c21c530SJan Charvat         uint32_t reserved_31_29          : 3;
6623c21c530SJan Charvat         uint32_t rx_mem_free            : 13;
6633c21c530SJan Charvat         uint32_t reserved_15_13          : 3;
6643c21c530SJan Charvat         uint32_t rx_buff_size           : 13;
6653c21c530SJan Charvat #endif
6663c21c530SJan Charvat     } s;
6673c21c530SJan Charvat };
6683c21c530SJan Charvat 
6693c21c530SJan Charvat union ctu_can_fd_rx_pointers {
6703c21c530SJan Charvat     uint32_t u32;
6713c21c530SJan Charvat     struct ctu_can_fd_rx_pointers_s {
6723c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
6733c21c530SJan Charvat   /* RX_POINTERS */
6743c21c530SJan Charvat         uint32_t rx_wpp                 : 12;
6753c21c530SJan Charvat         uint32_t reserved_15_12          : 4;
6763c21c530SJan Charvat         uint32_t rx_rpp                 : 12;
6773c21c530SJan Charvat         uint32_t reserved_31_28          : 4;
6783c21c530SJan Charvat #else
6793c21c530SJan Charvat         uint32_t reserved_31_28          : 4;
6803c21c530SJan Charvat         uint32_t rx_rpp                 : 12;
6813c21c530SJan Charvat         uint32_t reserved_15_12          : 4;
6823c21c530SJan Charvat         uint32_t rx_wpp                 : 12;
6833c21c530SJan Charvat #endif
6843c21c530SJan Charvat     } s;
6853c21c530SJan Charvat };
6863c21c530SJan Charvat 
6873c21c530SJan Charvat union ctu_can_fd_rx_status_rx_settings {
6883c21c530SJan Charvat     uint32_t u32;
6893c21c530SJan Charvat     struct ctu_can_fd_rx_status_rx_settings_s {
6903c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
6913c21c530SJan Charvat   /* RX_STATUS */
6923c21c530SJan Charvat         uint32_t rxe                     : 1;
6933c21c530SJan Charvat         uint32_t rxf                     : 1;
6943c21c530SJan Charvat         uint32_t reserved_3_2            : 2;
6953c21c530SJan Charvat         uint32_t rxfrc                  : 11;
6963c21c530SJan Charvat         uint32_t reserved_15             : 1;
6973c21c530SJan Charvat   /* RX_SETTINGS */
6983c21c530SJan Charvat         uint32_t rtsop                   : 1;
6993c21c530SJan Charvat         uint32_t reserved_31_17         : 15;
7003c21c530SJan Charvat #else
7013c21c530SJan Charvat         uint32_t reserved_31_17         : 15;
7023c21c530SJan Charvat         uint32_t rtsop                   : 1;
7033c21c530SJan Charvat         uint32_t reserved_15             : 1;
7043c21c530SJan Charvat         uint32_t rxfrc                  : 11;
7053c21c530SJan Charvat         uint32_t reserved_3_2            : 2;
7063c21c530SJan Charvat         uint32_t rxf                     : 1;
7073c21c530SJan Charvat         uint32_t rxe                     : 1;
7083c21c530SJan Charvat #endif
7093c21c530SJan Charvat     } s;
7103c21c530SJan Charvat };
7113c21c530SJan Charvat 
7123c21c530SJan Charvat enum ctu_can_fd_rx_settings_rtsop {
7133c21c530SJan Charvat     RTS_END       = 0x0,
7143c21c530SJan Charvat     RTS_BEG       = 0x1,
7153c21c530SJan Charvat };
7163c21c530SJan Charvat 
7173c21c530SJan Charvat union ctu_can_fd_rx_data {
7183c21c530SJan Charvat     uint32_t u32;
7193c21c530SJan Charvat     struct ctu_can_fd_rx_data_s {
7203c21c530SJan Charvat   /* RX_DATA */
7213c21c530SJan Charvat         uint32_t rx_data                : 32;
7223c21c530SJan Charvat     } s;
7233c21c530SJan Charvat };
7243c21c530SJan Charvat 
7253c21c530SJan Charvat union ctu_can_fd_tx_status {
7263c21c530SJan Charvat     uint32_t u32;
7273c21c530SJan Charvat     struct ctu_can_fd_tx_status_s {
7283c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
7293c21c530SJan Charvat   /* TX_STATUS */
7303c21c530SJan Charvat         uint32_t tx1s                    : 4;
7313c21c530SJan Charvat         uint32_t tx2s                    : 4;
7323c21c530SJan Charvat         uint32_t tx3s                    : 4;
7333c21c530SJan Charvat         uint32_t tx4s                    : 4;
7343c21c530SJan Charvat         uint32_t reserved_31_16         : 16;
7353c21c530SJan Charvat #else
7363c21c530SJan Charvat         uint32_t reserved_31_16         : 16;
7373c21c530SJan Charvat         uint32_t tx4s                    : 4;
7383c21c530SJan Charvat         uint32_t tx3s                    : 4;
7393c21c530SJan Charvat         uint32_t tx2s                    : 4;
7403c21c530SJan Charvat         uint32_t tx1s                    : 4;
7413c21c530SJan Charvat #endif
7423c21c530SJan Charvat     } s;
7433c21c530SJan Charvat };
7443c21c530SJan Charvat 
7453c21c530SJan Charvat enum ctu_can_fd_tx_status_tx1s {
7463c21c530SJan Charvat     TXT_RDY        = 0x1,
7473c21c530SJan Charvat     TXT_TRAN       = 0x2,
7483c21c530SJan Charvat     TXT_ABTP       = 0x3,
7493c21c530SJan Charvat     TXT_TOK        = 0x4,
7503c21c530SJan Charvat     TXT_ERR        = 0x6,
7513c21c530SJan Charvat     TXT_ABT        = 0x7,
7523c21c530SJan Charvat     TXT_ETY        = 0x8,
7533c21c530SJan Charvat };
7543c21c530SJan Charvat 
7553c21c530SJan Charvat union ctu_can_fd_tx_command {
7563c21c530SJan Charvat     uint32_t u32;
7573c21c530SJan Charvat     struct ctu_can_fd_tx_command_s {
7583c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
7593c21c530SJan Charvat   /* TX_COMMAND */
7603c21c530SJan Charvat         uint32_t txce                    : 1;
7613c21c530SJan Charvat         uint32_t txcr                    : 1;
7623c21c530SJan Charvat         uint32_t txca                    : 1;
7633c21c530SJan Charvat         uint32_t reserved_7_3            : 5;
7643c21c530SJan Charvat         uint32_t txb1                    : 1;
7653c21c530SJan Charvat         uint32_t txb2                    : 1;
7663c21c530SJan Charvat         uint32_t txb3                    : 1;
7673c21c530SJan Charvat         uint32_t txb4                    : 1;
7683c21c530SJan Charvat         uint32_t reserved_31_12         : 20;
7693c21c530SJan Charvat #else
7703c21c530SJan Charvat         uint32_t reserved_31_12         : 20;
7713c21c530SJan Charvat         uint32_t txb4                    : 1;
7723c21c530SJan Charvat         uint32_t txb3                    : 1;
7733c21c530SJan Charvat         uint32_t txb2                    : 1;
7743c21c530SJan Charvat         uint32_t txb1                    : 1;
7753c21c530SJan Charvat         uint32_t reserved_7_3            : 5;
7763c21c530SJan Charvat         uint32_t txca                    : 1;
7773c21c530SJan Charvat         uint32_t txcr                    : 1;
7783c21c530SJan Charvat         uint32_t txce                    : 1;
7793c21c530SJan Charvat #endif
7803c21c530SJan Charvat     } s;
7813c21c530SJan Charvat };
7823c21c530SJan Charvat 
7833c21c530SJan Charvat union ctu_can_fd_tx_priority {
7843c21c530SJan Charvat     uint32_t u32;
7853c21c530SJan Charvat     struct ctu_can_fd_tx_priority_s {
7863c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
7873c21c530SJan Charvat   /* TX_PRIORITY */
7883c21c530SJan Charvat         uint32_t txt1p                   : 3;
7893c21c530SJan Charvat         uint32_t reserved_3              : 1;
7903c21c530SJan Charvat         uint32_t txt2p                   : 3;
7913c21c530SJan Charvat         uint32_t reserved_7              : 1;
7923c21c530SJan Charvat         uint32_t txt3p                   : 3;
7933c21c530SJan Charvat         uint32_t reserved_11             : 1;
7943c21c530SJan Charvat         uint32_t txt4p                   : 3;
7953c21c530SJan Charvat         uint32_t reserved_31_15         : 17;
7963c21c530SJan Charvat #else
7973c21c530SJan Charvat         uint32_t reserved_31_15         : 17;
7983c21c530SJan Charvat         uint32_t txt4p                   : 3;
7993c21c530SJan Charvat         uint32_t reserved_11             : 1;
8003c21c530SJan Charvat         uint32_t txt3p                   : 3;
8013c21c530SJan Charvat         uint32_t reserved_7              : 1;
8023c21c530SJan Charvat         uint32_t txt2p                   : 3;
8033c21c530SJan Charvat         uint32_t reserved_3              : 1;
8043c21c530SJan Charvat         uint32_t txt1p                   : 3;
8053c21c530SJan Charvat #endif
8063c21c530SJan Charvat     } s;
8073c21c530SJan Charvat };
8083c21c530SJan Charvat 
8093c21c530SJan Charvat union ctu_can_fd_err_capt_alc {
8103c21c530SJan Charvat     uint32_t u32;
8113c21c530SJan Charvat     struct ctu_can_fd_err_capt_alc_s {
8123c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
8133c21c530SJan Charvat   /* ERR_CAPT */
8143c21c530SJan Charvat         uint32_t err_pos                 : 5;
8153c21c530SJan Charvat         uint32_t err_type                : 3;
8163c21c530SJan Charvat         uint32_t reserved_15_8           : 8;
8173c21c530SJan Charvat   /* ALC */
8183c21c530SJan Charvat         uint32_t alc_bit                 : 5;
8193c21c530SJan Charvat         uint32_t alc_id_field            : 3;
8203c21c530SJan Charvat         uint32_t reserved_31_24          : 8;
8213c21c530SJan Charvat #else
8223c21c530SJan Charvat         uint32_t reserved_31_24          : 8;
8233c21c530SJan Charvat         uint32_t alc_id_field            : 3;
8243c21c530SJan Charvat         uint32_t alc_bit                 : 5;
8253c21c530SJan Charvat         uint32_t reserved_15_8           : 8;
8263c21c530SJan Charvat         uint32_t err_type                : 3;
8273c21c530SJan Charvat         uint32_t err_pos                 : 5;
8283c21c530SJan Charvat #endif
8293c21c530SJan Charvat     } s;
8303c21c530SJan Charvat };
8313c21c530SJan Charvat 
8323c21c530SJan Charvat enum ctu_can_fd_err_capt_err_pos {
8333c21c530SJan Charvat     ERC_POS_SOF         = 0x0,
8343c21c530SJan Charvat     ERC_POS_ARB         = 0x1,
8353c21c530SJan Charvat     ERC_POS_CTRL        = 0x2,
8363c21c530SJan Charvat     ERC_POS_DATA        = 0x3,
8373c21c530SJan Charvat     ERC_POS_CRC         = 0x4,
8383c21c530SJan Charvat     ERC_POS_ACK         = 0x5,
8393c21c530SJan Charvat     ERC_POS_EOF         = 0x6,
8403c21c530SJan Charvat     ERC_POS_ERR         = 0x7,
8413c21c530SJan Charvat     ERC_POS_OVRL        = 0x8,
8423c21c530SJan Charvat     ERC_POS_OTHER      = 0x1f,
8433c21c530SJan Charvat };
8443c21c530SJan Charvat 
8453c21c530SJan Charvat enum ctu_can_fd_err_capt_err_type {
8463c21c530SJan Charvat     ERC_BIT_ERR        = 0x0,
8473c21c530SJan Charvat     ERC_CRC_ERR        = 0x1,
8483c21c530SJan Charvat     ERC_FRM_ERR        = 0x2,
8493c21c530SJan Charvat     ERC_ACK_ERR        = 0x3,
8503c21c530SJan Charvat     ERC_STUF_ERR       = 0x4,
8513c21c530SJan Charvat };
8523c21c530SJan Charvat 
8533c21c530SJan Charvat enum ctu_can_fd_alc_alc_id_field {
8543c21c530SJan Charvat     ALC_RSVD            = 0x0,
8553c21c530SJan Charvat     ALC_BASE_ID         = 0x1,
8563c21c530SJan Charvat     ALC_SRR_RTR         = 0x2,
8573c21c530SJan Charvat     ALC_IDE             = 0x3,
8583c21c530SJan Charvat     ALC_EXTENSION       = 0x4,
8593c21c530SJan Charvat     ALC_RTR             = 0x5,
8603c21c530SJan Charvat };
8613c21c530SJan Charvat 
8623c21c530SJan Charvat union ctu_can_fd_trv_delay_ssp_cfg {
8633c21c530SJan Charvat     uint32_t u32;
8643c21c530SJan Charvat     struct ctu_can_fd_trv_delay_ssp_cfg_s {
8653c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
8663c21c530SJan Charvat   /* TRV_DELAY */
8673c21c530SJan Charvat         uint32_t trv_delay_value         : 7;
8683c21c530SJan Charvat         uint32_t reserved_15_7           : 9;
8693c21c530SJan Charvat   /* SSP_CFG */
8703c21c530SJan Charvat         uint32_t ssp_offset              : 8;
8713c21c530SJan Charvat         uint32_t ssp_src                 : 2;
8723c21c530SJan Charvat         uint32_t reserved_31_26          : 6;
8733c21c530SJan Charvat #else
8743c21c530SJan Charvat         uint32_t reserved_31_26          : 6;
8753c21c530SJan Charvat         uint32_t ssp_src                 : 2;
8763c21c530SJan Charvat         uint32_t ssp_offset              : 8;
8773c21c530SJan Charvat         uint32_t reserved_15_7           : 9;
8783c21c530SJan Charvat         uint32_t trv_delay_value         : 7;
8793c21c530SJan Charvat #endif
8803c21c530SJan Charvat     } s;
8813c21c530SJan Charvat };
8823c21c530SJan Charvat 
8833c21c530SJan Charvat enum ctu_can_fd_ssp_cfg_ssp_src {
8843c21c530SJan Charvat     SSP_SRC_MEAS_N_OFFSET       = 0x0,
8853c21c530SJan Charvat     SSP_SRC_NO_SSP              = 0x1,
8863c21c530SJan Charvat     SSP_SRC_OFFSET              = 0x2,
8873c21c530SJan Charvat };
8883c21c530SJan Charvat 
8893c21c530SJan Charvat union ctu_can_fd_rx_fr_ctr {
8903c21c530SJan Charvat     uint32_t u32;
8913c21c530SJan Charvat     struct ctu_can_fd_rx_fr_ctr_s {
8923c21c530SJan Charvat   /* RX_FR_CTR */
8933c21c530SJan Charvat         uint32_t rx_fr_ctr_val          : 32;
8943c21c530SJan Charvat     } s;
8953c21c530SJan Charvat };
8963c21c530SJan Charvat 
8973c21c530SJan Charvat union ctu_can_fd_tx_fr_ctr {
8983c21c530SJan Charvat     uint32_t u32;
8993c21c530SJan Charvat     struct ctu_can_fd_tx_fr_ctr_s {
9003c21c530SJan Charvat   /* TX_FR_CTR */
9013c21c530SJan Charvat         uint32_t tx_fr_ctr_val          : 32;
9023c21c530SJan Charvat     } s;
9033c21c530SJan Charvat };
9043c21c530SJan Charvat 
9053c21c530SJan Charvat union ctu_can_fd_debug_register {
9063c21c530SJan Charvat     uint32_t u32;
9073c21c530SJan Charvat     struct ctu_can_fd_debug_register_s {
9083c21c530SJan Charvat #ifdef __LITTLE_ENDIAN_BITFIELD
9093c21c530SJan Charvat   /* DEBUG_REGISTER */
9103c21c530SJan Charvat         uint32_t stuff_count             : 3;
9113c21c530SJan Charvat         uint32_t destuff_count           : 3;
9123c21c530SJan Charvat         uint32_t pc_arb                  : 1;
9133c21c530SJan Charvat         uint32_t pc_con                  : 1;
9143c21c530SJan Charvat         uint32_t pc_dat                  : 1;
9153c21c530SJan Charvat         uint32_t pc_stc                  : 1;
9163c21c530SJan Charvat         uint32_t pc_crc                  : 1;
9173c21c530SJan Charvat         uint32_t pc_crcd                 : 1;
9183c21c530SJan Charvat         uint32_t pc_ack                  : 1;
9193c21c530SJan Charvat         uint32_t pc_ackd                 : 1;
9203c21c530SJan Charvat         uint32_t pc_eof                  : 1;
9213c21c530SJan Charvat         uint32_t pc_int                  : 1;
9223c21c530SJan Charvat         uint32_t pc_susp                 : 1;
9233c21c530SJan Charvat         uint32_t pc_ovr                  : 1;
9243c21c530SJan Charvat         uint32_t pc_sof                  : 1;
9253c21c530SJan Charvat         uint32_t reserved_31_19         : 13;
9263c21c530SJan Charvat #else
9273c21c530SJan Charvat         uint32_t reserved_31_19         : 13;
9283c21c530SJan Charvat         uint32_t pc_sof                  : 1;
9293c21c530SJan Charvat         uint32_t pc_ovr                  : 1;
9303c21c530SJan Charvat         uint32_t pc_susp                 : 1;
9313c21c530SJan Charvat         uint32_t pc_int                  : 1;
9323c21c530SJan Charvat         uint32_t pc_eof                  : 1;
9333c21c530SJan Charvat         uint32_t pc_ackd                 : 1;
9343c21c530SJan Charvat         uint32_t pc_ack                  : 1;
9353c21c530SJan Charvat         uint32_t pc_crcd                 : 1;
9363c21c530SJan Charvat         uint32_t pc_crc                  : 1;
9373c21c530SJan Charvat         uint32_t pc_stc                  : 1;
9383c21c530SJan Charvat         uint32_t pc_dat                  : 1;
9393c21c530SJan Charvat         uint32_t pc_con                  : 1;
9403c21c530SJan Charvat         uint32_t pc_arb                  : 1;
9413c21c530SJan Charvat         uint32_t destuff_count           : 3;
9423c21c530SJan Charvat         uint32_t stuff_count             : 3;
9433c21c530SJan Charvat #endif
9443c21c530SJan Charvat     } s;
9453c21c530SJan Charvat };
9463c21c530SJan Charvat 
9473c21c530SJan Charvat union ctu_can_fd_yolo_reg {
9483c21c530SJan Charvat     uint32_t u32;
9493c21c530SJan Charvat     struct ctu_can_fd_yolo_reg_s {
9503c21c530SJan Charvat   /* YOLO_REG */
9513c21c530SJan Charvat         uint32_t yolo_val               : 32;
9523c21c530SJan Charvat     } s;
9533c21c530SJan Charvat };
9543c21c530SJan Charvat 
9553c21c530SJan Charvat union ctu_can_fd_timestamp_low {
9563c21c530SJan Charvat     uint32_t u32;
9573c21c530SJan Charvat     struct ctu_can_fd_timestamp_low_s {
9583c21c530SJan Charvat   /* TIMESTAMP_LOW */
9593c21c530SJan Charvat         uint32_t timestamp_low          : 32;
9603c21c530SJan Charvat     } s;
9613c21c530SJan Charvat };
9623c21c530SJan Charvat 
9633c21c530SJan Charvat union ctu_can_fd_timestamp_high {
9643c21c530SJan Charvat     uint32_t u32;
9653c21c530SJan Charvat     struct ctu_can_fd_timestamp_high_s {
9663c21c530SJan Charvat   /* TIMESTAMP_HIGH */
9673c21c530SJan Charvat         uint32_t timestamp_high         : 32;
9683c21c530SJan Charvat     } s;
9693c21c530SJan Charvat };
9703c21c530SJan Charvat 
9713c21c530SJan Charvat #endif
972