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