• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-2023 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 
9 #ifndef HPM_LINV2_H
10 #define HPM_LINV2_H
11 
12 typedef struct {
13     union {
14         __RW uint32_t DATA[2];                 /* 0x0 - 0x4: data byte */
15         __RW uint8_t  DATA_BYTE[8];            /* 0x0 - 0x7:  */
16     };
17     __RW uint32_t DATA_LEN_ID;                 /* 0x8: data length and ID register */
18     __RW uint32_t CONTROL_STATUS;              /* 0xC: control and status register */
19     __RW uint32_t TIMING_CONTROL;              /* 0x10: timing control register */
20     __RW uint32_t DMA_CONTROL;                 /* 0x14: dma control register */
21 } LINV2_Type;
22 
23 
24 /* Bitfield definition for register: DATA0 */
25 /*
26  * DATA (RW)
27  *
28  * data
29  */
30 #define LINV2_DATA_DATA_MASK (0xFFFFFFFFUL)
31 #define LINV2_DATA_DATA_SHIFT (0U)
32 #define LINV2_DATA_DATA_SET(x) (((uint32_t)(x) << LINV2_DATA_DATA_SHIFT) & LINV2_DATA_DATA_MASK)
33 #define LINV2_DATA_DATA_GET(x) (((uint32_t)(x) & LINV2_DATA_DATA_MASK) >> LINV2_DATA_DATA_SHIFT)
34 
35 /* Bitfield definition for register: DATA_BYTE0 */
36 /*
37  * DATA_BYTE (RW)
38  *
39  * data byte
40  */
41 #define LINV2_DATA_BYTE_DATA_BYTE_MASK (0xFFU)
42 #define LINV2_DATA_BYTE_DATA_BYTE_SHIFT (0U)
43 #define LINV2_DATA_BYTE_DATA_BYTE_SET(x) (((uint8_t)(x) << LINV2_DATA_BYTE_DATA_BYTE_SHIFT) & LINV2_DATA_BYTE_DATA_BYTE_MASK)
44 #define LINV2_DATA_BYTE_DATA_BYTE_GET(x) (((uint8_t)(x) & LINV2_DATA_BYTE_DATA_BYTE_MASK) >> LINV2_DATA_BYTE_DATA_BYTE_SHIFT)
45 
46 /* Bitfield definition for register: DATA_LEN_ID */
47 /*
48  * CHECKSUM (RO)
49  *
50  */
51 #define LINV2_DATA_LEN_ID_CHECKSUM_MASK (0xFF0000UL)
52 #define LINV2_DATA_LEN_ID_CHECKSUM_SHIFT (16U)
53 #define LINV2_DATA_LEN_ID_CHECKSUM_GET(x) (((uint32_t)(x) & LINV2_DATA_LEN_ID_CHECKSUM_MASK) >> LINV2_DATA_LEN_ID_CHECKSUM_SHIFT)
54 
55 /*
56  * ID_PARITY (RO)
57  *
58  */
59 #define LINV2_DATA_LEN_ID_ID_PARITY_MASK (0xC000U)
60 #define LINV2_DATA_LEN_ID_ID_PARITY_SHIFT (14U)
61 #define LINV2_DATA_LEN_ID_ID_PARITY_GET(x) (((uint32_t)(x) & LINV2_DATA_LEN_ID_ID_PARITY_MASK) >> LINV2_DATA_LEN_ID_ID_PARITY_SHIFT)
62 
63 /*
64  * ID (RW)
65  *
66  * ID register
67  */
68 #define LINV2_DATA_LEN_ID_ID_MASK (0x3F00U)
69 #define LINV2_DATA_LEN_ID_ID_SHIFT (8U)
70 #define LINV2_DATA_LEN_ID_ID_SET(x) (((uint32_t)(x) << LINV2_DATA_LEN_ID_ID_SHIFT) & LINV2_DATA_LEN_ID_ID_MASK)
71 #define LINV2_DATA_LEN_ID_ID_GET(x) (((uint32_t)(x) & LINV2_DATA_LEN_ID_ID_MASK) >> LINV2_DATA_LEN_ID_ID_SHIFT)
72 
73 /*
74  * ENH_CHECK (RW)
75  *
76  * 1:enhance check mode 0:classical check mode
77  */
78 #define LINV2_DATA_LEN_ID_ENH_CHECK_MASK (0x80U)
79 #define LINV2_DATA_LEN_ID_ENH_CHECK_SHIFT (7U)
80 #define LINV2_DATA_LEN_ID_ENH_CHECK_SET(x) (((uint32_t)(x) << LINV2_DATA_LEN_ID_ENH_CHECK_SHIFT) & LINV2_DATA_LEN_ID_ENH_CHECK_MASK)
81 #define LINV2_DATA_LEN_ID_ENH_CHECK_GET(x) (((uint32_t)(x) & LINV2_DATA_LEN_ID_ENH_CHECK_MASK) >> LINV2_DATA_LEN_ID_ENH_CHECK_SHIFT)
82 
83 /*
84  * DATA_LEN (RW)
85  *
86  * payload data length control register。The data length will decoded from ID[5:4] when all 1 is configured: 00-2 01-2 10-4 11-8
87  */
88 #define LINV2_DATA_LEN_ID_DATA_LEN_MASK (0xFU)
89 #define LINV2_DATA_LEN_ID_DATA_LEN_SHIFT (0U)
90 #define LINV2_DATA_LEN_ID_DATA_LEN_SET(x) (((uint32_t)(x) << LINV2_DATA_LEN_ID_DATA_LEN_SHIFT) & LINV2_DATA_LEN_ID_DATA_LEN_MASK)
91 #define LINV2_DATA_LEN_ID_DATA_LEN_GET(x) (((uint32_t)(x) & LINV2_DATA_LEN_ID_DATA_LEN_MASK) >> LINV2_DATA_LEN_ID_DATA_LEN_SHIFT)
92 
93 /* Bitfield definition for register: CONTROL_STATUS */
94 /*
95  * BREAK_ERR_DIS (RW)
96  *
97  */
98 #define LINV2_CONTROL_STATUS_BREAK_ERR_DIS_MASK (0x200000UL)
99 #define LINV2_CONTROL_STATUS_BREAK_ERR_DIS_SHIFT (21U)
100 #define LINV2_CONTROL_STATUS_BREAK_ERR_DIS_SET(x) (((uint32_t)(x) << LINV2_CONTROL_STATUS_BREAK_ERR_DIS_SHIFT) & LINV2_CONTROL_STATUS_BREAK_ERR_DIS_MASK)
101 #define LINV2_CONTROL_STATUS_BREAK_ERR_DIS_GET(x) (((uint32_t)(x) & LINV2_CONTROL_STATUS_BREAK_ERR_DIS_MASK) >> LINV2_CONTROL_STATUS_BREAK_ERR_DIS_SHIFT)
102 
103 /*
104  * BREAK_ERR (RO)
105  *
106  */
107 #define LINV2_CONTROL_STATUS_BREAK_ERR_MASK (0x100000UL)
108 #define LINV2_CONTROL_STATUS_BREAK_ERR_SHIFT (20U)
109 #define LINV2_CONTROL_STATUS_BREAK_ERR_GET(x) (((uint32_t)(x) & LINV2_CONTROL_STATUS_BREAK_ERR_MASK) >> LINV2_CONTROL_STATUS_BREAK_ERR_SHIFT)
110 
111 /*
112  * PARITY_ERROR (RO)
113  *
114  * slave only. identifier parity error
115  */
116 #define LINV2_CONTROL_STATUS_PARITY_ERROR_MASK (0x80000UL)
117 #define LINV2_CONTROL_STATUS_PARITY_ERROR_SHIFT (19U)
118 #define LINV2_CONTROL_STATUS_PARITY_ERROR_GET(x) (((uint32_t)(x) & LINV2_CONTROL_STATUS_PARITY_ERROR_MASK) >> LINV2_CONTROL_STATUS_PARITY_ERROR_SHIFT)
119 
120 /*
121  * TIME_OUT (RO)
122  *
123  * timeout error. The master detects a timeout error if it is expecting data from the bus but no slave does respond. The slave detects a timeout error if it is requesting a data acknowledge to the host controller. The slave detects a timeout if it has transmitted a wakeup signal and it detects no sync field within 150ms
124  */
125 #define LINV2_CONTROL_STATUS_TIME_OUT_MASK (0x40000UL)
126 #define LINV2_CONTROL_STATUS_TIME_OUT_SHIFT (18U)
127 #define LINV2_CONTROL_STATUS_TIME_OUT_GET(x) (((uint32_t)(x) & LINV2_CONTROL_STATUS_TIME_OUT_MASK) >> LINV2_CONTROL_STATUS_TIME_OUT_SHIFT)
128 
129 /*
130  * CHK_ERROR (RO)
131  *
132  * checksum error
133  */
134 #define LINV2_CONTROL_STATUS_CHK_ERROR_MASK (0x20000UL)
135 #define LINV2_CONTROL_STATUS_CHK_ERROR_SHIFT (17U)
136 #define LINV2_CONTROL_STATUS_CHK_ERROR_GET(x) (((uint32_t)(x) & LINV2_CONTROL_STATUS_CHK_ERROR_MASK) >> LINV2_CONTROL_STATUS_CHK_ERROR_SHIFT)
137 
138 /*
139  * BIT_ERROR (RO)
140  *
141  * bit error
142  */
143 #define LINV2_CONTROL_STATUS_BIT_ERROR_MASK (0x10000UL)
144 #define LINV2_CONTROL_STATUS_BIT_ERROR_SHIFT (16U)
145 #define LINV2_CONTROL_STATUS_BIT_ERROR_GET(x) (((uint32_t)(x) & LINV2_CONTROL_STATUS_BIT_ERROR_MASK) >> LINV2_CONTROL_STATUS_BIT_ERROR_SHIFT)
146 
147 /*
148  * LIN_ACTIVE (RO)
149  *
150  * The bit indicates whether the LIN bus is active or not
151  */
152 #define LINV2_CONTROL_STATUS_LIN_ACTIVE_MASK (0x8000U)
153 #define LINV2_CONTROL_STATUS_LIN_ACTIVE_SHIFT (15U)
154 #define LINV2_CONTROL_STATUS_LIN_ACTIVE_GET(x) (((uint32_t)(x) & LINV2_CONTROL_STATUS_LIN_ACTIVE_MASK) >> LINV2_CONTROL_STATUS_LIN_ACTIVE_SHIFT)
155 
156 /*
157  * BUS_IDLE_TIMEOUT (RO)
158  *
159  * slave only. This bit is set by LIN core if bit sleep  is not set and no bus activity is detected for 4s
160  */
161 #define LINV2_CONTROL_STATUS_BUS_IDLE_TIMEOUT_MASK (0x4000U)
162 #define LINV2_CONTROL_STATUS_BUS_IDLE_TIMEOUT_SHIFT (14U)
163 #define LINV2_CONTROL_STATUS_BUS_IDLE_TIMEOUT_GET(x) (((uint32_t)(x) & LINV2_CONTROL_STATUS_BUS_IDLE_TIMEOUT_MASK) >> LINV2_CONTROL_STATUS_BUS_IDLE_TIMEOUT_SHIFT)
164 
165 /*
166  * ABORTED (RO)
167  *
168  * slave only. This bit is set by LIN core slave if a transmission is aborted after the bneginning of the data field due to a timeout or bit error.
169  */
170 #define LINV2_CONTROL_STATUS_ABORTED_MASK (0x2000U)
171 #define LINV2_CONTROL_STATUS_ABORTED_SHIFT (13U)
172 #define LINV2_CONTROL_STATUS_ABORTED_GET(x) (((uint32_t)(x) & LINV2_CONTROL_STATUS_ABORTED_MASK) >> LINV2_CONTROL_STATUS_ABORTED_SHIFT)
173 
174 /*
175  * DATA_REQ (RO)
176  *
177  * slave only. Sets after receiving the identifier and requests an interrupt to the host controller.
178  */
179 #define LINV2_CONTROL_STATUS_DATA_REQ_MASK (0x1000U)
180 #define LINV2_CONTROL_STATUS_DATA_REQ_SHIFT (12U)
181 #define LINV2_CONTROL_STATUS_DATA_REQ_GET(x) (((uint32_t)(x) & LINV2_CONTROL_STATUS_DATA_REQ_MASK) >> LINV2_CONTROL_STATUS_DATA_REQ_SHIFT)
182 
183 /*
184  * INT (RO)
185  *
186  * set when request an interrupt. Reset by reset_int
187  */
188 #define LINV2_CONTROL_STATUS_INT_MASK (0x800U)
189 #define LINV2_CONTROL_STATUS_INT_SHIFT (11U)
190 #define LINV2_CONTROL_STATUS_INT_GET(x) (((uint32_t)(x) & LINV2_CONTROL_STATUS_INT_MASK) >> LINV2_CONTROL_STATUS_INT_SHIFT)
191 
192 /*
193  * ERROR (RO)
194  *
195  * set when detecte an error, clear by reset_error
196  */
197 #define LINV2_CONTROL_STATUS_ERROR_MASK (0x400U)
198 #define LINV2_CONTROL_STATUS_ERROR_SHIFT (10U)
199 #define LINV2_CONTROL_STATUS_ERROR_GET(x) (((uint32_t)(x) & LINV2_CONTROL_STATUS_ERROR_MASK) >> LINV2_CONTROL_STATUS_ERROR_SHIFT)
200 
201 /*
202  * WAKEUP (RO)
203  *
204  * set when transmitting a wakeup signal or when received a wakeup signal. Clear when reset_error bit is 1
205  */
206 #define LINV2_CONTROL_STATUS_WAKEUP_MASK (0x200U)
207 #define LINV2_CONTROL_STATUS_WAKEUP_SHIFT (9U)
208 #define LINV2_CONTROL_STATUS_WAKEUP_GET(x) (((uint32_t)(x) & LINV2_CONTROL_STATUS_WAKEUP_MASK) >> LINV2_CONTROL_STATUS_WAKEUP_SHIFT)
209 
210 /*
211  * COMPLETE (RO)
212  *
213  * set after a transmission has been successful finished and it will reset at the start of a transmission.
214  */
215 #define LINV2_CONTROL_STATUS_COMPLETE_MASK (0x100U)
216 #define LINV2_CONTROL_STATUS_COMPLETE_SHIFT (8U)
217 #define LINV2_CONTROL_STATUS_COMPLETE_GET(x) (((uint32_t)(x) & LINV2_CONTROL_STATUS_COMPLETE_MASK) >> LINV2_CONTROL_STATUS_COMPLETE_SHIFT)
218 
219 /*
220  * STOP (WO)
221  *
222  * slave only. Write 1 when the Host determin do not response to the data request according to a unkown ID
223  */
224 #define LINV2_CONTROL_STATUS_STOP_MASK (0x80U)
225 #define LINV2_CONTROL_STATUS_STOP_SHIFT (7U)
226 #define LINV2_CONTROL_STATUS_STOP_SET(x) (((uint32_t)(x) << LINV2_CONTROL_STATUS_STOP_SHIFT) & LINV2_CONTROL_STATUS_STOP_MASK)
227 #define LINV2_CONTROL_STATUS_STOP_GET(x) (((uint32_t)(x) & LINV2_CONTROL_STATUS_STOP_MASK) >> LINV2_CONTROL_STATUS_STOP_SHIFT)
228 
229 /*
230  * SLEEP (RW)
231  *
232  * The bit is used by the LIN core to determine whether the LIN bus is in sleep mode or not. Set this bit after sending or receiving a Sleep Mode frame or if a bus idle timeout interrupt is requested or if after a wakeup request there is no response from the master and a timeout is signaled. The bit will be automatically reset by the LIN core.
233  */
234 #define LINV2_CONTROL_STATUS_SLEEP_MASK (0x40U)
235 #define LINV2_CONTROL_STATUS_SLEEP_SHIFT (6U)
236 #define LINV2_CONTROL_STATUS_SLEEP_SET(x) (((uint32_t)(x) << LINV2_CONTROL_STATUS_SLEEP_SHIFT) & LINV2_CONTROL_STATUS_SLEEP_MASK)
237 #define LINV2_CONTROL_STATUS_SLEEP_GET(x) (((uint32_t)(x) & LINV2_CONTROL_STATUS_SLEEP_MASK) >> LINV2_CONTROL_STATUS_SLEEP_SHIFT)
238 
239 /*
240  * TRANSMIT (RW)
241  *
242  * 1: transmit operation 0: receive operation
243  */
244 #define LINV2_CONTROL_STATUS_TRANSMIT_MASK (0x20U)
245 #define LINV2_CONTROL_STATUS_TRANSMIT_SHIFT (5U)
246 #define LINV2_CONTROL_STATUS_TRANSMIT_SET(x) (((uint32_t)(x) << LINV2_CONTROL_STATUS_TRANSMIT_SHIFT) & LINV2_CONTROL_STATUS_TRANSMIT_MASK)
247 #define LINV2_CONTROL_STATUS_TRANSMIT_GET(x) (((uint32_t)(x) & LINV2_CONTROL_STATUS_TRANSMIT_MASK) >> LINV2_CONTROL_STATUS_TRANSMIT_SHIFT)
248 
249 /*
250  * DATA_ACK (RW)
251  *
252  * slave only. Write 1 after handling a data request interrupt
253  */
254 #define LINV2_CONTROL_STATUS_DATA_ACK_MASK (0x10U)
255 #define LINV2_CONTROL_STATUS_DATA_ACK_SHIFT (4U)
256 #define LINV2_CONTROL_STATUS_DATA_ACK_SET(x) (((uint32_t)(x) << LINV2_CONTROL_STATUS_DATA_ACK_SHIFT) & LINV2_CONTROL_STATUS_DATA_ACK_MASK)
257 #define LINV2_CONTROL_STATUS_DATA_ACK_GET(x) (((uint32_t)(x) & LINV2_CONTROL_STATUS_DATA_ACK_MASK) >> LINV2_CONTROL_STATUS_DATA_ACK_SHIFT)
258 
259 /*
260  * RESET_INT (WO)
261  *
262  * set 1 will clear the int register
263  */
264 #define LINV2_CONTROL_STATUS_RESET_INT_MASK (0x8U)
265 #define LINV2_CONTROL_STATUS_RESET_INT_SHIFT (3U)
266 #define LINV2_CONTROL_STATUS_RESET_INT_SET(x) (((uint32_t)(x) << LINV2_CONTROL_STATUS_RESET_INT_SHIFT) & LINV2_CONTROL_STATUS_RESET_INT_MASK)
267 #define LINV2_CONTROL_STATUS_RESET_INT_GET(x) (((uint32_t)(x) & LINV2_CONTROL_STATUS_RESET_INT_MASK) >> LINV2_CONTROL_STATUS_RESET_INT_SHIFT)
268 
269 /*
270  * RESET_ERROR (WO)
271  *
272  * set 1 will clear the error register, and also the timeout/complete/wakeup register
273  */
274 #define LINV2_CONTROL_STATUS_RESET_ERROR_MASK (0x4U)
275 #define LINV2_CONTROL_STATUS_RESET_ERROR_SHIFT (2U)
276 #define LINV2_CONTROL_STATUS_RESET_ERROR_SET(x) (((uint32_t)(x) << LINV2_CONTROL_STATUS_RESET_ERROR_SHIFT) & LINV2_CONTROL_STATUS_RESET_ERROR_MASK)
277 #define LINV2_CONTROL_STATUS_RESET_ERROR_GET(x) (((uint32_t)(x) & LINV2_CONTROL_STATUS_RESET_ERROR_MASK) >> LINV2_CONTROL_STATUS_RESET_ERROR_SHIFT)
278 
279 /*
280  * WAKEUP_REQ (RW)
281  *
282  * set 1 will make LIN bus exit sleep mode,  the bit auto cleared after a wakeup signal has been complete
283  */
284 #define LINV2_CONTROL_STATUS_WAKEUP_REQ_MASK (0x2U)
285 #define LINV2_CONTROL_STATUS_WAKEUP_REQ_SHIFT (1U)
286 #define LINV2_CONTROL_STATUS_WAKEUP_REQ_SET(x) (((uint32_t)(x) << LINV2_CONTROL_STATUS_WAKEUP_REQ_SHIFT) & LINV2_CONTROL_STATUS_WAKEUP_REQ_MASK)
287 #define LINV2_CONTROL_STATUS_WAKEUP_REQ_GET(x) (((uint32_t)(x) & LINV2_CONTROL_STATUS_WAKEUP_REQ_MASK) >> LINV2_CONTROL_STATUS_WAKEUP_REQ_SHIFT)
288 
289 /*
290  * START_REQ (RW)
291  *
292  * master only. Set 1 will start lin transmission, the bit will be auto cleared when an error occur or the trasmission complete
293  */
294 #define LINV2_CONTROL_STATUS_START_REQ_MASK (0x1U)
295 #define LINV2_CONTROL_STATUS_START_REQ_SHIFT (0U)
296 #define LINV2_CONTROL_STATUS_START_REQ_SET(x) (((uint32_t)(x) << LINV2_CONTROL_STATUS_START_REQ_SHIFT) & LINV2_CONTROL_STATUS_START_REQ_MASK)
297 #define LINV2_CONTROL_STATUS_START_REQ_GET(x) (((uint32_t)(x) & LINV2_CONTROL_STATUS_START_REQ_MASK) >> LINV2_CONTROL_STATUS_START_REQ_SHIFT)
298 
299 /* Bitfield definition for register: TIMING_CONTROL */
300 /*
301  * WAKE_LEN (RW)
302  *
303  */
304 #define LINV2_TIMING_CONTROL_WAKE_LEN_MASK (0x38000000UL)
305 #define LINV2_TIMING_CONTROL_WAKE_LEN_SHIFT (27U)
306 #define LINV2_TIMING_CONTROL_WAKE_LEN_SET(x) (((uint32_t)(x) << LINV2_TIMING_CONTROL_WAKE_LEN_SHIFT) & LINV2_TIMING_CONTROL_WAKE_LEN_MASK)
307 #define LINV2_TIMING_CONTROL_WAKE_LEN_GET(x) (((uint32_t)(x) & LINV2_TIMING_CONTROL_WAKE_LEN_MASK) >> LINV2_TIMING_CONTROL_WAKE_LEN_SHIFT)
308 
309 /*
310  * BRK_LEN (RW)
311  *
312  */
313 #define LINV2_TIMING_CONTROL_BRK_LEN_MASK (0x7000000UL)
314 #define LINV2_TIMING_CONTROL_BRK_LEN_SHIFT (24U)
315 #define LINV2_TIMING_CONTROL_BRK_LEN_SET(x) (((uint32_t)(x) << LINV2_TIMING_CONTROL_BRK_LEN_SHIFT) & LINV2_TIMING_CONTROL_BRK_LEN_MASK)
316 #define LINV2_TIMING_CONTROL_BRK_LEN_GET(x) (((uint32_t)(x) & LINV2_TIMING_CONTROL_BRK_LEN_MASK) >> LINV2_TIMING_CONTROL_BRK_LEN_SHIFT)
317 
318 /*
319  * LINBUSDISABLE (RW)
320  *
321  * 1:lin rx is disable
322  */
323 #define LINV2_TIMING_CONTROL_LINBUSDISABLE_MASK (0x400000UL)
324 #define LINV2_TIMING_CONTROL_LINBUSDISABLE_SHIFT (22U)
325 #define LINV2_TIMING_CONTROL_LINBUSDISABLE_SET(x) (((uint32_t)(x) << LINV2_TIMING_CONTROL_LINBUSDISABLE_SHIFT) & LINV2_TIMING_CONTROL_LINBUSDISABLE_MASK)
326 #define LINV2_TIMING_CONTROL_LINBUSDISABLE_GET(x) (((uint32_t)(x) & LINV2_TIMING_CONTROL_LINBUSDISABLE_MASK) >> LINV2_TIMING_CONTROL_LINBUSDISABLE_SHIFT)
327 
328 /*
329  * LIN_INITIAL (RW)
330  *
331  * 1:initial lin controller
332  */
333 #define LINV2_TIMING_CONTROL_LIN_INITIAL_MASK (0x200000UL)
334 #define LINV2_TIMING_CONTROL_LIN_INITIAL_SHIFT (21U)
335 #define LINV2_TIMING_CONTROL_LIN_INITIAL_SET(x) (((uint32_t)(x) << LINV2_TIMING_CONTROL_LIN_INITIAL_SHIFT) & LINV2_TIMING_CONTROL_LIN_INITIAL_MASK)
336 #define LINV2_TIMING_CONTROL_LIN_INITIAL_GET(x) (((uint32_t)(x) & LINV2_TIMING_CONTROL_LIN_INITIAL_MASK) >> LINV2_TIMING_CONTROL_LIN_INITIAL_SHIFT)
337 
338 /*
339  * MASTER_MODE (RW)
340  *
341  * 1:master mode
342  */
343 #define LINV2_TIMING_CONTROL_MASTER_MODE_MASK (0x100000UL)
344 #define LINV2_TIMING_CONTROL_MASTER_MODE_SHIFT (20U)
345 #define LINV2_TIMING_CONTROL_MASTER_MODE_SET(x) (((uint32_t)(x) << LINV2_TIMING_CONTROL_MASTER_MODE_SHIFT) & LINV2_TIMING_CONTROL_MASTER_MODE_MASK)
346 #define LINV2_TIMING_CONTROL_MASTER_MODE_GET(x) (((uint32_t)(x) & LINV2_TIMING_CONTROL_MASTER_MODE_MASK) >> LINV2_TIMING_CONTROL_MASTER_MODE_SHIFT)
347 
348 /*
349  * BUS_INACTIVE_TIME (RW)
350  *
351  * slave only. LIN bus idle timeout register: 00-4s  01-6s  10-8s  11-10s
352  */
353 #define LINV2_TIMING_CONTROL_BUS_INACTIVE_TIME_MASK (0xC0000UL)
354 #define LINV2_TIMING_CONTROL_BUS_INACTIVE_TIME_SHIFT (18U)
355 #define LINV2_TIMING_CONTROL_BUS_INACTIVE_TIME_SET(x) (((uint32_t)(x) << LINV2_TIMING_CONTROL_BUS_INACTIVE_TIME_SHIFT) & LINV2_TIMING_CONTROL_BUS_INACTIVE_TIME_MASK)
356 #define LINV2_TIMING_CONTROL_BUS_INACTIVE_TIME_GET(x) (((uint32_t)(x) & LINV2_TIMING_CONTROL_BUS_INACTIVE_TIME_MASK) >> LINV2_TIMING_CONTROL_BUS_INACTIVE_TIME_SHIFT)
357 
358 /*
359  * WUP_REPEAT_TIME (RW)
360  *
361  * slave only. wakeup repeat interval time  00-180ms  01-200ms 10-220ms 11-240ms
362  */
363 #define LINV2_TIMING_CONTROL_WUP_REPEAT_TIME_MASK (0x30000UL)
364 #define LINV2_TIMING_CONTROL_WUP_REPEAT_TIME_SHIFT (16U)
365 #define LINV2_TIMING_CONTROL_WUP_REPEAT_TIME_SET(x) (((uint32_t)(x) << LINV2_TIMING_CONTROL_WUP_REPEAT_TIME_SHIFT) & LINV2_TIMING_CONTROL_WUP_REPEAT_TIME_MASK)
366 #define LINV2_TIMING_CONTROL_WUP_REPEAT_TIME_GET(x) (((uint32_t)(x) & LINV2_TIMING_CONTROL_WUP_REPEAT_TIME_MASK) >> LINV2_TIMING_CONTROL_WUP_REPEAT_TIME_SHIFT)
367 
368 /*
369  * PRESCL (RW)
370  *
371  * prescl register
372  */
373 #define LINV2_TIMING_CONTROL_PRESCL_MASK (0xC000U)
374 #define LINV2_TIMING_CONTROL_PRESCL_SHIFT (14U)
375 #define LINV2_TIMING_CONTROL_PRESCL_SET(x) (((uint32_t)(x) << LINV2_TIMING_CONTROL_PRESCL_SHIFT) & LINV2_TIMING_CONTROL_PRESCL_MASK)
376 #define LINV2_TIMING_CONTROL_PRESCL_GET(x) (((uint32_t)(x) & LINV2_TIMING_CONTROL_PRESCL_MASK) >> LINV2_TIMING_CONTROL_PRESCL_SHIFT)
377 
378 /*
379  * BT_MUL (RW)
380  *
381  * bt_mul register
382  */
383 #define LINV2_TIMING_CONTROL_BT_MUL_MASK (0x3E00U)
384 #define LINV2_TIMING_CONTROL_BT_MUL_SHIFT (9U)
385 #define LINV2_TIMING_CONTROL_BT_MUL_SET(x) (((uint32_t)(x) << LINV2_TIMING_CONTROL_BT_MUL_SHIFT) & LINV2_TIMING_CONTROL_BT_MUL_MASK)
386 #define LINV2_TIMING_CONTROL_BT_MUL_GET(x) (((uint32_t)(x) & LINV2_TIMING_CONTROL_BT_MUL_MASK) >> LINV2_TIMING_CONTROL_BT_MUL_SHIFT)
387 
388 /*
389  * BT_DIV (RW)
390  *
391  * bt_div register
392  */
393 #define LINV2_TIMING_CONTROL_BT_DIV_MASK (0x1FFU)
394 #define LINV2_TIMING_CONTROL_BT_DIV_SHIFT (0U)
395 #define LINV2_TIMING_CONTROL_BT_DIV_SET(x) (((uint32_t)(x) << LINV2_TIMING_CONTROL_BT_DIV_SHIFT) & LINV2_TIMING_CONTROL_BT_DIV_MASK)
396 #define LINV2_TIMING_CONTROL_BT_DIV_GET(x) (((uint32_t)(x) & LINV2_TIMING_CONTROL_BT_DIV_MASK) >> LINV2_TIMING_CONTROL_BT_DIV_SHIFT)
397 
398 /* Bitfield definition for register: DMA_CONTROL */
399 /*
400  * DMA_REQ_ENH_CHK (RW)
401  *
402  * payload data checksum type for dma operation
403  */
404 #define LINV2_DMA_CONTROL_DMA_REQ_ENH_CHK_MASK (0x1000U)
405 #define LINV2_DMA_CONTROL_DMA_REQ_ENH_CHK_SHIFT (12U)
406 #define LINV2_DMA_CONTROL_DMA_REQ_ENH_CHK_SET(x) (((uint32_t)(x) << LINV2_DMA_CONTROL_DMA_REQ_ENH_CHK_SHIFT) & LINV2_DMA_CONTROL_DMA_REQ_ENH_CHK_MASK)
407 #define LINV2_DMA_CONTROL_DMA_REQ_ENH_CHK_GET(x) (((uint32_t)(x) & LINV2_DMA_CONTROL_DMA_REQ_ENH_CHK_MASK) >> LINV2_DMA_CONTROL_DMA_REQ_ENH_CHK_SHIFT)
408 
409 /*
410  * DMA_REQ_LEN (RW)
411  *
412  * paylaod length for dma request
413  */
414 #define LINV2_DMA_CONTROL_DMA_REQ_LEN_MASK (0xF00U)
415 #define LINV2_DMA_CONTROL_DMA_REQ_LEN_SHIFT (8U)
416 #define LINV2_DMA_CONTROL_DMA_REQ_LEN_SET(x) (((uint32_t)(x) << LINV2_DMA_CONTROL_DMA_REQ_LEN_SHIFT) & LINV2_DMA_CONTROL_DMA_REQ_LEN_MASK)
417 #define LINV2_DMA_CONTROL_DMA_REQ_LEN_GET(x) (((uint32_t)(x) & LINV2_DMA_CONTROL_DMA_REQ_LEN_MASK) >> LINV2_DMA_CONTROL_DMA_REQ_LEN_SHIFT)
418 
419 /*
420  * DMA_REQ_ID_TYPE (RW)
421  *
422  * 1:transmite  0:receive
423  */
424 #define LINV2_DMA_CONTROL_DMA_REQ_ID_TYPE_MASK (0x80U)
425 #define LINV2_DMA_CONTROL_DMA_REQ_ID_TYPE_SHIFT (7U)
426 #define LINV2_DMA_CONTROL_DMA_REQ_ID_TYPE_SET(x) (((uint32_t)(x) << LINV2_DMA_CONTROL_DMA_REQ_ID_TYPE_SHIFT) & LINV2_DMA_CONTROL_DMA_REQ_ID_TYPE_MASK)
427 #define LINV2_DMA_CONTROL_DMA_REQ_ID_TYPE_GET(x) (((uint32_t)(x) & LINV2_DMA_CONTROL_DMA_REQ_ID_TYPE_MASK) >> LINV2_DMA_CONTROL_DMA_REQ_ID_TYPE_SHIFT)
428 
429 /*
430  * DMA_REQ_ID (RW)
431  *
432  * dma_req_id register
433  */
434 #define LINV2_DMA_CONTROL_DMA_REQ_ID_MASK (0x7EU)
435 #define LINV2_DMA_CONTROL_DMA_REQ_ID_SHIFT (1U)
436 #define LINV2_DMA_CONTROL_DMA_REQ_ID_SET(x) (((uint32_t)(x) << LINV2_DMA_CONTROL_DMA_REQ_ID_SHIFT) & LINV2_DMA_CONTROL_DMA_REQ_ID_MASK)
437 #define LINV2_DMA_CONTROL_DMA_REQ_ID_GET(x) (((uint32_t)(x) & LINV2_DMA_CONTROL_DMA_REQ_ID_MASK) >> LINV2_DMA_CONTROL_DMA_REQ_ID_SHIFT)
438 
439 /*
440  * DMA_REQ_ENABLE (RW)
441  *
442  * slave mode only. 1: enable dma request for data request ID equal dma_req_id
443  */
444 #define LINV2_DMA_CONTROL_DMA_REQ_ENABLE_MASK (0x1U)
445 #define LINV2_DMA_CONTROL_DMA_REQ_ENABLE_SHIFT (0U)
446 #define LINV2_DMA_CONTROL_DMA_REQ_ENABLE_SET(x) (((uint32_t)(x) << LINV2_DMA_CONTROL_DMA_REQ_ENABLE_SHIFT) & LINV2_DMA_CONTROL_DMA_REQ_ENABLE_MASK)
447 #define LINV2_DMA_CONTROL_DMA_REQ_ENABLE_GET(x) (((uint32_t)(x) & LINV2_DMA_CONTROL_DMA_REQ_ENABLE_MASK) >> LINV2_DMA_CONTROL_DMA_REQ_ENABLE_SHIFT)
448 
449 
450 
451 /* DATA register group index macro definition */
452 #define LINV2_DATA_DATA0 (0UL)
453 #define LINV2_DATA_DATA1 (1UL)
454 
455 /* DATA_BYTE register group index macro definition */
456 #define LINV2_DATA_BYTE_DATA_BYTE0 (0UL)
457 #define LINV2_DATA_BYTE_DATA_BYTE1 (1UL)
458 #define LINV2_DATA_BYTE_DATA_BYTE2 (2UL)
459 #define LINV2_DATA_BYTE_DATA_BYTE3 (3UL)
460 #define LINV2_DATA_BYTE_DATA_BYTE4 (4UL)
461 #define LINV2_DATA_BYTE_DATA_BYTE5 (5UL)
462 #define LINV2_DATA_BYTE_DATA_BYTE6 (6UL)
463 #define LINV2_DATA_BYTE_DATA_BYTE7 (7UL)
464 
465 
466 #endif /* HPM_LINV2_H */
467