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