xref: /openbmc/qemu/hw/net/can/ctu_can_fd_frame.h (revision 6a4cff8e1a80bafc4b8fe2bfb10081f4880d1b3b)
1  /* SPDX-License-Identifier: GPL-2.0-or-later */
2  /*******************************************************************************
3   *
4   * CTU CAN FD IP Core
5   *
6   * Copyright (C) 2015-2018 Ondrej Ille <ondrej.ille@gmail.com> FEE CTU
7   * Copyright (C) 2018-2020 Ondrej Ille <ondrej.ille@gmail.com> self-funded
8   * Copyright (C) 2018-2019 Martin Jerabek <martin.jerabek01@gmail.com> FEE CTU
9   * Copyright (C) 2018-2020 Pavel Pisa <pisa@cmp.felk.cvut.cz> FEE CTU/self-funded
10   *
11   * Project advisors:
12   *     Jiri Novak <jnovak@fel.cvut.cz>
13   *     Pavel Pisa <pisa@cmp.felk.cvut.cz>
14   *
15   * Department of Measurement         (http://meas.fel.cvut.cz/)
16   * Faculty of Electrical Engineering (http://www.fel.cvut.cz)
17   * Czech Technical University        (http://www.cvut.cz/)
18   *
19   * This program is free software; you can redistribute it and/or
20   * modify it under the terms of the GNU General Public License
21   * as published by the Free Software Foundation; either version 2
22   * of the License, or (at your option) any later version.
23   *
24   * This program is distributed in the hope that it will be useful,
25   * but WITHOUT ANY WARRANTY; without even the implied warranty of
26   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
27   * GNU General Public License for more details.
28   ******************************************************************************/
29  
30  /* This file is autogenerated, DO NOT EDIT! */
31  
32  #ifndef HW_CAN_CTU_CAN_FD_FRAME_H
33  #define HW_CAN_CTU_CAN_FD_FRAME_H
34  
35  /* CAN_Frame_format memory map */
36  enum ctu_can_fd_can_frame_format {
37      CTU_CAN_FD_FRAME_FORM_W        = 0x0,
38      CTU_CAN_FD_IDENTIFIER_W        = 0x4,
39      CTU_CAN_FD_TIMESTAMP_L_W       = 0x8,
40      CTU_CAN_FD_TIMESTAMP_U_W       = 0xc,
41      CTU_CAN_FD_DATA_1_4_W         = 0x10,
42      CTU_CAN_FD_DATA_5_8_W         = 0x14,
43      CTU_CAN_FD_DATA_61_64_W       = 0x4c,
44  };
45  
46  
47  /* Register descriptions: */
48  union ctu_can_fd_frame_form_w {
49      uint32_t u32;
50      struct ctu_can_fd_frame_form_w_s {
51  #ifdef __LITTLE_ENDIAN_BITFIELD
52    /* FRAME_FORM_W */
53          uint32_t dlc                     : 4;
54          uint32_t reserved_4              : 1;
55          uint32_t rtr                     : 1;
56          uint32_t ide                     : 1;
57          uint32_t fdf                     : 1;
58          uint32_t reserved_8              : 1;
59          uint32_t brs                     : 1;
60          uint32_t esi_rsv                 : 1;
61          uint32_t rwcnt                   : 5;
62          uint32_t reserved_31_16         : 16;
63  #else
64          uint32_t reserved_31_16         : 16;
65          uint32_t rwcnt                   : 5;
66          uint32_t esi_rsv                 : 1;
67          uint32_t brs                     : 1;
68          uint32_t reserved_8              : 1;
69          uint32_t fdf                     : 1;
70          uint32_t ide                     : 1;
71          uint32_t rtr                     : 1;
72          uint32_t reserved_4              : 1;
73          uint32_t dlc                     : 4;
74  #endif
75      } s;
76  };
77  
78  enum ctu_can_fd_frame_form_w_rtr {
79      NO_RTR_FRAME       = 0x0,
80      RTR_FRAME          = 0x1,
81  };
82  
83  enum ctu_can_fd_frame_form_w_ide {
84      BASE           = 0x0,
85      EXTENDED       = 0x1,
86  };
87  
88  enum ctu_can_fd_frame_form_w_fdf {
89      NORMAL_CAN       = 0x0,
90      FD_CAN           = 0x1,
91  };
92  
93  enum ctu_can_fd_frame_form_w_brs {
94      BR_NO_SHIFT       = 0x0,
95      BR_SHIFT          = 0x1,
96  };
97  
98  enum ctu_can_fd_frame_form_w_esi_rsv {
99      ESI_ERR_ACTIVE       = 0x0,
100      ESI_ERR_PASIVE       = 0x1,
101  };
102  
103  union ctu_can_fd_identifier_w {
104      uint32_t u32;
105      struct ctu_can_fd_identifier_w_s {
106  #ifdef __LITTLE_ENDIAN_BITFIELD
107    /* IDENTIFIER_W */
108          uint32_t identifier_ext         : 18;
109          uint32_t identifier_base        : 11;
110          uint32_t reserved_31_29          : 3;
111  #else
112          uint32_t reserved_31_29          : 3;
113          uint32_t identifier_base        : 11;
114          uint32_t identifier_ext         : 18;
115  #endif
116      } s;
117  };
118  
119  union ctu_can_fd_timestamp_l_w {
120      uint32_t u32;
121      struct ctu_can_fd_timestamp_l_w_s {
122    /* TIMESTAMP_L_W */
123          uint32_t time_stamp_31_0        : 32;
124      } s;
125  };
126  
127  union ctu_can_fd_timestamp_u_w {
128      uint32_t u32;
129      struct ctu_can_fd_timestamp_u_w_s {
130    /* TIMESTAMP_U_W */
131          uint32_t timestamp_l_w          : 32;
132      } s;
133  };
134  
135  union ctu_can_fd_data_1_4_w {
136      uint32_t u32;
137      struct ctu_can_fd_data_1_4_w_s {
138  #ifdef __LITTLE_ENDIAN_BITFIELD
139    /* DATA_1_4_W */
140          uint32_t data_1                  : 8;
141          uint32_t data_2                  : 8;
142          uint32_t data_3                  : 8;
143          uint32_t data_4                  : 8;
144  #else
145          uint32_t data_4                  : 8;
146          uint32_t data_3                  : 8;
147          uint32_t data_2                  : 8;
148          uint32_t data_1                  : 8;
149  #endif
150      } s;
151  };
152  
153  union ctu_can_fd_data_5_8_w {
154      uint32_t u32;
155      struct ctu_can_fd_data_5_8_w_s {
156  #ifdef __LITTLE_ENDIAN_BITFIELD
157    /* DATA_5_8_W */
158          uint32_t data_5                  : 8;
159          uint32_t data_6                  : 8;
160          uint32_t data_7                  : 8;
161          uint32_t data_8                  : 8;
162  #else
163          uint32_t data_8                  : 8;
164          uint32_t data_7                  : 8;
165          uint32_t data_6                  : 8;
166          uint32_t data_5                  : 8;
167  #endif
168      } s;
169  };
170  
171  union ctu_can_fd_data_61_64_w {
172      uint32_t u32;
173      struct ctu_can_fd_data_61_64_w_s {
174  #ifdef __LITTLE_ENDIAN_BITFIELD
175    /* DATA_61_64_W */
176          uint32_t data_61                 : 8;
177          uint32_t data_62                 : 8;
178          uint32_t data_63                 : 8;
179          uint32_t data_64                 : 8;
180  #else
181          uint32_t data_64                 : 8;
182          uint32_t data_63                 : 8;
183          uint32_t data_62                 : 8;
184          uint32_t data_61                 : 8;
185  #endif
186      } s;
187  };
188  
189  #endif
190