1 /*
2  * Copyright (c) 2013-2016 ARM Limited. All rights reserved.
3  * Copyright (c) 2016, Freescale Semiconductor, Inc. Not a Contribution.
4  * Copyright 2016-2017,2020,2021,2024 NXP. Not a Contribution.
5  *
6  * SPDX-License-Identifier: Apache-2.0
7  *
8  * Licensed under the Apache License, Version 2.0 (the License); you may
9  * not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an AS IS BASIS, WITHOUT
16  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  */
20 
21 #include "fsl_lpuart_cmsis.h"
22 
23 /* Component ID definition, used by tools. */
24 #ifndef FSL_COMPONENT_ID
25 #define FSL_COMPONENT_ID "platform.drivers.lpuart_cmsis"
26 #endif
27 
28 /* Re-mapping for LPUART & UART indexing. */
29 #if (FSL_FEATURE_SOC_LPUART_COUNT == 1) && FSL_FEATURE_SOC_UART_COUNT
30 
31 #ifdef RTE_USART0
32 #undef RTE_USART0
33 #endif
34 #ifdef RTE_USART0_DMA_EN
35 #undef RTE_USART0_DMA_EN
36 #endif
37 #ifdef RTE_USART0_DMA_TX_CH
38 #undef RTE_USART0_DMA_TX_CH
39 #endif
40 #ifdef RTE_USART0_DMA_TX_PERI_SEL
41 #undef RTE_USART0_DMA_TX_PERI_SEL
42 #endif
43 #ifdef RTE_USART0_DMA_TX_DMAMUX_BASE
44 #undef RTE_USART0_DMA_TX_DMAMUX_BASE
45 #endif
46 #ifdef RTE_USART0_DMA_TX_DMA_BASE
47 #undef RTE_USART0_DMA_TX_DMA_BASE
48 #endif
49 #ifdef RTE_USART0_DMA_RX_CH
50 #undef RTE_USART0_DMA_RX_CH
51 #endif
52 #ifdef RTE_USART0_DMA_RX_PERI_SEL
53 #undef RTE_USART0_DMA_RX_PERI_SEL
54 #endif
55 #ifdef RTE_USART0_DMA_RX_DMAMUX_BASE
56 #undef RTE_USART0_DMA_RX_DMAMUX_BASE
57 #endif
58 #ifdef RTE_USART0_DMA_RX_DMA_BASE
59 #undef RTE_USART0_DMA_RX_DMA_BASE
60 #endif
61 #ifdef USART0_RX_BUFFER_ENABLE
62 #undef USART0_RX_BUFFER_ENABLE
63 #endif
64 
65 #if (FSL_FEATURE_SOC_UART_COUNT == 3)
66 
67 #ifdef RTE_USART3
68 #define RTE_USART0 RTE_USART3
69 #endif
70 #ifdef RTE_USART3_DMA_EN
71 #define RTE_USART0_DMA_EN RTE_USART3_DMA_EN
72 #endif
73 #ifdef RTE_USART3_DMA_TX_CH
74 #define RTE_USART0_DMA_TX_CH RTE_USART3_DMA_TX_CH
75 #endif
76 #ifdef RTE_USART3_DMA_TX_PERI_SEL
77 #define RTE_USART0_DMA_TX_PERI_SEL RTE_USART3_DMA_TX_PERI_SEL
78 #endif
79 #ifdef RTE_USART3_DMA_TX_DMAMUX_BASE
80 #define RTE_USART0_DMA_TX_DMAMUX_BASE RTE_USART3_DMA_TX_DMAMUX_BASE
81 #endif
82 #ifdef RTE_USART3_DMA_TX_DMA_BASE
83 #define RTE_USART0_DMA_TX_DMA_BASE RTE_USART3_DMA_TX_DMA_BASE
84 #endif
85 #ifdef RTE_USART3_DMA_RX_CH
86 #define RTE_USART0_DMA_RX_CH RTE_USART3_DMA_RX_CH
87 #endif
88 #ifdef RTE_USART3_DMA_RX_PERI_SEL
89 #define RTE_USART0_DMA_RX_PERI_SEL RTE_USART3_DMA_RX_PERI_SEL
90 #endif
91 #ifdef RTE_USART3_DMA_RX_DMAMUX_BASE
92 #define RTE_USART0_DMA_RX_DMAMUX_BASE RTE_USART3_DMA_RX_DMAMUX_BASE
93 #endif
94 #ifdef RTE_USART3_DMA_RX_DMA_BASE
95 #define RTE_USART0_DMA_RX_DMA_BASE RTE_USART3_DMA_RX_DMA_BASE
96 #endif
97 #ifdef USART3_RX_BUFFER_ENABLE
98 #define USART0_RX_BUFFER_ENABLE USART3_RX_BUFFER_ENABLE
99 #endif
100 #ifdef RTE_USART3_PIN_INIT
101 #define RTE_USART0_PIN_INIT RTE_USART3_PIN_INIT
102 #endif
103 #ifdef RTE_USART3_PIN_DEINIT
104 #define RTE_USART0_PIN_DEINIT RTE_USART3_PIN_DEINIT
105 #endif
106 
107 #endif /* FSL_FEATURE_SOC_UART_COUNT == 3 */
108 
109 #if (FSL_FEATURE_SOC_UART_COUNT == 4)
110 
111 #ifdef RTE_USART4
112 #define RTE_USART0 RTE_USART4
113 #endif
114 #ifdef RTE_USART4_DMA_EN
115 #define RTE_USART0_DMA_EN RTE_USART4_DMA_EN
116 #endif
117 #ifdef RTE_USART4_DMA_TX_CH
118 #define RTE_USART0_DMA_TX_CH RTE_USART4_DMA_TX_CH
119 #endif
120 #ifdef RTE_USART4_DMA_TX_PERI_SEL
121 #define RTE_USART0_DMA_TX_PERI_SEL RTE_USART4_DMA_TX_PERI_SEL
122 #endif
123 #ifdef RTE_USART4_DMA_TX_DMAMUX_BASE
124 #define RTE_USART0_DMA_TX_DMAMUX_BASE RTE_USART4_DMA_TX_DMAMUX_BASE
125 #endif
126 #ifdef RTE_USART4_DMA_TX_DMA_BASE
127 #define RTE_USART0_DMA_TX_DMA_BASE RTE_USART4_DMA_TX_DMA_BASE
128 #endif
129 #ifdef RTE_USART4_DMA_RX_CH
130 #define RTE_USART0_DMA_RX_CH RTE_USART4_DMA_RX_CH
131 #endif
132 #ifdef RTE_USART4_DMA_RX_PERI_SEL
133 #define RTE_USART0_DMA_RX_PERI_SEL RTE_USART4_DMA_RX_PERI_SEL
134 #endif
135 #ifdef RTE_USART4_DMA_RX_DMAMUX_BASE
136 #define RTE_USART0_DMA_RX_DMAMUX_BASE RTE_USART4_DMA_RX_DMAMUX_BASE
137 #endif
138 #ifdef RTE_USART4_DMA_RX_DMA_BASE
139 #define RTE_USART0_DMA_RX_DMA_BASE RTE_USART4_DMA_RX_DMA_BASE
140 #endif
141 #ifdef USART4_RX_BUFFER_ENABLE
142 #define USART0_RX_BUFFER_ENABLE USART4_RX_BUFFER_ENABLE
143 #endif
144 #ifdef RTE_USART4_PIN_INIT
145 #define RTE_USART0_PIN_INIT RTE_USART4_PIN_INIT
146 #endif
147 #ifdef RTE_USART4_PIN_DEINIT
148 #define RTE_USART0_PIN_DEINIT RTE_USART4_PIN_DEINIT
149 #endif
150 
151 #endif /* FSL_FEATURE_SOC_UART_COUNT == 4 */
152 
153 #if (FSL_FEATURE_SOC_UART_COUNT == 5)
154 
155 #ifdef RTE_USART5
156 #define RTE_USART0 RTE_USART5
157 #endif
158 #ifdef RTE_USART5_DMA_EN
159 #define RTE_USART0_DMA_EN RTE_USART5_DMA_EN
160 #endif
161 #ifdef RTE_USART5_DMA_TX_CH
162 #define RTE_USART0_DMA_TX_CH RTE_USART5_DMA_TX_CH
163 #endif
164 #ifdef RTE_USART5_DMA_TX_PERI_SEL
165 #define RTE_USART0_DMA_TX_PERI_SEL RTE_USART5_DMA_TX_PERI_SEL
166 #endif
167 #ifdef RTE_USART5_DMA_TX_DMAMUX_BASE
168 #define RTE_USART0_DMA_TX_DMAMUX_BASE RTE_USART5_DMA_TX_DMAMUX_BASE
169 #endif
170 #ifdef RTE_USART5_DMA_TX_DMA_BASE
171 #define RTE_USART0_DMA_TX_DMA_BASE RTE_USART5_DMA_TX_DMA_BASE
172 #endif
173 #ifdef RTE_USART5_DMA_RX_CH
174 #define RTE_USART0_DMA_RX_CH RTE_USART5_DMA_RX_CH
175 #endif
176 #ifdef RTE_USART5_DMA_RX_PERI_SEL
177 #define RTE_USART0_DMA_RX_PERI_SEL RTE_USART5_DMA_RX_PERI_SEL
178 #endif
179 #ifdef RTE_USART5_DMA_RX_DMAMUX_BASE
180 #define RTE_USART0_DMA_RX_DMAMUX_BASE RTE_USART5_DMA_RX_DMAMUX_BASE
181 #endif
182 #ifdef RTE_USART5_DMA_RX_DMA_BASE
183 #define RTE_USART0_DMA_RX_DMA_BASE RTE_USART5_DMA_RX_DMA_BASE
184 #endif
185 #ifdef USART5_RX_BUFFER_ENABLE
186 #define USART0_RX_BUFFER_ENABLE USART5_RX_BUFFER_ENABLE
187 #endif
188 #ifdef RTE_USART5_PIN_INIT
189 #define RTE_USART0_PIN_INIT RTE_USART5_PIN_INIT
190 #endif
191 #ifdef RTE_USART5_PIN_DEINIT
192 #define RTE_USART0_PIN_DEINIT RTE_USART5_PIN_DEINIT
193 #endif
194 
195 #endif /* FSL_FEATURE_SOC_UART_COUNT == 3 */
196 
197 #endif /* (FSL_FEATURE_SOC_LPUART_COUNT == 1) && FSL_FEATURE_SOC_UART_COUNT */
198 
199 #if ((defined(RTE_USART0) && RTE_USART0 && defined(LPUART0)) ||    \
200      (defined(RTE_USART1) && RTE_USART1 && defined(LPUART1)) ||    \
201      (defined(RTE_USART2) && RTE_USART2 && defined(LPUART2)) ||    \
202      (defined(RTE_USART3) && RTE_USART3 && defined(LPUART3)) ||    \
203      (defined(RTE_USART4) && RTE_USART4 && defined(LPUART4)) ||    \
204      (defined(RTE_USART5) && RTE_USART5 && defined(LPUART5)) ||    \
205      (defined(RTE_USART6) && RTE_USART6 && defined(LPUART6)) ||    \
206      (defined(RTE_USART7) && RTE_USART7 && defined(LPUART7)) ||    \
207      (defined(RTE_USART8) && RTE_USART8 && defined(LPUART8)) ||    \
208      (defined(RTE_USART9) && RTE_USART9 && defined(LPUART9)) ||    \
209      (defined(RTE_USART10) && RTE_USART10 && defined(LPUART10)) || \
210      (defined(RTE_USART11) && RTE_USART11 && defined(LPUART11)) || \
211      (defined(RTE_USART12) && RTE_USART12 && defined(LPUART12)) || \
212      (defined(RTE_USART13) && RTE_USART13 && defined(LPUART13)) || \
213      (defined(RTE_USART14) && RTE_USART14 && defined(LPUART14)) || \
214      (defined(RTE_USART15) && RTE_USART15 && defined(LPUART15)) || \
215      (defined(RTE_USART16) && RTE_USART16 && defined(LPUART16)) || \
216      (defined(RTE_USART17) && RTE_USART17 && defined(LPUART17)) || \
217      (defined(RTE_USART18) && RTE_USART18 && defined(LPUART18)) || \
218      (defined(RTE_USART19) && RTE_USART19 && defined(LPUART19)) || \
219      (defined(RTE_USART20) && RTE_USART10 && defined(LPUART20)))
220 
221 #define ARM_LPUART_DRV_VERSION ARM_DRIVER_VERSION_MAJOR_MINOR((2), (6))
222 
223 /*
224  * ARMCC does not support split the data section automatically, so the driver
225  * needs to split the data to separate sections explicitly, to reduce codesize.
226  */
227 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
228 #define ARMCC_SECTION(section_name) __attribute__((section(section_name)))
229 #endif
230 
231 typedef const struct _cmsis_lpuart_resource
232 {
233     LPUART_Type *base;         /*!< LPUART peripheral base address.      */
234     uint32_t (*GetFreq)(void); /*!< Function to get the clock frequency. */
235 } cmsis_lpuart_resource_t;
236 
237 typedef struct _cmsis_lpuart_non_blocking_driver_state
238 {
239     cmsis_lpuart_resource_t *resource; /*!< Basic LPUART resource. */
240     lpuart_handle_t *handle;           /*!< Interupt transfer handle. */
241     ARM_USART_SignalEvent_t cb_event;  /*!< Callback function.     */
242     uint8_t flags;                     /*!< Control and state flags. */
243 } cmsis_lpuart_non_blocking_driver_state_t;
244 
245 #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT)
246 typedef struct _cmsis_lpuart_dma_resource
247 {
248     DMA_Type *txDmaBase;   /*!< DMA peripheral base address for TX.    */
249     uint32_t txDmaChannel; /*!< DMA channel for LPUART TX.             */
250     uint8_t txDmaRequest;  /*!< TX DMA request source.                 */
251 
252     DMA_Type *rxDmaBase;   /*!< DMA peripheral base address for RX.    */
253     uint32_t rxDmaChannel; /*!< DMA channel for LPUART RX.             */
254     uint8_t rxDmaRequest;  /*!< RX DMA request source.                 */
255 
256 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
257     DMAMUX_Type *txDmamuxBase; /*!< DMAMUX peripheral base address for TX. */
258     DMAMUX_Type *rxDmamuxBase; /*!< DMAMUX peripheral base address for RX. */
259 #endif
260 
261 #if FSL_FEATURE_DMA_MODULE_CHANNEL != FSL_FEATURE_DMAMUX_MODULE_CHANNEL
262     uint32_t txDmamuxChannel; /*!< DMAMUX channel for LPUART TX.             */
263     uint32_t rxDmamuxChannel; /*!< DMAMUX channel for LPUART TX.             */
264 #endif
265 } cmsis_lpuart_dma_resource_t;
266 
267 typedef struct _cmsis_lpuart_dma_driver_state
268 {
269     cmsis_lpuart_resource_t *resource;        /*!< LPUART basic resource.      */
270     cmsis_lpuart_dma_resource_t *dmaResource; /*!< LPUART DMA resource.        */
271     lpuart_dma_handle_t *handle;              /*!< LPUART DMA transfer handle. */
272     dma_handle_t *rxHandle;                   /*!< DMA RX handle.              */
273     dma_handle_t *txHandle;                   /*!< DMA TX handle.              */
274     ARM_USART_SignalEvent_t cb_event;         /*!< Callback function.     */
275     uint8_t flags;                            /*!< Control and state flags. */
276 } cmsis_lpuart_dma_driver_state_t;
277 #endif
278 
279 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
280 typedef struct _cmsis_lpuart_edma_resource
281 {
282     void *txEdmaBase;       /*!< EDMA peripheral base address for TX.    */
283     uint32_t txEdmaChannel; /*!< EDMA channel for LPUART TX.             */
284     uint32_t txDmaRequest;  /*!< TX EDMA request source.                 */
285 
286     void *rxEdmaBase;       /*!< EDMA peripheral base address for RX.    */
287     uint32_t rxEdmaChannel; /*!< EDMA channel for LPUART RX.             */
288     uint32_t rxDmaRequest;  /*!< RX EDMA request source.                 */
289 
290 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
291     DMAMUX_Type *txDmamuxBase; /*!< DMAMUX peripheral base address for TX. */
292     DMAMUX_Type *rxDmamuxBase; /*!< DMAMUX peripheral base address for RX. */
293 #endif
294 } cmsis_lpuart_edma_resource_t;
295 
296 typedef struct _cmsis_lpuart_edma_driver_state
297 {
298     cmsis_lpuart_resource_t *resource;         /*!< LPUART basic resource.      */
299     cmsis_lpuart_edma_resource_t *dmaResource; /*!< LPUART EDMA resource.        */
300     lpuart_edma_handle_t *handle;              /*!< LPUART EDMA transfer handle. */
301     edma_handle_t *rxHandle;                   /*!< EDMA RX handle.              */
302     edma_handle_t *txHandle;                   /*!< EDMA TX handle.              */
303     ARM_USART_SignalEvent_t cb_event;          /*!< Callback function.     */
304     uint8_t flags;                             /*!< Control and state flags. */
305 } cmsis_lpuart_edma_driver_state_t;
306 #endif
307 
308 enum _lpuart_transfer_states
309 {
310     kLPUART_TxIdle, /*!< TX idle. */
311     kLPUART_TxBusy, /*!< TX busy. */
312     kLPUART_RxIdle, /*!< RX idle. */
313     kLPUART_RxBusy  /*!< RX busy. */
314 };
315 
316 /* Driver Version */
317 static const ARM_DRIVER_VERSION s_lpuartDriverVersion = {ARM_USART_API_VERSION, ARM_LPUART_DRV_VERSION};
318 
319 static const ARM_USART_CAPABILITIES s_lpuartDriverCapabilities = {
320     1, /* supports LPUART (Asynchronous) mode */
321     0, /* supports Synchronous Master mode */
322     0, /* supports Synchronous Slave mode */
323     0, /* supports LPUART Single-wire mode */
324     0, /* supports LPUART IrDA mode */
325     0, /* supports LPUART Smart Card mode */
326     0, /* Smart Card Clock generator */
327     0, /* RTS Flow Control available */
328     0, /* CTS Flow Control available */
329     0, /* Transmit completed event: \ref ARM_USART_EVENT_TX_COMPLETE */
330     0, /* Signal receive character timeout event: \ref ARM_USART_EVENT_RX_TIMEOUT */
331     0, /* RTS Line: 0=not available, 1=available */
332     0, /* CTS Line: 0=not available, 1=available */
333     0, /* DTR Line: 0=not available, 1=available */
334     0, /* DSR Line: 0=not available, 1=available */
335     0, /* DCD Line: 0=not available, 1=available */
336     0, /* RI Line: 0=not available, 1=available */
337     0, /* Signal CTS change event: \ref ARM_USART_EVENT_CTS */
338     0, /* Signal DSR change event: \ref ARM_USART_EVENT_DSR */
339     0, /* Signal DCD change event: \ref ARM_USART_EVENT_DCD */
340     0, /* Signal RI change event: \ref ARM_USART_EVENT_RI */
341 };
342 
343 /*
344  * Common control function used by LPUART_NonBlockingControl/LPUART_DmaControl/LPUART_EdmaControl
345  */
LPUART_CommonControl(uint32_t control,uint32_t arg,cmsis_lpuart_resource_t * resource,uint8_t * isConfigured)346 static int32_t LPUART_CommonControl(uint32_t control,
347                                     uint32_t arg,
348                                     cmsis_lpuart_resource_t *resource,
349                                     uint8_t *isConfigured)
350 {
351     lpuart_config_t config;
352     int32_t result  = ARM_DRIVER_OK;
353     bool isContinue = false;
354 
355     LPUART_GetDefaultConfig(&config);
356 
357     switch (control & ARM_USART_CONTROL_Msk)
358     {
359         case ARM_USART_MODE_ASYNCHRONOUS:
360             /* USART Baudrate */
361             config.baudRate_Bps = arg;
362             isContinue          = true;
363             break;
364 
365         /* TX/RX IO is controlled in application layer. */
366         case ARM_USART_CONTROL_TX:
367             if (arg != 0U)
368             {
369                 LPUART_EnableTx(resource->base, true);
370             }
371             else
372             {
373                 LPUART_EnableTx(resource->base, false);
374             }
375             result = ARM_DRIVER_OK;
376             break;
377 
378         case ARM_USART_CONTROL_RX:
379             if (arg != 0U)
380             {
381                 LPUART_EnableRx(resource->base, true);
382             }
383             else
384             {
385                 LPUART_EnableRx(resource->base, false);
386             }
387 
388             result = ARM_DRIVER_OK;
389             break;
390 
391         default:
392             result = ARM_DRIVER_ERROR_UNSUPPORTED;
393             break;
394     }
395 
396     if (!isContinue)
397     {
398         return result;
399     }
400 
401     switch (control & ARM_USART_DATA_BITS_Msk)
402     {
403 #if defined(FSL_FEATURE_LPUART_HAS_7BIT_DATA_SUPPORT) && FSL_FEATURE_LPUART_HAS_7BIT_DATA_SUPPORT
404         case ARM_USART_DATA_BITS_7:
405             config.dataBitsCount = kLPUART_SevenDataBits;
406             break;
407 #endif
408         case ARM_USART_DATA_BITS_8:
409             config.dataBitsCount = kLPUART_EightDataBits;
410             break;
411 
412         default:
413             result = ARM_USART_ERROR_DATA_BITS;
414             break;
415     }
416 
417     if (result == ARM_USART_ERROR_DATA_BITS)
418     {
419         return result;
420     }
421 
422     switch (control & ARM_USART_PARITY_Msk)
423     {
424         case ARM_USART_PARITY_NONE:
425             config.parityMode = kLPUART_ParityDisabled;
426             break;
427         case ARM_USART_PARITY_EVEN:
428             config.parityMode = kLPUART_ParityEven;
429             break;
430         case ARM_USART_PARITY_ODD:
431             config.parityMode = kLPUART_ParityOdd;
432             break;
433         default:
434             result = ARM_USART_ERROR_PARITY;
435             break;
436     }
437 
438     if (result == ARM_USART_ERROR_PARITY)
439     {
440         return result;
441     }
442 
443     switch (control & ARM_USART_STOP_BITS_Msk)
444     {
445         case ARM_USART_STOP_BITS_1:
446             /* The GetDefaultConfig has already set for this case. */
447             break;
448 #if defined(FSL_FEATURE_LPUART_HAS_STOP_BIT_CONFIG_SUPPORT) && FSL_FEATURE_LPUART_HAS_STOP_BIT_CONFIG_SUPPORT
449         case ARM_USART_STOP_BITS_2:
450             config.stopBitCount = kLPUART_TwoStopBit;
451             break;
452 #endif
453         default:
454             result = ARM_USART_ERROR_STOP_BITS;
455             break;
456     }
457 
458     if (result == ARM_USART_ERROR_STOP_BITS)
459     {
460         return result;
461     }
462 
463     /* If LPUART is already configured, deinit it first. */
464     if (((*isConfigured) & (uint8_t)USART_FLAG_CONFIGURED) != 0U)
465     {
466         LPUART_Deinit(resource->base);
467         *isConfigured &= ~(uint8_t)USART_FLAG_CONFIGURED;
468     }
469 
470     config.enableTx = true;
471     config.enableRx = true;
472 
473     if (kStatus_LPUART_BaudrateNotSupport == LPUART_Init(resource->base, &config, resource->GetFreq()))
474     {
475         result = ARM_USART_ERROR_BAUDRATE;
476     }
477     else
478     {
479         *isConfigured |= (uint8_t)USART_FLAG_CONFIGURED;
480     }
481 
482     return result;
483 }
484 
LPUARTx_GetVersion(void)485 static ARM_DRIVER_VERSION LPUARTx_GetVersion(void)
486 {
487     return s_lpuartDriverVersion;
488 }
489 
LPUARTx_GetCapabilities(void)490 static ARM_USART_CAPABILITIES LPUARTx_GetCapabilities(void)
491 {
492     return s_lpuartDriverCapabilities;
493 }
494 
LPUARTx_SetModemControl(ARM_USART_MODEM_CONTROL control)495 static int32_t LPUARTx_SetModemControl(ARM_USART_MODEM_CONTROL control)
496 {
497     return ARM_DRIVER_ERROR_UNSUPPORTED;
498 }
499 
LPUARTx_GetModemStatus(void)500 static ARM_USART_MODEM_STATUS LPUARTx_GetModemStatus(void)
501 {
502     ARM_USART_MODEM_STATUS modem_status = {0};
503 
504     return modem_status;
505 }
506 
507 #endif
508 
509 #if ((defined(RTE_USART0_DMA_EN) && RTE_USART0_DMA_EN && defined(LPUART0)) ||    \
510      (defined(RTE_USART1_DMA_EN) && RTE_USART1_DMA_EN && defined(LPUART1)) ||    \
511      (defined(RTE_USART2_DMA_EN) && RTE_USART2_DMA_EN && defined(LPUART2)) ||    \
512      (defined(RTE_USART3_DMA_EN) && RTE_USART3_DMA_EN && defined(LPUART3)) ||    \
513      (defined(RTE_USART4_DMA_EN) && RTE_USART4_DMA_EN && defined(LPUART4)) ||    \
514      (defined(RTE_USART5_DMA_EN) && RTE_USART5_DMA_EN && defined(LPUART5)) ||    \
515      (defined(RTE_USART6_DMA_EN) && RTE_USART6_DMA_EN && defined(LPUART6)) ||    \
516      (defined(RTE_USART7_DMA_EN) && RTE_USART7_DMA_EN && defined(LPUART7)) ||    \
517      (defined(RTE_USART8_DMA_EN) && RTE_USART8_DMA_EN && defined(LPUART8)) ||    \
518      (defined(RTE_USART9_DMA_EN) && RTE_USART9_DMA_EN && defined(LPUART9)) ||    \
519      (defined(RTE_USART10_DMA_EN) && RTE_USART10_DMA_EN && defined(LPUART10)) || \
520      (defined(RTE_USART11_DMA_EN) && RTE_USART11_DMA_EN && defined(LPUART11)) || \
521      (defined(RTE_USART12_DMA_EN) && RTE_USART12_DMA_EN && defined(LPUART12)) || \
522      (defined(RTE_USART13_DMA_EN) && RTE_USART13_DMA_EN && defined(LPUART13)) || \
523      (defined(RTE_USART14_DMA_EN) && RTE_USART14_DMA_EN && defined(LPUART14)) || \
524      (defined(RTE_USART15_DMA_EN) && RTE_USART15_DMA_EN && defined(LPUART15)) || \
525      (defined(RTE_USART16_DMA_EN) && RTE_USART16_DMA_EN && defined(LPUART16)) || \
526      (defined(RTE_USART17_DMA_EN) && RTE_USART17_DMA_EN && defined(LPUART17)) || \
527      (defined(RTE_USART18_DMA_EN) && RTE_USART18_DMA_EN && defined(LPUART18)) || \
528      (defined(RTE_USART19_DMA_EN) && RTE_USART19_DMA_EN && defined(LPUART19)) || \
529      (defined(RTE_USART20_DMA_EN) && RTE_USART20_DMA_EN && defined(LPUART20)))
530 
531 #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT)
KSDK_LPUART_DmaCallback(LPUART_Type * base,lpuart_dma_handle_t * handle,status_t status,void * userData)532 static void KSDK_LPUART_DmaCallback(LPUART_Type *base, lpuart_dma_handle_t *handle, status_t status, void *userData)
533 {
534     uint32_t event = 0U;
535 
536     if (kStatus_LPUART_TxIdle == status)
537     {
538         event = ARM_USART_EVENT_SEND_COMPLETE;
539     }
540     else if (kStatus_LPUART_RxIdle == status)
541     {
542         event = ARM_USART_EVENT_RECEIVE_COMPLETE;
543     }
544     else
545     {
546         /* Avoid MISRA 2012 15.7 violation */
547     }
548 
549     /* User data is actually CMSIS driver callback. */
550     if ((0U != event) && (userData != NULL))
551     {
552         ((ARM_USART_SignalEvent_t)userData)(event);
553     }
554 }
555 
LPUART_DmaInitialize(ARM_USART_SignalEvent_t cb_event,cmsis_lpuart_dma_driver_state_t * lpuart)556 static int32_t LPUART_DmaInitialize(ARM_USART_SignalEvent_t cb_event, cmsis_lpuart_dma_driver_state_t *lpuart)
557 {
558     if (0U == (lpuart->flags & (uint8_t)USART_FLAG_INIT))
559     {
560         lpuart->cb_event = cb_event;
561         lpuart->flags    = (uint8_t)USART_FLAG_INIT;
562     }
563 
564     return ARM_DRIVER_OK;
565 }
566 
LPUART_DmaUninitialize(cmsis_lpuart_dma_driver_state_t * lpuart)567 static int32_t LPUART_DmaUninitialize(cmsis_lpuart_dma_driver_state_t *lpuart)
568 {
569     lpuart->flags = (uint8_t)USART_FLAG_UNINIT;
570     return ARM_DRIVER_OK;
571 }
572 
LPUART_DmaPowerControl(ARM_POWER_STATE state,cmsis_lpuart_dma_driver_state_t * lpuart)573 static int32_t LPUART_DmaPowerControl(ARM_POWER_STATE state, cmsis_lpuart_dma_driver_state_t *lpuart)
574 {
575     lpuart_config_t config;
576     cmsis_lpuart_dma_resource_t *dmaResource;
577     int32_t result = ARM_DRIVER_OK;
578 
579     switch (state)
580     {
581         case ARM_POWER_OFF:
582             if ((lpuart->flags & (uint8_t)USART_FLAG_POWER) != 0U)
583             {
584                 LPUART_Deinit(lpuart->resource->base);
585 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
586 #if FSL_FEATURE_DMA_MODULE_CHANNEL != FSL_FEATURE_DMAMUX_MODULE_CHANNEL
587                 DMAMUX_DisableChannel(lpuart->dmaResource->rxDmamuxBase, lpuart->dmaResource->rxDmamuxChannel);
588                 DMAMUX_DisableChannel(lpuart->dmaResource->txDmamuxBase, lpuart->dmaResource->txDmamuxChannel);
589 #else
590                 DMAMUX_DisableChannel(lpuart->dmaResource->rxDmamuxBase, lpuart->dmaResource->rxDmaChannel);
591                 DMAMUX_DisableChannel(lpuart->dmaResource->txDmamuxBase, lpuart->dmaResource->txDmaChannel);
592 #endif
593 #endif
594                 lpuart->flags = (uint8_t)USART_FLAG_INIT;
595             }
596             break;
597         case ARM_POWER_LOW:
598             result = ARM_DRIVER_ERROR_UNSUPPORTED;
599             break;
600         case ARM_POWER_FULL:
601             /* Must be initialized first. */
602             if (lpuart->flags == (uint8_t)USART_FLAG_UNINIT)
603             {
604                 result = ARM_DRIVER_ERROR;
605                 break;
606             }
607 
608             if ((lpuart->flags & (uint8_t)USART_FLAG_POWER) != 0U)
609             {
610                 /* Driver already powered */
611                 break;
612             }
613 
614             LPUART_GetDefaultConfig(&config);
615             config.enableTx = true;
616             config.enableRx = true;
617 
618             dmaResource = lpuart->dmaResource;
619 
620             /* Set up DMA setting. */
621             DMA_CreateHandle(lpuart->rxHandle, dmaResource->rxDmaBase, dmaResource->rxDmaChannel);
622 
623             DMA_CreateHandle(lpuart->txHandle, dmaResource->txDmaBase, dmaResource->txDmaChannel);
624 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
625 #if FSL_FEATURE_DMA_MODULE_CHANNEL != FSL_FEATURE_DMAMUX_MODULE_CHANNEL
626             DMAMUX_SetSource(dmaResource->rxDmamuxBase, dmaResource->rxDmamuxChannel,
627                              (int32_t)dmaResource->rxDmaRequest);
628             DMAMUX_EnableChannel(dmaResource->rxDmamuxBase, dmaResource->rxDmamuxChannel);
629 
630             DMAMUX_SetSource(dmaResource->txDmamuxBase, dmaResource->txDmamuxChannel,
631                              (int32_t)dmaResource->txDmaRequest);
632             DMAMUX_EnableChannel(dmaResource->txDmamuxBase, dmaResource->txDmamuxChannel);
633 #else
634             DMAMUX_SetSource(dmaResource->rxDmamuxBase, dmaResource->rxDmaChannel, (int32_t)dmaResource->rxDmaRequest);
635             DMAMUX_EnableChannel(dmaResource->rxDmamuxBase, dmaResource->rxDmaChannel);
636 
637             DMAMUX_SetSource(dmaResource->txDmamuxBase, dmaResource->txDmaChannel, (int32_t)dmaResource->txDmaRequest);
638             DMAMUX_EnableChannel(dmaResource->txDmamuxBase, dmaResource->txDmaChannel);
639 #endif
640 #endif
641 
642             /* Setup the LPUART. */
643             (void)LPUART_Init(lpuart->resource->base, &config, lpuart->resource->GetFreq());
644             LPUART_TransferCreateHandleDMA(lpuart->resource->base, lpuart->handle, KSDK_LPUART_DmaCallback,
645                                            (void *)lpuart->cb_event, lpuart->txHandle, lpuart->rxHandle);
646 
647             lpuart->flags |= ((uint8_t)USART_FLAG_POWER | (uint8_t)USART_FLAG_CONFIGURED);
648             break;
649         default:
650             result = ARM_DRIVER_ERROR_UNSUPPORTED;
651             break;
652     }
653 
654     return result;
655 }
656 
LPUART_DmaSend(const void * data,uint32_t num,cmsis_lpuart_dma_driver_state_t * lpuart)657 static int32_t LPUART_DmaSend(const void *data, uint32_t num, cmsis_lpuart_dma_driver_state_t *lpuart)
658 {
659     int32_t ret;
660     status_t status;
661     lpuart_transfer_t xfer;
662 
663     xfer.data     = (uint8_t *)data;
664     xfer.dataSize = num;
665 
666     status = LPUART_TransferSendDMA(lpuart->resource->base, lpuart->handle, &xfer);
667 
668     switch (status)
669     {
670         case kStatus_Success:
671             ret = ARM_DRIVER_OK;
672             break;
673         case kStatus_InvalidArgument:
674             ret = ARM_DRIVER_ERROR_PARAMETER;
675             break;
676         case kStatus_LPUART_RxBusy:
677             ret = ARM_DRIVER_ERROR_BUSY;
678             break;
679         default:
680             ret = ARM_DRIVER_ERROR;
681             break;
682     }
683 
684     return ret;
685 }
686 
LPUART_DmaReceive(void * data,uint32_t num,cmsis_lpuart_dma_driver_state_t * lpuart)687 static int32_t LPUART_DmaReceive(void *data, uint32_t num, cmsis_lpuart_dma_driver_state_t *lpuart)
688 {
689     int32_t ret;
690     status_t status;
691     lpuart_transfer_t xfer;
692 
693     xfer.data     = (uint8_t *)data;
694     xfer.dataSize = num;
695 
696     status = LPUART_TransferReceiveDMA(lpuart->resource->base, lpuart->handle, &xfer);
697 
698     switch (status)
699     {
700         case kStatus_Success:
701             ret = ARM_DRIVER_OK;
702             break;
703         case kStatus_InvalidArgument:
704             ret = ARM_DRIVER_ERROR_PARAMETER;
705             break;
706         case kStatus_LPUART_TxBusy:
707             ret = ARM_DRIVER_ERROR_BUSY;
708             break;
709         default:
710             ret = ARM_DRIVER_ERROR;
711             break;
712     }
713 
714     return ret;
715 }
716 
LPUART_DmaTransfer(const void * data_out,void * data_in,uint32_t num,cmsis_lpuart_dma_driver_state_t * lpuart)717 static int32_t LPUART_DmaTransfer(const void *data_out,
718                                   void *data_in,
719                                   uint32_t num,
720                                   cmsis_lpuart_dma_driver_state_t *lpuart)
721 {
722     /* Only in synchronous mode */
723     return ARM_DRIVER_ERROR;
724 }
725 
LPUART_DmaGetTxCount(cmsis_lpuart_dma_driver_state_t * lpuart)726 static uint32_t LPUART_DmaGetTxCount(cmsis_lpuart_dma_driver_state_t *lpuart)
727 {
728     uint32_t cnt;
729 
730     /* If TX not in progress, then the TX count is txDataSizeAll saved in handle. */
731     if (kStatus_NoTransferInProgress == LPUART_TransferGetSendCountDMA(lpuart->resource->base, lpuart->handle, &cnt))
732     {
733         cnt = lpuart->handle->txDataSizeAll;
734     }
735 
736     return cnt;
737 }
738 
LPUART_DmaGetRxCount(cmsis_lpuart_dma_driver_state_t * lpuart)739 static uint32_t LPUART_DmaGetRxCount(cmsis_lpuart_dma_driver_state_t *lpuart)
740 {
741     uint32_t cnt;
742 
743     if (kStatus_NoTransferInProgress == LPUART_TransferGetReceiveCountDMA(lpuart->resource->base, lpuart->handle, &cnt))
744     {
745         cnt = lpuart->handle->rxDataSizeAll;
746     }
747 
748     return cnt;
749 }
750 
LPUART_DmaControl(uint32_t control,uint32_t arg,cmsis_lpuart_dma_driver_state_t * lpuart)751 static int32_t LPUART_DmaControl(uint32_t control, uint32_t arg, cmsis_lpuart_dma_driver_state_t *lpuart)
752 {
753     int32_t result  = ARM_DRIVER_OK;
754     bool isContinue = false;
755     /* Must be power on. */
756     if (0U == (lpuart->flags & (uint8_t)USART_FLAG_POWER))
757     {
758         return ARM_DRIVER_ERROR;
759     }
760 
761     /* Does not support these features. */
762     if ((control & (ARM_USART_FLOW_CONTROL_Msk | ARM_USART_CPOL_Msk | ARM_USART_CPHA_Msk)) != 0U)
763     {
764         return ARM_DRIVER_ERROR_UNSUPPORTED;
765     }
766 
767     switch (control & ARM_USART_CONTROL_Msk)
768     {
769         /* Abort Send */
770         case ARM_USART_ABORT_SEND:
771             LPUART_TransferAbortSendDMA(lpuart->resource->base, lpuart->handle);
772             result = ARM_DRIVER_OK;
773             break;
774 
775         /* Abort receive */
776         case ARM_USART_ABORT_RECEIVE:
777             LPUART_TransferAbortReceiveDMA(lpuart->resource->base, lpuart->handle);
778             result = ARM_DRIVER_OK;
779             break;
780 
781         default:
782             isContinue = true;
783             break;
784     }
785 
786     if (isContinue)
787     {
788         result = LPUART_CommonControl(control, arg, lpuart->resource, &lpuart->flags);
789     }
790     return result;
791 }
792 
LPUART_DmaGetStatus(cmsis_lpuart_dma_driver_state_t * lpuart)793 static ARM_USART_STATUS LPUART_DmaGetStatus(cmsis_lpuart_dma_driver_state_t *lpuart)
794 {
795     ARM_USART_STATUS stat       = {0};
796     uint32_t ksdk_lpuart_status = LPUART_GetStatusFlags(lpuart->resource->base);
797 
798     stat.tx_busy = (((uint8_t)kLPUART_TxBusy == lpuart->handle->txState) ? (1U) : (0U));
799     stat.rx_busy = (((uint8_t)kLPUART_RxBusy == lpuart->handle->rxState) ? (1U) : (0U));
800 
801     stat.tx_underflow = 0U;
802     stat.rx_overflow  = (uint32_t)(((ksdk_lpuart_status & (uint32_t)kLPUART_RxOverrunFlag)) != 0U);
803 #if defined(FSL_FEATURE_LPUART_HAS_LIN_BREAK_DETECT) && FSL_FEATURE_LPUART_HAS_LIN_BREAK_DETECT
804     stat.rx_break = (uint32_t)(((ksdk_lpuart_status & (uint32_t)kLPUART_LinBreakFlag)) != 0U);
805 #else
806     stat.rx_break = 0U;
807 #endif
808     stat.rx_framing_error = (uint32_t)(((ksdk_lpuart_status & (uint32_t)kLPUART_FramingErrorFlag)) != 0U);
809     stat.rx_parity_error  = (uint32_t)(((ksdk_lpuart_status & (uint32_t)kLPUART_ParityErrorFlag)) != 0U);
810     stat.reserved         = 0U;
811 
812     return stat;
813 }
814 #endif
815 
816 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
KSDK_LPUART_EdmaCallback(LPUART_Type * base,lpuart_edma_handle_t * handle,status_t status,void * userData)817 static void KSDK_LPUART_EdmaCallback(LPUART_Type *base, lpuart_edma_handle_t *handle, status_t status, void *userData)
818 {
819     uint32_t event = 0U;
820 
821     if (kStatus_LPUART_TxIdle == status)
822     {
823         event = ARM_USART_EVENT_SEND_COMPLETE;
824     }
825     if (kStatus_LPUART_RxIdle == status)
826     {
827         event = ARM_USART_EVENT_RECEIVE_COMPLETE;
828     }
829 
830     /* User data is actually CMSIS driver callback. */
831     if ((0U != event) && (userData != NULL))
832     {
833         ((ARM_USART_SignalEvent_t)userData)(event);
834     }
835 }
836 
LPUART_EdmaInitialize(ARM_USART_SignalEvent_t cb_event,cmsis_lpuart_edma_driver_state_t * lpuart)837 static int32_t LPUART_EdmaInitialize(ARM_USART_SignalEvent_t cb_event, cmsis_lpuart_edma_driver_state_t *lpuart)
838 {
839     if (0U == (lpuart->flags & (uint8_t)USART_FLAG_INIT))
840     {
841         lpuart->cb_event = cb_event;
842         lpuart->flags    = (uint8_t)USART_FLAG_INIT;
843     }
844 
845     return ARM_DRIVER_OK;
846 }
847 
LPUART_EdmaUninitialize(cmsis_lpuart_edma_driver_state_t * lpuart)848 static int32_t LPUART_EdmaUninitialize(cmsis_lpuart_edma_driver_state_t *lpuart)
849 {
850     lpuart->flags = (uint8_t)USART_FLAG_UNINIT;
851     return ARM_DRIVER_OK;
852 }
853 
LPUART_EdmaPowerControl(ARM_POWER_STATE state,cmsis_lpuart_edma_driver_state_t * lpuart)854 static int32_t LPUART_EdmaPowerControl(ARM_POWER_STATE state, cmsis_lpuart_edma_driver_state_t *lpuart)
855 {
856     lpuart_config_t config;
857     cmsis_lpuart_edma_resource_t *dmaResource;
858     int32_t result = ARM_DRIVER_OK;
859     switch (state)
860     {
861         case ARM_POWER_OFF:
862             if ((lpuart->flags & (uint8_t)USART_FLAG_POWER) != 0U)
863             {
864                 LPUART_Deinit(lpuart->resource->base);
865 
866 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
867                 DMAMUX_DisableChannel(lpuart->dmaResource->rxDmamuxBase, lpuart->dmaResource->rxEdmaChannel);
868                 DMAMUX_DisableChannel(lpuart->dmaResource->txDmamuxBase, lpuart->dmaResource->txEdmaChannel);
869 #endif
870                 lpuart->flags = (uint8_t)USART_FLAG_INIT;
871             }
872             break;
873         case ARM_POWER_LOW:
874             result = ARM_DRIVER_ERROR_UNSUPPORTED;
875             break;
876         case ARM_POWER_FULL:
877             /* Must be initialized first. */
878             if (lpuart->flags == (uint8_t)USART_FLAG_UNINIT)
879             {
880                 result = ARM_DRIVER_ERROR;
881                 break;
882             }
883 
884             if ((lpuart->flags & (uint8_t)USART_FLAG_POWER) != 0U)
885             {
886                 /* Driver already powered */
887                 break;
888             }
889 
890             LPUART_GetDefaultConfig(&config);
891             config.enableTx = true;
892             config.enableRx = true;
893 
894             dmaResource = lpuart->dmaResource;
895 
896             /* Set up EDMA setting. */
897             EDMA_CreateHandle(lpuart->rxHandle, dmaResource->rxEdmaBase, dmaResource->rxEdmaChannel);
898             EDMA_CreateHandle(lpuart->txHandle, dmaResource->txEdmaBase, dmaResource->txEdmaChannel);
899 #if defined(FSL_FEATURE_EDMA_HAS_CHANNEL_MUX) && FSL_FEATURE_EDMA_HAS_CHANNEL_MUX
900             EDMA_SetChannelMux(dmaResource->txEdmaBase, dmaResource->txEdmaChannel, (int32_t)dmaResource->txDmaRequest);
901             EDMA_SetChannelMux(dmaResource->rxEdmaBase, dmaResource->rxEdmaChannel, (int32_t)dmaResource->rxDmaRequest);
902 #endif
903 
904 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
905             DMAMUX_SetSource(dmaResource->rxDmamuxBase, dmaResource->rxEdmaChannel, (int32_t)dmaResource->rxDmaRequest);
906             DMAMUX_EnableChannel(dmaResource->rxDmamuxBase, dmaResource->rxEdmaChannel);
907 
908             DMAMUX_SetSource(dmaResource->txDmamuxBase, dmaResource->txEdmaChannel, (int32_t)dmaResource->txDmaRequest);
909             DMAMUX_EnableChannel(dmaResource->txDmamuxBase, dmaResource->txEdmaChannel);
910 #endif
911 
912             /* Setup the LPUART. */
913             (void)LPUART_Init(lpuart->resource->base, &config, lpuart->resource->GetFreq());
914             LPUART_TransferCreateHandleEDMA(lpuart->resource->base, lpuart->handle, KSDK_LPUART_EdmaCallback,
915                                             (void *)lpuart->cb_event, lpuart->txHandle, lpuart->rxHandle);
916 
917             lpuart->flags |= ((uint8_t)USART_FLAG_POWER | (uint8_t)USART_FLAG_CONFIGURED);
918             break;
919         default:
920             result = ARM_DRIVER_ERROR_UNSUPPORTED;
921             break;
922     }
923 
924     return result;
925 }
926 
LPUART_EdmaSend(const void * data,uint32_t num,cmsis_lpuart_edma_driver_state_t * lpuart)927 static int32_t LPUART_EdmaSend(const void *data, uint32_t num, cmsis_lpuart_edma_driver_state_t *lpuart)
928 {
929     int32_t ret;
930     status_t status;
931     lpuart_transfer_t xfer;
932 
933     xfer.data     = (uint8_t *)data;
934     xfer.dataSize = num;
935 
936     status = LPUART_SendEDMA(lpuart->resource->base, lpuart->handle, &xfer);
937 
938     switch (status)
939     {
940         case kStatus_Success:
941             ret = ARM_DRIVER_OK;
942             break;
943         case kStatus_InvalidArgument:
944             ret = ARM_DRIVER_ERROR_PARAMETER;
945             break;
946         case kStatus_LPUART_RxBusy:
947             ret = ARM_DRIVER_ERROR_BUSY;
948             break;
949         default:
950             ret = ARM_DRIVER_ERROR;
951             break;
952     }
953 
954     return ret;
955 }
956 
LPUART_EdmaReceive(void * data,uint32_t num,cmsis_lpuart_edma_driver_state_t * lpuart)957 static int32_t LPUART_EdmaReceive(void *data, uint32_t num, cmsis_lpuart_edma_driver_state_t *lpuart)
958 {
959     int32_t ret;
960     status_t status;
961     lpuart_transfer_t xfer;
962 
963     xfer.data     = (uint8_t *)data;
964     xfer.dataSize = num;
965 
966     status = LPUART_ReceiveEDMA(lpuart->resource->base, lpuart->handle, &xfer);
967 
968     switch (status)
969     {
970         case kStatus_Success:
971             ret = ARM_DRIVER_OK;
972             break;
973         case kStatus_InvalidArgument:
974             ret = ARM_DRIVER_ERROR_PARAMETER;
975             break;
976         case kStatus_LPUART_TxBusy:
977             ret = ARM_DRIVER_ERROR_BUSY;
978             break;
979         default:
980             ret = ARM_DRIVER_ERROR;
981             break;
982     }
983 
984     return ret;
985 }
986 
LPUART_EdmaTransfer(const void * data_out,void * data_in,uint32_t num,cmsis_lpuart_edma_driver_state_t * lpuart)987 static int32_t LPUART_EdmaTransfer(const void *data_out,
988                                    void *data_in,
989                                    uint32_t num,
990                                    cmsis_lpuart_edma_driver_state_t *lpuart)
991 {
992     /* Only in synchronous mode */
993     return ARM_DRIVER_ERROR;
994 }
995 
LPUART_EdmaGetTxCount(cmsis_lpuart_edma_driver_state_t * lpuart)996 static uint32_t LPUART_EdmaGetTxCount(cmsis_lpuart_edma_driver_state_t *lpuart)
997 {
998     uint32_t cnt;
999 
1000     if (kStatus_NoTransferInProgress == LPUART_TransferGetSendCountEDMA(lpuart->resource->base, lpuart->handle, &cnt))
1001     {
1002         cnt = lpuart->handle->txDataSizeAll;
1003     }
1004 
1005     return cnt;
1006 }
1007 
LPUART_EdmaGetRxCount(cmsis_lpuart_edma_driver_state_t * lpuart)1008 static uint32_t LPUART_EdmaGetRxCount(cmsis_lpuart_edma_driver_state_t *lpuart)
1009 {
1010     uint32_t cnt;
1011 
1012     if (kStatus_NoTransferInProgress ==
1013         LPUART_TransferGetReceiveCountEDMA(lpuart->resource->base, lpuart->handle, &cnt))
1014     {
1015         cnt = lpuart->handle->rxDataSizeAll;
1016     }
1017 
1018     return cnt;
1019 }
1020 
LPUART_EdmaControl(uint32_t control,uint32_t arg,cmsis_lpuart_edma_driver_state_t * lpuart)1021 static int32_t LPUART_EdmaControl(uint32_t control, uint32_t arg, cmsis_lpuart_edma_driver_state_t *lpuart)
1022 {
1023     int32_t result  = ARM_DRIVER_OK;
1024     bool isContinue = false;
1025     /* Must be power on. */
1026     if (0U == (lpuart->flags & (uint8_t)USART_FLAG_POWER))
1027     {
1028         return ARM_DRIVER_ERROR;
1029     }
1030 
1031     /* Does not support these features. */
1032     if ((control & (ARM_USART_FLOW_CONTROL_Msk | ARM_USART_CPOL_Msk | ARM_USART_CPHA_Msk)) != 0U)
1033     {
1034         return ARM_DRIVER_ERROR_UNSUPPORTED;
1035     }
1036 
1037     switch (control & ARM_USART_CONTROL_Msk)
1038     {
1039         /* Abort Send */
1040         case ARM_USART_ABORT_SEND:
1041             LPUART_TransferAbortSendEDMA(lpuart->resource->base, lpuart->handle);
1042             result = ARM_DRIVER_OK;
1043             break;
1044 
1045         /* Abort receive */
1046         case ARM_USART_ABORT_RECEIVE:
1047             LPUART_TransferAbortReceiveEDMA(lpuart->resource->base, lpuart->handle);
1048             result = ARM_DRIVER_OK;
1049             break;
1050 
1051         default:
1052             isContinue = true;
1053             break;
1054     }
1055     if (isContinue)
1056     {
1057         result = LPUART_CommonControl(control, arg, lpuart->resource, &lpuart->flags);
1058     }
1059     return result;
1060 }
1061 
LPUART_EdmaGetStatus(cmsis_lpuart_edma_driver_state_t * lpuart)1062 static ARM_USART_STATUS LPUART_EdmaGetStatus(cmsis_lpuart_edma_driver_state_t *lpuart)
1063 {
1064     ARM_USART_STATUS stat       = {0};
1065     uint32_t ksdk_lpuart_status = LPUART_GetStatusFlags(lpuart->resource->base);
1066 
1067     stat.tx_busy = (((uint8_t)kLPUART_TxBusy == lpuart->handle->txState) ? (1U) : (0U));
1068     stat.rx_busy = (((uint8_t)kLPUART_RxBusy == lpuart->handle->rxState) ? (1U) : (0U));
1069 
1070     stat.tx_underflow = 0U;
1071     stat.rx_overflow  = (uint32_t)(((ksdk_lpuart_status & (uint32_t)kLPUART_RxOverrunFlag)) != 0U);
1072 #if defined(FSL_FEATURE_LPUART_HAS_LIN_BREAK_DETECT) && FSL_FEATURE_LPUART_HAS_LIN_BREAK_DETECT
1073     stat.rx_break = (uint32_t)(((ksdk_lpuart_status & (uint32_t)kLPUART_LinBreakFlag)) != 0U);
1074 #else
1075     stat.rx_break = 0U;
1076 #endif
1077     stat.rx_framing_error = (uint32_t)(((ksdk_lpuart_status & (uint32_t)kLPUART_FramingErrorFlag)) != 0U);
1078     stat.rx_parity_error  = (uint32_t)(((ksdk_lpuart_status & (uint32_t)kLPUART_ParityErrorFlag)) != 0U);
1079     stat.reserved         = 0U;
1080 
1081     return stat;
1082 }
1083 #endif
1084 
1085 #endif
1086 
1087 #if (((defined(RTE_USART0) && RTE_USART0 && !(defined(RTE_USART0_DMA_EN) && RTE_USART0_DMA_EN)) &&     \
1088       defined(LPUART0)) ||                                                                             \
1089      ((defined(RTE_USART1) && RTE_USART1 && !(defined(RTE_USART1_DMA_EN) && RTE_USART1_DMA_EN)) &&     \
1090       defined(LPUART1)) ||                                                                             \
1091      ((defined(RTE_USART2) && RTE_USART2 && !(defined(RTE_USART2_DMA_EN) && RTE_USART2_DMA_EN)) &&     \
1092       defined(LPUART2)) ||                                                                             \
1093      ((defined(RTE_USART3) && RTE_USART3 && !(defined(RTE_USART3_DMA_EN) && RTE_USART3_DMA_EN)) &&     \
1094       defined(LPUART3)) ||                                                                             \
1095      ((defined(RTE_USART4) && RTE_USART4 && !(defined(RTE_USART4_DMA_EN) && RTE_USART4_DMA_EN)) &&     \
1096       defined(LPUART4)) ||                                                                             \
1097      ((defined(RTE_USART5) && RTE_USART5 && !(defined(RTE_USART5_DMA_EN) && RTE_USART5_DMA_EN)) &&     \
1098       defined(LPUART5)) ||                                                                             \
1099      ((defined(RTE_USART6) && RTE_USART6 && !(defined(RTE_USART6_DMA_EN) && RTE_USART6_DMA_EN)) &&     \
1100       defined(LPUART6)) ||                                                                             \
1101      ((defined(RTE_USART7) && RTE_USART7 && !(defined(RTE_USART7_DMA_EN) && RTE_USART7_DMA_EN)) &&     \
1102       defined(LPUART7)) ||                                                                             \
1103      ((defined(RTE_USART8) && RTE_USART8 && !(defined(RTE_USART8_DMA_EN) && RTE_USART8_DMA_EN)) &&     \
1104       defined(LPUART8)) ||                                                                             \
1105      ((defined(RTE_USART9) && RTE_USART9 && !(defined(RTE_USART9_DMA_EN) && RTE_USART9_DMA_EN)) &&     \
1106       defined(LPUART9)) ||                                                                             \
1107      ((defined(RTE_USART10) && RTE_USART10 && !(defined(RTE_USART10_DMA_EN) && RTE_USART10_DMA_EN)) && \
1108       defined(LPUART10)) ||                                                                            \
1109      ((defined(RTE_USART11) && RTE_USART11 && !(defined(RTE_USART11_DMA_EN) && RTE_USART11_DMA_EN)) && \
1110       defined(LPUART11)) ||                                                                            \
1111      ((defined(RTE_USART12) && RTE_USART12 && !(defined(RTE_USART12_DMA_EN) && RTE_USART12_DMA_EN)) && \
1112       defined(LPUART12)) ||                                                                            \
1113      ((defined(RTE_USART13) && RTE_USART13 && !(defined(RTE_USART13_DMA_EN) && RTE_USART13_DMA_EN)) && \
1114       defined(LPUART13)) ||                                                                            \
1115      ((defined(RTE_USART14) && RTE_USART14 && !(defined(RTE_USART14_DMA_EN) && RTE_USART14_DMA_EN)) && \
1116       defined(LPUART14)) ||                                                                            \
1117      ((defined(RTE_USART15) && RTE_USART15 && !(defined(RTE_USART15_DMA_EN) && RTE_USART15_DMA_EN)) && \
1118       defined(LPUART15)) ||                                                                            \
1119      ((defined(RTE_USART16) && RTE_USART16 && !(defined(RTE_USART16_DMA_EN) && RTE_USART16_DMA_EN)) && \
1120       defined(LPUART16)) ||                                                                            \
1121      ((defined(RTE_USART17) && RTE_USART17 && !(defined(RTE_USART17_DMA_EN) && RTE_USART17_DMA_EN)) && \
1122       defined(LPUART17)) ||                                                                            \
1123      ((defined(RTE_USART18) && RTE_USART18 && !(defined(RTE_USART18_DMA_EN) && RTE_USART18_DMA_EN)) && \
1124       defined(LPUART18)) ||                                                                            \
1125      ((defined(RTE_USART19) && RTE_USART19 && !(defined(RTE_USART19_DMA_EN) && RTE_USART19_DMA_EN)) && \
1126       defined(LPUART19)) ||                                                                            \
1127      ((defined(RTE_USART20) && RTE_USART20 && !(defined(RTE_USART20_DMA_EN) && RTE_USART20_DMA_EN)) && \
1128       defined(LPUART20)))
1129 
KSDK_LPUART_NonBlockingCallback(LPUART_Type * base,lpuart_handle_t * handle,status_t status,void * userData)1130 static void KSDK_LPUART_NonBlockingCallback(LPUART_Type *base, lpuart_handle_t *handle, status_t status, void *userData)
1131 {
1132     uint32_t event = 0U;
1133 
1134     if (kStatus_LPUART_TxIdle == status)
1135     {
1136         event = ARM_USART_EVENT_SEND_COMPLETE;
1137     }
1138     if (kStatus_LPUART_RxIdle == status)
1139     {
1140         event = ARM_USART_EVENT_RECEIVE_COMPLETE;
1141     }
1142     if (kStatus_LPUART_RxHardwareOverrun == status)
1143     {
1144         event = ARM_USART_EVENT_RX_OVERFLOW;
1145     }
1146 
1147     /* User data is actually CMSIS driver callback. */
1148     if ((0U != event) && (userData != NULL))
1149     {
1150         ((ARM_USART_SignalEvent_t)userData)(event);
1151     }
1152 }
1153 
LPUART_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event,cmsis_lpuart_non_blocking_driver_state_t * lpuart)1154 static int32_t LPUART_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event,
1155                                             cmsis_lpuart_non_blocking_driver_state_t *lpuart)
1156 {
1157     if (0U == (lpuart->flags & (uint8_t)USART_FLAG_INIT))
1158     {
1159         lpuart->cb_event = cb_event;
1160         lpuart->flags    = (uint8_t)USART_FLAG_INIT;
1161     }
1162 
1163     return ARM_DRIVER_OK;
1164 }
1165 
LPUART_NonBlockingUninitialize(cmsis_lpuart_non_blocking_driver_state_t * lpuart)1166 static int32_t LPUART_NonBlockingUninitialize(cmsis_lpuart_non_blocking_driver_state_t *lpuart)
1167 {
1168     lpuart->flags = (uint8_t)USART_FLAG_UNINIT;
1169     return ARM_DRIVER_OK;
1170 }
1171 
LPUART_NonBlockingPowerControl(ARM_POWER_STATE state,cmsis_lpuart_non_blocking_driver_state_t * lpuart)1172 static int32_t LPUART_NonBlockingPowerControl(ARM_POWER_STATE state, cmsis_lpuart_non_blocking_driver_state_t *lpuart)
1173 {
1174     lpuart_config_t config;
1175     int32_t result = ARM_DRIVER_OK;
1176 
1177     switch (state)
1178     {
1179         case ARM_POWER_OFF:
1180             if ((lpuart->flags & (uint8_t)USART_FLAG_POWER) != 0U)
1181             {
1182                 LPUART_Deinit(lpuart->resource->base);
1183                 lpuart->flags = (uint8_t)USART_FLAG_INIT;
1184             }
1185             break;
1186         case ARM_POWER_LOW:
1187             result = ARM_DRIVER_ERROR_UNSUPPORTED;
1188             break;
1189         case ARM_POWER_FULL:
1190             /* Must be initialized first. */
1191             if (lpuart->flags == (uint8_t)USART_FLAG_UNINIT)
1192             {
1193                 result = ARM_DRIVER_ERROR;
1194                 break;
1195             }
1196 
1197             if ((lpuart->flags & (uint8_t)USART_FLAG_POWER) != 0U)
1198             {
1199                 /* Driver already powered */
1200                 break;
1201             }
1202 
1203             LPUART_GetDefaultConfig(&config);
1204             config.enableTx = true;
1205             config.enableRx = true;
1206 
1207             (void)LPUART_Init(lpuart->resource->base, &config, lpuart->resource->GetFreq());
1208             LPUART_TransferCreateHandle(lpuart->resource->base, lpuart->handle, KSDK_LPUART_NonBlockingCallback,
1209                                         (void *)lpuart->cb_event);
1210             lpuart->flags |= ((uint8_t)USART_FLAG_POWER | (uint8_t)USART_FLAG_CONFIGURED);
1211 
1212             break;
1213         default:
1214             result = ARM_DRIVER_ERROR_UNSUPPORTED;
1215             break;
1216     }
1217 
1218     return result;
1219 }
1220 
LPUART_NonBlockingSend(const void * data,uint32_t num,cmsis_lpuart_non_blocking_driver_state_t * lpuart)1221 static int32_t LPUART_NonBlockingSend(const void *data, uint32_t num, cmsis_lpuart_non_blocking_driver_state_t *lpuart)
1222 {
1223     int32_t ret;
1224     status_t status;
1225     lpuart_transfer_t xfer;
1226 
1227     xfer.data     = (uint8_t *)data;
1228     xfer.dataSize = num;
1229 
1230     status = LPUART_TransferSendNonBlocking(lpuart->resource->base, lpuart->handle, &xfer);
1231 
1232     switch (status)
1233     {
1234         case kStatus_Success:
1235             ret = ARM_DRIVER_OK;
1236             break;
1237         case kStatus_InvalidArgument:
1238             ret = ARM_DRIVER_ERROR_PARAMETER;
1239             break;
1240         case kStatus_LPUART_RxBusy:
1241             ret = ARM_DRIVER_ERROR_BUSY;
1242             break;
1243         default:
1244             ret = ARM_DRIVER_ERROR;
1245             break;
1246     }
1247 
1248     return ret;
1249 }
1250 
LPUART_NonBlockingReceive(void * data,uint32_t num,cmsis_lpuart_non_blocking_driver_state_t * lpuart)1251 static int32_t LPUART_NonBlockingReceive(void *data, uint32_t num, cmsis_lpuart_non_blocking_driver_state_t *lpuart)
1252 {
1253     int32_t ret;
1254     status_t status;
1255     lpuart_transfer_t xfer;
1256 
1257     xfer.data     = (uint8_t *)data;
1258     xfer.dataSize = num;
1259 
1260     status = LPUART_TransferReceiveNonBlocking(lpuart->resource->base, lpuart->handle, &xfer, NULL);
1261 
1262     switch (status)
1263     {
1264         case kStatus_Success:
1265             ret = ARM_DRIVER_OK;
1266             break;
1267         case kStatus_InvalidArgument:
1268             ret = ARM_DRIVER_ERROR_PARAMETER;
1269             break;
1270         case kStatus_LPUART_TxBusy:
1271             ret = ARM_DRIVER_ERROR_BUSY;
1272             break;
1273         default:
1274             ret = ARM_DRIVER_ERROR;
1275             break;
1276     }
1277 
1278     return ret;
1279 }
1280 
LPUART_NonBlockingTransfer(const void * data_out,void * data_in,uint32_t num,cmsis_lpuart_non_blocking_driver_state_t * lpuart)1281 static int32_t LPUART_NonBlockingTransfer(const void *data_out,
1282                                           void *data_in,
1283                                           uint32_t num,
1284                                           cmsis_lpuart_non_blocking_driver_state_t *lpuart)
1285 {
1286     /* Only in synchronous mode */
1287     return ARM_DRIVER_ERROR;
1288 }
1289 
LPUART_NonBlockingGetTxCount(cmsis_lpuart_non_blocking_driver_state_t * lpuart)1290 static uint32_t LPUART_NonBlockingGetTxCount(cmsis_lpuart_non_blocking_driver_state_t *lpuart)
1291 {
1292     uint32_t cnt;
1293 
1294     /* If TX not in progress, then the TX count is txDataSizeAll saved in handle. */
1295     if (kStatus_NoTransferInProgress == LPUART_TransferGetSendCount(lpuart->resource->base, lpuart->handle, &cnt))
1296     {
1297         cnt = lpuart->handle->txDataSizeAll;
1298     }
1299 
1300     return cnt;
1301 }
1302 
LPUART_NonBlockingGetRxCount(cmsis_lpuart_non_blocking_driver_state_t * lpuart)1303 static uint32_t LPUART_NonBlockingGetRxCount(cmsis_lpuart_non_blocking_driver_state_t *lpuart)
1304 {
1305     uint32_t cnt;
1306 
1307     if (kStatus_NoTransferInProgress == LPUART_TransferGetReceiveCount(lpuart->resource->base, lpuart->handle, &cnt))
1308     {
1309         cnt = lpuart->handle->rxDataSizeAll;
1310     }
1311 
1312     return cnt;
1313 }
1314 
LPUART_NonBlockingControl(uint32_t control,uint32_t arg,cmsis_lpuart_non_blocking_driver_state_t * lpuart)1315 static int32_t LPUART_NonBlockingControl(uint32_t control,
1316                                          uint32_t arg,
1317                                          cmsis_lpuart_non_blocking_driver_state_t *lpuart)
1318 {
1319     int32_t result  = ARM_DRIVER_OK;
1320     bool isContinue = false;
1321     /* Must be power on. */
1322     if (0U == (lpuart->flags & (uint8_t)USART_FLAG_POWER))
1323     {
1324         return ARM_DRIVER_ERROR;
1325     }
1326 
1327     /* Does not support these features. */
1328     if ((control & (ARM_USART_FLOW_CONTROL_Msk | ARM_USART_CPOL_Msk | ARM_USART_CPHA_Msk)) != 0U)
1329     {
1330         return ARM_DRIVER_ERROR_UNSUPPORTED;
1331     }
1332 
1333     switch (control & ARM_USART_CONTROL_Msk)
1334     {
1335         /* Abort Send */
1336         case ARM_USART_ABORT_SEND:
1337             LPUART_TransferAbortSend(lpuart->resource->base, lpuart->handle);
1338             result = ARM_DRIVER_OK;
1339             break;
1340 
1341         /* Abort receive */
1342         case ARM_USART_ABORT_RECEIVE:
1343             LPUART_TransferAbortReceive(lpuart->resource->base, lpuart->handle);
1344             result = ARM_DRIVER_OK;
1345             break;
1346 
1347         default:
1348             isContinue = true;
1349             break;
1350     }
1351     if (isContinue)
1352     {
1353         result = LPUART_CommonControl(control, arg, lpuart->resource, &lpuart->flags);
1354     }
1355     return result;
1356 }
1357 
LPUART_NonBlockingGetStatus(cmsis_lpuart_non_blocking_driver_state_t * lpuart)1358 static ARM_USART_STATUS LPUART_NonBlockingGetStatus(cmsis_lpuart_non_blocking_driver_state_t *lpuart)
1359 {
1360     ARM_USART_STATUS stat       = {0};
1361     uint32_t ksdk_lpuart_status = LPUART_GetStatusFlags(lpuart->resource->base);
1362 
1363     stat.tx_busy = (((uint8_t)kLPUART_TxBusy == lpuart->handle->txState) ? (1U) : (0U));
1364     stat.rx_busy = (((uint8_t)kLPUART_RxBusy == lpuart->handle->rxState) ? (1U) : (0U));
1365 
1366     stat.tx_underflow = 0U;
1367     stat.rx_overflow  = (uint32_t)(((ksdk_lpuart_status & (uint32_t)kLPUART_RxOverrunFlag)) != 0U);
1368 #if defined(FSL_FEATURE_LPUART_HAS_LIN_BREAK_DETECT) && FSL_FEATURE_LPUART_HAS_LIN_BREAK_DETECT
1369     stat.rx_break = (uint32_t)(((ksdk_lpuart_status & (uint32_t)kLPUART_LinBreakFlag)) != 0U);
1370 #else
1371     stat.rx_break = 0U;
1372 #endif
1373     stat.rx_framing_error = (uint32_t)(((ksdk_lpuart_status & (uint32_t)kLPUART_FramingErrorFlag)) != 0U);
1374     stat.rx_parity_error  = (uint32_t)(((ksdk_lpuart_status & (uint32_t)kLPUART_ParityErrorFlag)) != 0U);
1375     stat.reserved         = 0U;
1376 
1377     return stat;
1378 }
1379 
1380 #endif
1381 
1382 #if defined(LPUART0) && defined(RTE_USART0) && RTE_USART0
1383 
1384 /* User needs to provide the implementation for LPUART0_GetFreq/InitPins/DeinitPins
1385 in the application for enabling according instance. */
1386 extern uint32_t LPUART0_GetFreq(void);
1387 
1388 static cmsis_lpuart_resource_t LPUART0_Resource = {LPUART0, LPUART0_GetFreq};
1389 
1390 #if defined(RTE_USART0_DMA_EN) && RTE_USART0_DMA_EN
1391 
1392 #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT)
1393 
1394 static cmsis_lpuart_dma_resource_t LPUART0_DmaResource = {
1395     RTE_USART0_DMA_TX_DMA_BASE,    RTE_USART0_DMA_TX_CH,          RTE_USART0_DMA_TX_PERI_SEL,
1396     RTE_USART0_DMA_RX_DMA_BASE,    RTE_USART0_DMA_RX_CH,          RTE_USART0_DMA_RX_PERI_SEL,
1397 
1398 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
1399     RTE_USART0_DMA_TX_DMAMUX_BASE, RTE_USART0_DMA_RX_DMAMUX_BASE,
1400 #endif
1401 #if FSL_FEATURE_DMA_MODULE_CHANNEL != FSL_FEATURE_DMAMUX_MODULE_CHANNEL
1402     RTE_USART0_DMAMUX_TX_CH,       RTE_USART0_DMAMUX_RX_CH
1403 #endif
1404 };
1405 
1406 static lpuart_dma_handle_t LPUART0_DmaHandle;
1407 static dma_handle_t LPUART0_DmaRxHandle;
1408 static dma_handle_t LPUART0_DmaTxHandle;
1409 
1410 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
1411 ARMCC_SECTION("lpuart0_dma_driver_state")
1412 static cmsis_lpuart_dma_driver_state_t LPUART0_DmaDriverState = {
1413 #else
1414 static cmsis_lpuart_dma_driver_state_t LPUART0_DmaDriverState = {
1415 #endif
1416     &LPUART0_Resource, &LPUART0_DmaResource, &LPUART0_DmaHandle, &LPUART0_DmaRxHandle, &LPUART0_DmaTxHandle,
1417 };
1418 
LPUART0_DmaInitialize(ARM_USART_SignalEvent_t cb_event)1419 static int32_t LPUART0_DmaInitialize(ARM_USART_SignalEvent_t cb_event)
1420 {
1421 #ifdef RTE_USART0_PIN_INIT
1422     RTE_USART0_PIN_INIT();
1423 #endif
1424     return LPUART_DmaInitialize(cb_event, &LPUART0_DmaDriverState);
1425 }
1426 
LPUART0_DmaUninitialize(void)1427 static int32_t LPUART0_DmaUninitialize(void)
1428 {
1429 #ifdef RTE_USART0_PIN_DEINIT
1430     RTE_USART0_PIN_DEINIT();
1431 #endif
1432     return LPUART_DmaUninitialize(&LPUART0_DmaDriverState);
1433 }
1434 
LPUART0_DmaPowerControl(ARM_POWER_STATE state)1435 static int32_t LPUART0_DmaPowerControl(ARM_POWER_STATE state)
1436 {
1437     return LPUART_DmaPowerControl(state, &LPUART0_DmaDriverState);
1438 }
1439 
LPUART0_DmaSend(const void * data,uint32_t num)1440 static int32_t LPUART0_DmaSend(const void *data, uint32_t num)
1441 {
1442     return LPUART_DmaSend(data, num, &LPUART0_DmaDriverState);
1443 }
1444 
LPUART0_DmaReceive(void * data,uint32_t num)1445 static int32_t LPUART0_DmaReceive(void *data, uint32_t num)
1446 {
1447     return LPUART_DmaReceive(data, num, &LPUART0_DmaDriverState);
1448 }
1449 
LPUART0_DmaTransfer(const void * data_out,void * data_in,uint32_t num)1450 static int32_t LPUART0_DmaTransfer(const void *data_out, void *data_in, uint32_t num)
1451 {
1452     return LPUART_DmaTransfer(data_out, data_in, num, &LPUART0_DmaDriverState);
1453 }
1454 
LPUART0_DmaGetTxCount(void)1455 static uint32_t LPUART0_DmaGetTxCount(void)
1456 {
1457     return LPUART_DmaGetTxCount(&LPUART0_DmaDriverState);
1458 }
1459 
LPUART0_DmaGetRxCount(void)1460 static uint32_t LPUART0_DmaGetRxCount(void)
1461 {
1462     return LPUART_DmaGetRxCount(&LPUART0_DmaDriverState);
1463 }
1464 
LPUART0_DmaControl(uint32_t control,uint32_t arg)1465 static int32_t LPUART0_DmaControl(uint32_t control, uint32_t arg)
1466 {
1467     return LPUART_DmaControl(control, arg, &LPUART0_DmaDriverState);
1468 }
1469 
LPUART0_DmaGetStatus(void)1470 static ARM_USART_STATUS LPUART0_DmaGetStatus(void)
1471 {
1472     return LPUART_DmaGetStatus(&LPUART0_DmaDriverState);
1473 }
1474 
1475 #endif
1476 
1477 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
1478 
1479 static cmsis_lpuart_edma_resource_t LPUART0_EdmaResource = {
1480     RTE_USART0_DMA_TX_DMA_BASE,    RTE_USART0_DMA_TX_CH,          RTE_USART0_DMA_TX_PERI_SEL,
1481     RTE_USART0_DMA_RX_DMA_BASE,    RTE_USART0_DMA_RX_CH,          RTE_USART0_DMA_RX_PERI_SEL,
1482 
1483 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
1484     RTE_USART0_DMA_TX_DMAMUX_BASE, RTE_USART0_DMA_RX_DMAMUX_BASE,
1485 #endif
1486 };
1487 
1488 static lpuart_edma_handle_t LPUART0_EdmaHandle;
1489 static edma_handle_t LPUART0_EdmaRxHandle;
1490 static edma_handle_t LPUART0_EdmaTxHandle;
1491 
1492 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
1493 ARMCC_SECTION("lpuart0_edma_driver_state")
1494 static cmsis_lpuart_edma_driver_state_t LPUART0_EdmaDriverState = {
1495 #else
1496 static cmsis_lpuart_edma_driver_state_t LPUART0_EdmaDriverState = {
1497 #endif
1498     &LPUART0_Resource, &LPUART0_EdmaResource, &LPUART0_EdmaHandle, &LPUART0_EdmaRxHandle, &LPUART0_EdmaTxHandle,
1499 };
1500 
LPUART0_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)1501 static int32_t LPUART0_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)
1502 {
1503 #ifdef RTE_USART0_PIN_INIT
1504     RTE_USART0_PIN_INIT();
1505 #endif
1506     return LPUART_EdmaInitialize(cb_event, &LPUART0_EdmaDriverState);
1507 }
1508 
LPUART0_EdmaUninitialize(void)1509 static int32_t LPUART0_EdmaUninitialize(void)
1510 {
1511 #ifdef RTE_USART0_PIN_DEINIT
1512     RTE_USART0_PIN_DEINIT();
1513 #endif
1514     return LPUART_EdmaUninitialize(&LPUART0_EdmaDriverState);
1515 }
1516 
LPUART0_EdmaPowerControl(ARM_POWER_STATE state)1517 static int32_t LPUART0_EdmaPowerControl(ARM_POWER_STATE state)
1518 {
1519     return LPUART_EdmaPowerControl(state, &LPUART0_EdmaDriverState);
1520 }
1521 
LPUART0_EdmaSend(const void * data,uint32_t num)1522 static int32_t LPUART0_EdmaSend(const void *data, uint32_t num)
1523 {
1524     return LPUART_EdmaSend(data, num, &LPUART0_EdmaDriverState);
1525 }
1526 
LPUART0_EdmaReceive(void * data,uint32_t num)1527 static int32_t LPUART0_EdmaReceive(void *data, uint32_t num)
1528 {
1529     return LPUART_EdmaReceive(data, num, &LPUART0_EdmaDriverState);
1530 }
1531 
LPUART0_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)1532 static int32_t LPUART0_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
1533 {
1534     return LPUART_EdmaTransfer(data_out, data_in, num, &LPUART0_EdmaDriverState);
1535 }
1536 
LPUART0_EdmaGetTxCount(void)1537 static uint32_t LPUART0_EdmaGetTxCount(void)
1538 {
1539     return LPUART_EdmaGetTxCount(&LPUART0_EdmaDriverState);
1540 }
1541 
LPUART0_EdmaGetRxCount(void)1542 static uint32_t LPUART0_EdmaGetRxCount(void)
1543 {
1544     return LPUART_EdmaGetRxCount(&LPUART0_EdmaDriverState);
1545 }
1546 
LPUART0_EdmaControl(uint32_t control,uint32_t arg)1547 static int32_t LPUART0_EdmaControl(uint32_t control, uint32_t arg)
1548 {
1549     return LPUART_EdmaControl(control, arg, &LPUART0_EdmaDriverState);
1550 }
1551 
LPUART0_EdmaGetStatus(void)1552 static ARM_USART_STATUS LPUART0_EdmaGetStatus(void)
1553 {
1554     return LPUART_EdmaGetStatus(&LPUART0_EdmaDriverState);
1555 }
1556 
1557 #endif
1558 
1559 #else
1560 
1561 static lpuart_handle_t LPUART0_Handle;
1562 
1563 #if defined(USART0_RX_BUFFER_ENABLE) && (USART0_RX_BUFFER_ENABLE == 1)
1564 static uint8_t lpuart0_rxRingBuffer[USART_RX_BUFFER_LEN];
1565 #endif
1566 
1567 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
1568 ARMCC_SECTION("lpuart0_non_blocking_driver_state")
1569 static cmsis_lpuart_non_blocking_driver_state_t LPUART0_NonBlockingDriverState = {
1570 #else
1571 static cmsis_lpuart_non_blocking_driver_state_t LPUART0_NonBlockingDriverState = {
1572 #endif
1573     &LPUART0_Resource,
1574     &LPUART0_Handle,
1575 };
1576 
LPUART0_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)1577 static int32_t LPUART0_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)
1578 {
1579 #ifdef RTE_USART0_PIN_INIT
1580     RTE_USART0_PIN_INIT();
1581 #endif
1582     return LPUART_NonBlockingInitialize(cb_event, &LPUART0_NonBlockingDriverState);
1583 }
1584 
LPUART0_NonBlockingUninitialize(void)1585 static int32_t LPUART0_NonBlockingUninitialize(void)
1586 {
1587 #ifdef RTE_USART0_PIN_DEINIT
1588     RTE_USART0_PIN_DEINIT();
1589 #endif
1590     return LPUART_NonBlockingUninitialize(&LPUART0_NonBlockingDriverState);
1591 }
1592 
LPUART0_NonBlockingPowerControl(ARM_POWER_STATE state)1593 static int32_t LPUART0_NonBlockingPowerControl(ARM_POWER_STATE state)
1594 {
1595     int32_t result;
1596 
1597     result = LPUART_NonBlockingPowerControl(state, &LPUART0_NonBlockingDriverState);
1598 
1599 #if defined(USART0_RX_BUFFER_ENABLE) && (USART0_RX_BUFFER_ENABLE == 1)
1600     if ((state == ARM_POWER_FULL) && (LPUART0_NonBlockingDriverState.handle->rxRingBuffer == NULL))
1601     {
1602         LPUART_TransferStartRingBuffer(LPUART0_NonBlockingDriverState.resource->base,
1603                                        LPUART0_NonBlockingDriverState.handle, lpuart0_rxRingBuffer,
1604                                        USART_RX_BUFFER_LEN);
1605     }
1606 #endif
1607 
1608     return result;
1609 }
1610 
LPUART0_NonBlockingSend(const void * data,uint32_t num)1611 static int32_t LPUART0_NonBlockingSend(const void *data, uint32_t num)
1612 {
1613     return LPUART_NonBlockingSend(data, num, &LPUART0_NonBlockingDriverState);
1614 }
1615 
LPUART0_NonBlockingReceive(void * data,uint32_t num)1616 static int32_t LPUART0_NonBlockingReceive(void *data, uint32_t num)
1617 {
1618     return LPUART_NonBlockingReceive(data, num, &LPUART0_NonBlockingDriverState);
1619 }
1620 
LPUART0_NonBlockingTransfer(const void * data_out,void * data_in,uint32_t num)1621 static int32_t LPUART0_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num)
1622 {
1623     return LPUART_NonBlockingTransfer(data_out, data_in, num, &LPUART0_NonBlockingDriverState);
1624 }
1625 
LPUART0_NonBlockingGetTxCount(void)1626 static uint32_t LPUART0_NonBlockingGetTxCount(void)
1627 {
1628     return LPUART_NonBlockingGetTxCount(&LPUART0_NonBlockingDriverState);
1629 }
1630 
LPUART0_NonBlockingGetRxCount(void)1631 static uint32_t LPUART0_NonBlockingGetRxCount(void)
1632 {
1633     return LPUART_NonBlockingGetRxCount(&LPUART0_NonBlockingDriverState);
1634 }
1635 
LPUART0_NonBlockingControl(uint32_t control,uint32_t arg)1636 static int32_t LPUART0_NonBlockingControl(uint32_t control, uint32_t arg)
1637 {
1638     int32_t result;
1639 
1640     result = LPUART_NonBlockingControl(control, arg, &LPUART0_NonBlockingDriverState);
1641     if (ARM_DRIVER_OK != result)
1642     {
1643         return result;
1644     }
1645 
1646     /* Enable the receive interrupts if ring buffer is used */
1647     if (LPUART0_NonBlockingDriverState.handle->rxRingBuffer != NULL)
1648     {
1649         LPUART_EnableInterrupts(
1650             LPUART0_NonBlockingDriverState.resource->base,
1651             (uint32_t)kLPUART_RxDataRegFullInterruptEnable | (uint32_t)kLPUART_RxOverrunInterruptEnable);
1652     }
1653 
1654     return ARM_DRIVER_OK;
1655 }
1656 
LPUART0_NonBlockingGetStatus(void)1657 static ARM_USART_STATUS LPUART0_NonBlockingGetStatus(void)
1658 {
1659     return LPUART_NonBlockingGetStatus(&LPUART0_NonBlockingDriverState);
1660 }
1661 
1662 #endif
1663 
1664 #if (FSL_FEATURE_SOC_LPUART_COUNT == 1)
1665 #if (FSL_FEATURE_SOC_UART_COUNT == 3)
1666 ARM_DRIVER_USART Driver_USART3 = {
1667 #elif (FSL_FEATURE_SOC_UART_COUNT == 4)
1668 ARM_DRIVER_USART Driver_USART4 = {
1669 #elif (FSL_FEATURE_SOC_UART_COUNT == 5)
1670 ARM_DRIVER_USART Driver_USART5 = {
1671 #else
1672 ARM_DRIVER_USART Driver_USART0 = {
1673 #endif
1674 #else
1675 ARM_DRIVER_USART Driver_USART0 = {
1676 #endif
1677 
1678     LPUARTx_GetVersion,      LPUARTx_GetCapabilities,
1679 #if defined(RTE_USART0_DMA_EN) && RTE_USART0_DMA_EN
1680 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
1681     LPUART0_EdmaInitialize,  LPUART0_EdmaUninitialize, LPUART0_EdmaPowerControl, LPUART0_EdmaSend,
1682     LPUART0_EdmaReceive,     LPUART0_EdmaTransfer,     LPUART0_EdmaGetTxCount,   LPUART0_EdmaGetRxCount,
1683     LPUART0_EdmaControl,     LPUART0_EdmaGetStatus,
1684 #else
1685     LPUART0_DmaInitialize,   LPUART0_DmaUninitialize, LPUART0_DmaPowerControl, LPUART0_DmaSend,    LPUART0_DmaReceive,
1686     LPUART0_DmaTransfer,     LPUART0_DmaGetTxCount,   LPUART0_DmaGetRxCount,   LPUART0_DmaControl, LPUART0_DmaGetStatus,
1687 #endif
1688 #else
1689     LPUART0_NonBlockingInitialize,
1690     LPUART0_NonBlockingUninitialize,
1691     LPUART0_NonBlockingPowerControl,
1692     LPUART0_NonBlockingSend,
1693     LPUART0_NonBlockingReceive,
1694     LPUART0_NonBlockingTransfer,
1695     LPUART0_NonBlockingGetTxCount,
1696     LPUART0_NonBlockingGetRxCount,
1697     LPUART0_NonBlockingControl,
1698     LPUART0_NonBlockingGetStatus,
1699 #endif
1700     LPUARTx_SetModemControl, LPUARTx_GetModemStatus};
1701 
1702 #endif /* LPUART0 */
1703 
1704 #if defined(LPUART1) && defined(RTE_USART1) && RTE_USART1
1705 
1706 /* User needs to provide the implementation for LPUART1_GetFreq/InitPins/DeinitPins
1707 in the application for enabling according instance. */
1708 extern uint32_t LPUART1_GetFreq(void);
1709 
1710 static cmsis_lpuart_resource_t LPUART1_Resource = {LPUART1, LPUART1_GetFreq};
1711 
1712 #if defined(RTE_USART1_DMA_EN) && RTE_USART1_DMA_EN
1713 
1714 #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT)
1715 
1716 static cmsis_lpuart_dma_resource_t LPUART1_DmaResource = {
1717     RTE_USART1_DMA_TX_DMA_BASE,    RTE_USART1_DMA_TX_CH,          RTE_USART1_DMA_TX_PERI_SEL,
1718     RTE_USART1_DMA_RX_DMA_BASE,    RTE_USART1_DMA_RX_CH,          RTE_USART1_DMA_RX_PERI_SEL,
1719 
1720 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
1721     RTE_USART1_DMA_TX_DMAMUX_BASE, RTE_USART1_DMA_RX_DMAMUX_BASE,
1722 #endif
1723 #if FSL_FEATURE_DMA_MODULE_CHANNEL != FSL_FEATURE_DMAMUX_MODULE_CHANNEL
1724     RTE_USART1_DMAMUX_TX_CH,       RTE_USART1_DMAMUX_RX_CH
1725 #endif
1726 };
1727 
1728 static lpuart_dma_handle_t LPUART1_DmaHandle;
1729 static dma_handle_t LPUART1_DmaRxHandle;
1730 static dma_handle_t LPUART1_DmaTxHandle;
1731 
1732 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
1733 ARMCC_SECTION("lpuart1_dma_driver_state")
1734 static cmsis_lpuart_dma_driver_state_t LPUART1_DmaDriverState = {
1735 #else
1736 static cmsis_lpuart_dma_driver_state_t LPUART1_DmaDriverState = {
1737 #endif
1738     &LPUART1_Resource, &LPUART1_DmaResource, &LPUART1_DmaHandle, &LPUART1_DmaRxHandle, &LPUART1_DmaTxHandle,
1739 };
1740 
LPUART1_DmaInitialize(ARM_USART_SignalEvent_t cb_event)1741 static int32_t LPUART1_DmaInitialize(ARM_USART_SignalEvent_t cb_event)
1742 {
1743 #ifdef RTE_USART1_PIN_INIT
1744     RTE_USART1_PIN_INIT();
1745 #endif
1746     return LPUART_DmaInitialize(cb_event, &LPUART1_DmaDriverState);
1747 }
1748 
LPUART1_DmaUninitialize(void)1749 static int32_t LPUART1_DmaUninitialize(void)
1750 {
1751 #ifdef RTE_USART1_PIN_DEINIT
1752     RTE_USART1_PIN_DEINIT();
1753 #endif
1754     return LPUART_DmaUninitialize(&LPUART1_DmaDriverState);
1755 }
1756 
LPUART1_DmaPowerControl(ARM_POWER_STATE state)1757 static int32_t LPUART1_DmaPowerControl(ARM_POWER_STATE state)
1758 {
1759     return LPUART_DmaPowerControl(state, &LPUART1_DmaDriverState);
1760 }
1761 
LPUART1_DmaSend(const void * data,uint32_t num)1762 static int32_t LPUART1_DmaSend(const void *data, uint32_t num)
1763 {
1764     return LPUART_DmaSend(data, num, &LPUART1_DmaDriverState);
1765 }
1766 
LPUART1_DmaReceive(void * data,uint32_t num)1767 static int32_t LPUART1_DmaReceive(void *data, uint32_t num)
1768 {
1769     return LPUART_DmaReceive(data, num, &LPUART1_DmaDriverState);
1770 }
1771 
LPUART1_DmaTransfer(const void * data_out,void * data_in,uint32_t num)1772 static int32_t LPUART1_DmaTransfer(const void *data_out, void *data_in, uint32_t num)
1773 {
1774     return LPUART_DmaTransfer(data_out, data_in, num, &LPUART1_DmaDriverState);
1775 }
1776 
LPUART1_DmaGetTxCount(void)1777 static uint32_t LPUART1_DmaGetTxCount(void)
1778 {
1779     return LPUART_DmaGetTxCount(&LPUART1_DmaDriverState);
1780 }
1781 
LPUART1_DmaGetRxCount(void)1782 static uint32_t LPUART1_DmaGetRxCount(void)
1783 {
1784     return LPUART_DmaGetRxCount(&LPUART1_DmaDriverState);
1785 }
1786 
LPUART1_DmaControl(uint32_t control,uint32_t arg)1787 static int32_t LPUART1_DmaControl(uint32_t control, uint32_t arg)
1788 {
1789     return LPUART_DmaControl(control, arg, &LPUART1_DmaDriverState);
1790 }
1791 
LPUART1_DmaGetStatus(void)1792 static ARM_USART_STATUS LPUART1_DmaGetStatus(void)
1793 {
1794     return LPUART_DmaGetStatus(&LPUART1_DmaDriverState);
1795 }
1796 
1797 #endif
1798 
1799 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
1800 
1801 static cmsis_lpuart_edma_resource_t LPUART1_EdmaResource = {
1802     RTE_USART1_DMA_TX_DMA_BASE,    RTE_USART1_DMA_TX_CH,          RTE_USART1_DMA_TX_PERI_SEL,
1803     RTE_USART1_DMA_RX_DMA_BASE,    RTE_USART1_DMA_RX_CH,          RTE_USART1_DMA_RX_PERI_SEL,
1804 
1805 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
1806     RTE_USART1_DMA_TX_DMAMUX_BASE, RTE_USART1_DMA_RX_DMAMUX_BASE,
1807 #endif
1808 };
1809 
1810 static lpuart_edma_handle_t LPUART1_EdmaHandle;
1811 static edma_handle_t LPUART1_EdmaRxHandle;
1812 static edma_handle_t LPUART1_EdmaTxHandle;
1813 
1814 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
1815 ARMCC_SECTION("lpuart1_edma_driver_state")
1816 static cmsis_lpuart_edma_driver_state_t LPUART1_EdmaDriverState = {
1817 #else
1818 static cmsis_lpuart_edma_driver_state_t LPUART1_EdmaDriverState = {
1819 #endif
1820     &LPUART1_Resource, &LPUART1_EdmaResource, &LPUART1_EdmaHandle, &LPUART1_EdmaRxHandle, &LPUART1_EdmaTxHandle,
1821 };
1822 
LPUART1_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)1823 static int32_t LPUART1_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)
1824 {
1825 #ifdef RTE_USART1_PIN_INIT
1826     RTE_USART1_PIN_INIT();
1827 #endif
1828     return LPUART_EdmaInitialize(cb_event, &LPUART1_EdmaDriverState);
1829 }
1830 
LPUART1_EdmaUninitialize(void)1831 static int32_t LPUART1_EdmaUninitialize(void)
1832 {
1833 #ifdef RTE_USART1_PIN_DEINIT
1834     RTE_USART1_PIN_DEINIT();
1835 #endif
1836     return LPUART_EdmaUninitialize(&LPUART1_EdmaDriverState);
1837 }
1838 
LPUART1_EdmaPowerControl(ARM_POWER_STATE state)1839 static int32_t LPUART1_EdmaPowerControl(ARM_POWER_STATE state)
1840 {
1841     return LPUART_EdmaPowerControl(state, &LPUART1_EdmaDriverState);
1842 }
1843 
LPUART1_EdmaSend(const void * data,uint32_t num)1844 static int32_t LPUART1_EdmaSend(const void *data, uint32_t num)
1845 {
1846     return LPUART_EdmaSend(data, num, &LPUART1_EdmaDriverState);
1847 }
1848 
LPUART1_EdmaReceive(void * data,uint32_t num)1849 static int32_t LPUART1_EdmaReceive(void *data, uint32_t num)
1850 {
1851     return LPUART_EdmaReceive(data, num, &LPUART1_EdmaDriverState);
1852 }
1853 
LPUART1_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)1854 static int32_t LPUART1_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
1855 {
1856     return LPUART_EdmaTransfer(data_out, data_in, num, &LPUART1_EdmaDriverState);
1857 }
1858 
LPUART1_EdmaGetTxCount(void)1859 static uint32_t LPUART1_EdmaGetTxCount(void)
1860 {
1861     return LPUART_EdmaGetTxCount(&LPUART1_EdmaDriverState);
1862 }
1863 
LPUART1_EdmaGetRxCount(void)1864 static uint32_t LPUART1_EdmaGetRxCount(void)
1865 {
1866     return LPUART_EdmaGetRxCount(&LPUART1_EdmaDriverState);
1867 }
1868 
LPUART1_EdmaControl(uint32_t control,uint32_t arg)1869 static int32_t LPUART1_EdmaControl(uint32_t control, uint32_t arg)
1870 {
1871     return LPUART_EdmaControl(control, arg, &LPUART1_EdmaDriverState);
1872 }
1873 
LPUART1_EdmaGetStatus(void)1874 static ARM_USART_STATUS LPUART1_EdmaGetStatus(void)
1875 {
1876     return LPUART_EdmaGetStatus(&LPUART1_EdmaDriverState);
1877 }
1878 
1879 #endif
1880 
1881 #else
1882 
1883 static lpuart_handle_t LPUART1_Handle;
1884 
1885 #if defined(USART1_RX_BUFFER_ENABLE) && (USART1_RX_BUFFER_ENABLE == 1)
1886 static uint8_t lpuart1_rxRingBuffer[USART_RX_BUFFER_LEN];
1887 #endif
1888 
1889 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
1890 ARMCC_SECTION("lpuart1_non_blocking_driver_state")
1891 static cmsis_lpuart_non_blocking_driver_state_t LPUART1_NonBlockingDriverState = {
1892 #else
1893 static cmsis_lpuart_non_blocking_driver_state_t LPUART1_NonBlockingDriverState = {
1894 #endif
1895     &LPUART1_Resource,
1896     &LPUART1_Handle,
1897 };
1898 
LPUART1_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)1899 static int32_t LPUART1_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)
1900 {
1901 #ifdef RTE_USART1_PIN_INIT
1902     RTE_USART1_PIN_INIT();
1903 #endif
1904     return LPUART_NonBlockingInitialize(cb_event, &LPUART1_NonBlockingDriverState);
1905 }
1906 
LPUART1_NonBlockingUninitialize(void)1907 static int32_t LPUART1_NonBlockingUninitialize(void)
1908 {
1909 #ifdef RTE_USART1_PIN_DEINIT
1910     RTE_USART1_PIN_DEINIT();
1911 #endif
1912     return LPUART_NonBlockingUninitialize(&LPUART1_NonBlockingDriverState);
1913 }
1914 
LPUART1_NonBlockingPowerControl(ARM_POWER_STATE state)1915 static int32_t LPUART1_NonBlockingPowerControl(ARM_POWER_STATE state)
1916 {
1917     int32_t result;
1918 
1919     result = LPUART_NonBlockingPowerControl(state, &LPUART1_NonBlockingDriverState);
1920 
1921 #if defined(USART1_RX_BUFFER_ENABLE) && (USART1_RX_BUFFER_ENABLE == 1)
1922     if ((state == ARM_POWER_FULL) && (LPUART1_NonBlockingDriverState.handle->rxRingBuffer == NULL))
1923     {
1924         LPUART_TransferStartRingBuffer(LPUART1_NonBlockingDriverState.resource->base,
1925                                        LPUART1_NonBlockingDriverState.handle, lpuart1_rxRingBuffer,
1926                                        USART_RX_BUFFER_LEN);
1927     }
1928 #endif
1929 
1930     return result;
1931 }
1932 
LPUART1_NonBlockingSend(const void * data,uint32_t num)1933 static int32_t LPUART1_NonBlockingSend(const void *data, uint32_t num)
1934 {
1935     return LPUART_NonBlockingSend(data, num, &LPUART1_NonBlockingDriverState);
1936 }
1937 
LPUART1_NonBlockingReceive(void * data,uint32_t num)1938 static int32_t LPUART1_NonBlockingReceive(void *data, uint32_t num)
1939 {
1940     return LPUART_NonBlockingReceive(data, num, &LPUART1_NonBlockingDriverState);
1941 }
1942 
LPUART1_NonBlockingTransfer(const void * data_out,void * data_in,uint32_t num)1943 static int32_t LPUART1_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num)
1944 {
1945     return LPUART_NonBlockingTransfer(data_out, data_in, num, &LPUART1_NonBlockingDriverState);
1946 }
1947 
LPUART1_NonBlockingGetTxCount(void)1948 static uint32_t LPUART1_NonBlockingGetTxCount(void)
1949 {
1950     return LPUART_NonBlockingGetTxCount(&LPUART1_NonBlockingDriverState);
1951 }
1952 
LPUART1_NonBlockingGetRxCount(void)1953 static uint32_t LPUART1_NonBlockingGetRxCount(void)
1954 {
1955     return LPUART_NonBlockingGetRxCount(&LPUART1_NonBlockingDriverState);
1956 }
1957 
LPUART1_NonBlockingControl(uint32_t control,uint32_t arg)1958 static int32_t LPUART1_NonBlockingControl(uint32_t control, uint32_t arg)
1959 {
1960     int32_t result;
1961 
1962     result = LPUART_NonBlockingControl(control, arg, &LPUART1_NonBlockingDriverState);
1963     if (ARM_DRIVER_OK != result)
1964     {
1965         return result;
1966     }
1967 
1968     /* Enable the receive interrupts if ring buffer is used */
1969     if (LPUART1_NonBlockingDriverState.handle->rxRingBuffer != NULL)
1970     {
1971         LPUART_EnableInterrupts(
1972             LPUART1_NonBlockingDriverState.resource->base,
1973             (uint32_t)kLPUART_RxDataRegFullInterruptEnable | (uint32_t)kLPUART_RxOverrunInterruptEnable);
1974     }
1975 
1976     return ARM_DRIVER_OK;
1977 }
1978 
LPUART1_NonBlockingGetStatus(void)1979 static ARM_USART_STATUS LPUART1_NonBlockingGetStatus(void)
1980 {
1981     return LPUART_NonBlockingGetStatus(&LPUART1_NonBlockingDriverState);
1982 }
1983 
1984 #endif
1985 
1986 ARM_DRIVER_USART Driver_USART1 = {LPUARTx_GetVersion,      LPUARTx_GetCapabilities,
1987 #if defined(RTE_USART1_DMA_EN) && RTE_USART1_DMA_EN
1988 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
1989                                   LPUART1_EdmaInitialize,  LPUART1_EdmaUninitialize, LPUART1_EdmaPowerControl,
1990                                   LPUART1_EdmaSend,        LPUART1_EdmaReceive,      LPUART1_EdmaTransfer,
1991                                   LPUART1_EdmaGetTxCount,  LPUART1_EdmaGetRxCount,   LPUART1_EdmaControl,
1992                                   LPUART1_EdmaGetStatus,
1993 #else
1994                                   LPUART1_DmaInitialize,   LPUART1_DmaUninitialize, LPUART1_DmaPowerControl,
1995                                   LPUART1_DmaSend,         LPUART1_DmaReceive,      LPUART1_DmaTransfer,
1996                                   LPUART1_DmaGetTxCount,   LPUART1_DmaGetRxCount,   LPUART1_DmaControl,
1997                                   LPUART1_DmaGetStatus,
1998 #endif /* FSL_FEATURE_SOC_EDMA_COUNT */
1999 #else
2000                                   LPUART1_NonBlockingInitialize,
2001                                   LPUART1_NonBlockingUninitialize,
2002                                   LPUART1_NonBlockingPowerControl,
2003                                   LPUART1_NonBlockingSend,
2004                                   LPUART1_NonBlockingReceive,
2005                                   LPUART1_NonBlockingTransfer,
2006                                   LPUART1_NonBlockingGetTxCount,
2007                                   LPUART1_NonBlockingGetRxCount,
2008                                   LPUART1_NonBlockingControl,
2009                                   LPUART1_NonBlockingGetStatus,
2010 #endif /* RTE_USART1_DMA_EN */
2011                                   LPUARTx_SetModemControl, LPUARTx_GetModemStatus};
2012 
2013 #endif /* LPUART1 */
2014 
2015 #if defined(LPUART2) && defined(RTE_USART2) && RTE_USART2
2016 
2017 /* User needs to provide the implementation for LPUART2_GetFreq/InitPins/DeinitPins
2018 in the application for enabling according instance. */
2019 extern uint32_t LPUART2_GetFreq(void);
2020 
2021 static cmsis_lpuart_resource_t LPUART2_Resource = {LPUART2, LPUART2_GetFreq};
2022 
2023 #if defined(RTE_USART2_DMA_EN) && RTE_USART2_DMA_EN
2024 
2025 #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT)
2026 
2027 static cmsis_lpuart_dma_resource_t LPUART2_DmaResource = {
2028     RTE_USART2_DMA_TX_DMA_BASE,    RTE_USART2_DMA_TX_CH,          RTE_USART2_DMA_TX_PERI_SEL,
2029     RTE_USART2_DMA_RX_DMA_BASE,    RTE_USART2_DMA_RX_CH,          RTE_USART2_DMA_RX_PERI_SEL,
2030 
2031 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
2032     RTE_USART2_DMA_TX_DMAMUX_BASE, RTE_USART2_DMA_RX_DMAMUX_BASE,
2033 #endif
2034 #if FSL_FEATURE_DMA_MODULE_CHANNEL != FSL_FEATURE_DMAMUX_MODULE_CHANNEL
2035     RTE_USART2_DMAMUX_TX_CH,       RTE_USART2_DMAMUX_RX_CH
2036 #endif
2037 };
2038 
2039 static lpuart_dma_handle_t LPUART2_DmaHandle;
2040 static dma_handle_t LPUART2_DmaRxHandle;
2041 static dma_handle_t LPUART2_DmaTxHandle;
2042 
2043 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
2044 ARMCC_SECTION("lpuart2_dma_driver_state")
2045 static cmsis_lpuart_dma_driver_state_t LPUART2_DmaDriverState = {
2046 #else
2047 static cmsis_lpuart_dma_driver_state_t LPUART2_DmaDriverState = {
2048 #endif
2049     &LPUART2_Resource, &LPUART2_DmaResource, &LPUART2_DmaHandle, &LPUART2_DmaRxHandle, &LPUART2_DmaTxHandle,
2050 };
2051 
LPUART2_DmaInitialize(ARM_USART_SignalEvent_t cb_event)2052 static int32_t LPUART2_DmaInitialize(ARM_USART_SignalEvent_t cb_event)
2053 {
2054 #ifdef RTE_USART2_PIN_INIT
2055     RTE_USART2_PIN_INIT();
2056 #endif
2057     return LPUART_DmaInitialize(cb_event, &LPUART2_DmaDriverState);
2058 }
2059 
LPUART2_DmaUninitialize(void)2060 static int32_t LPUART2_DmaUninitialize(void)
2061 {
2062 #ifdef RTE_USART2_PIN_DEINIT
2063     RTE_USART2_PIN_DEINIT();
2064 #endif
2065     return LPUART_DmaUninitialize(&LPUART2_DmaDriverState);
2066 }
2067 
LPUART2_DmaPowerControl(ARM_POWER_STATE state)2068 static int32_t LPUART2_DmaPowerControl(ARM_POWER_STATE state)
2069 {
2070     return LPUART_DmaPowerControl(state, &LPUART2_DmaDriverState);
2071 }
2072 
LPUART2_DmaSend(const void * data,uint32_t num)2073 static int32_t LPUART2_DmaSend(const void *data, uint32_t num)
2074 {
2075     return LPUART_DmaSend(data, num, &LPUART2_DmaDriverState);
2076 }
2077 
LPUART2_DmaReceive(void * data,uint32_t num)2078 static int32_t LPUART2_DmaReceive(void *data, uint32_t num)
2079 {
2080     return LPUART_DmaReceive(data, num, &LPUART2_DmaDriverState);
2081 }
2082 
LPUART2_DmaTransfer(const void * data_out,void * data_in,uint32_t num)2083 static int32_t LPUART2_DmaTransfer(const void *data_out, void *data_in, uint32_t num)
2084 {
2085     return LPUART_DmaTransfer(data_out, data_in, num, &LPUART2_DmaDriverState);
2086 }
2087 
LPUART2_DmaGetTxCount(void)2088 static uint32_t LPUART2_DmaGetTxCount(void)
2089 {
2090     return LPUART_DmaGetTxCount(&LPUART2_DmaDriverState);
2091 }
2092 
LPUART2_DmaGetRxCount(void)2093 static uint32_t LPUART2_DmaGetRxCount(void)
2094 {
2095     return LPUART_DmaGetRxCount(&LPUART2_DmaDriverState);
2096 }
2097 
LPUART2_DmaControl(uint32_t control,uint32_t arg)2098 static int32_t LPUART2_DmaControl(uint32_t control, uint32_t arg)
2099 {
2100     return LPUART_DmaControl(control, arg, &LPUART2_DmaDriverState);
2101 }
2102 
LPUART2_DmaGetStatus(void)2103 static ARM_USART_STATUS LPUART2_DmaGetStatus(void)
2104 {
2105     return LPUART_DmaGetStatus(&LPUART2_DmaDriverState);
2106 }
2107 
2108 #endif
2109 
2110 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
2111 
2112 static cmsis_lpuart_edma_resource_t LPUART2_EdmaResource = {
2113     RTE_USART2_DMA_TX_DMA_BASE,    RTE_USART2_DMA_TX_CH,          RTE_USART2_DMA_TX_PERI_SEL,
2114     RTE_USART2_DMA_RX_DMA_BASE,    RTE_USART2_DMA_RX_CH,          RTE_USART2_DMA_RX_PERI_SEL,
2115 
2116 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
2117     RTE_USART2_DMA_TX_DMAMUX_BASE, RTE_USART2_DMA_RX_DMAMUX_BASE,
2118 #endif
2119 };
2120 
2121 static lpuart_edma_handle_t LPUART2_EdmaHandle;
2122 static edma_handle_t LPUART2_EdmaRxHandle;
2123 static edma_handle_t LPUART2_EdmaTxHandle;
2124 
2125 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
2126 ARMCC_SECTION("lpuart2_edma_driver_state")
2127 static cmsis_lpuart_edma_driver_state_t LPUART2_EdmaDriverState = {
2128 #else
2129 static cmsis_lpuart_edma_driver_state_t LPUART2_EdmaDriverState = {
2130 #endif
2131     &LPUART2_Resource, &LPUART2_EdmaResource, &LPUART2_EdmaHandle, &LPUART2_EdmaRxHandle, &LPUART2_EdmaTxHandle,
2132 };
2133 
LPUART2_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)2134 static int32_t LPUART2_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)
2135 {
2136 #ifdef RTE_USART2_PIN_INIT
2137     RTE_USART2_PIN_INIT();
2138 #endif
2139     return LPUART_EdmaInitialize(cb_event, &LPUART2_EdmaDriverState);
2140 }
2141 
LPUART2_EdmaUninitialize(void)2142 static int32_t LPUART2_EdmaUninitialize(void)
2143 {
2144 #ifdef RTE_USART2_PIN_DEINIT
2145     RTE_USART2_PIN_DEINIT();
2146 #endif
2147     return LPUART_EdmaUninitialize(&LPUART2_EdmaDriverState);
2148 }
2149 
LPUART2_EdmaPowerControl(ARM_POWER_STATE state)2150 static int32_t LPUART2_EdmaPowerControl(ARM_POWER_STATE state)
2151 {
2152     return LPUART_EdmaPowerControl(state, &LPUART2_EdmaDriverState);
2153 }
2154 
LPUART2_EdmaSend(const void * data,uint32_t num)2155 static int32_t LPUART2_EdmaSend(const void *data, uint32_t num)
2156 {
2157     return LPUART_EdmaSend(data, num, &LPUART2_EdmaDriverState);
2158 }
2159 
LPUART2_EdmaReceive(void * data,uint32_t num)2160 static int32_t LPUART2_EdmaReceive(void *data, uint32_t num)
2161 {
2162     return LPUART_EdmaReceive(data, num, &LPUART2_EdmaDriverState);
2163 }
2164 
LPUART2_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)2165 static int32_t LPUART2_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
2166 {
2167     return LPUART_EdmaTransfer(data_out, data_in, num, &LPUART2_EdmaDriverState);
2168 }
2169 
LPUART2_EdmaGetTxCount(void)2170 static uint32_t LPUART2_EdmaGetTxCount(void)
2171 {
2172     return LPUART_EdmaGetTxCount(&LPUART2_EdmaDriverState);
2173 }
2174 
LPUART2_EdmaGetRxCount(void)2175 static uint32_t LPUART2_EdmaGetRxCount(void)
2176 {
2177     return LPUART_EdmaGetRxCount(&LPUART2_EdmaDriverState);
2178 }
2179 
LPUART2_EdmaControl(uint32_t control,uint32_t arg)2180 static int32_t LPUART2_EdmaControl(uint32_t control, uint32_t arg)
2181 {
2182     return LPUART_EdmaControl(control, arg, &LPUART2_EdmaDriverState);
2183 }
2184 
LPUART2_EdmaGetStatus(void)2185 static ARM_USART_STATUS LPUART2_EdmaGetStatus(void)
2186 {
2187     return LPUART_EdmaGetStatus(&LPUART2_EdmaDriverState);
2188 }
2189 
2190 #endif
2191 
2192 #else
2193 
2194 static lpuart_handle_t LPUART2_Handle;
2195 
2196 #if defined(USART2_RX_BUFFER_ENABLE) && (USART2_RX_BUFFER_ENABLE == 1)
2197 static uint8_t lpuart2_rxRingBuffer[USART_RX_BUFFER_LEN];
2198 #endif
2199 
2200 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
2201 ARMCC_SECTION("lpuart2_non_blocking_driver_state")
2202 static cmsis_lpuart_non_blocking_driver_state_t LPUART2_NonBlockingDriverState = {
2203 #else
2204 static cmsis_lpuart_non_blocking_driver_state_t LPUART2_NonBlockingDriverState = {
2205 #endif
2206     &LPUART2_Resource,
2207     &LPUART2_Handle,
2208 };
2209 
LPUART2_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)2210 static int32_t LPUART2_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)
2211 {
2212 #ifdef RTE_USART2_PIN_INIT
2213     RTE_USART2_PIN_INIT();
2214 #endif
2215     return LPUART_NonBlockingInitialize(cb_event, &LPUART2_NonBlockingDriverState);
2216 }
2217 
LPUART2_NonBlockingUninitialize(void)2218 static int32_t LPUART2_NonBlockingUninitialize(void)
2219 {
2220 #ifdef RTE_USART2_PIN_DEINIT
2221     RTE_USART2_PIN_DEINIT();
2222 #endif
2223     return LPUART_NonBlockingUninitialize(&LPUART2_NonBlockingDriverState);
2224 }
2225 
LPUART2_NonBlockingPowerControl(ARM_POWER_STATE state)2226 static int32_t LPUART2_NonBlockingPowerControl(ARM_POWER_STATE state)
2227 {
2228     int32_t result;
2229 
2230     result = LPUART_NonBlockingPowerControl(state, &LPUART2_NonBlockingDriverState);
2231 
2232 #if defined(USART2_RX_BUFFER_ENABLE) && (USART2_RX_BUFFER_ENABLE == 1)
2233     if ((state == ARM_POWER_FULL) && (LPUART2_NonBlockingDriverState.handle->rxRingBuffer == NULL))
2234     {
2235         LPUART_TransferStartRingBuffer(LPUART2_NonBlockingDriverState.resource->base,
2236                                        LPUART2_NonBlockingDriverState.handle, lpuart2_rxRingBuffer,
2237                                        USART_RX_BUFFER_LEN);
2238     }
2239 #endif
2240 
2241     return result;
2242 }
2243 
LPUART2_NonBlockingSend(const void * data,uint32_t num)2244 static int32_t LPUART2_NonBlockingSend(const void *data, uint32_t num)
2245 {
2246     return LPUART_NonBlockingSend(data, num, &LPUART2_NonBlockingDriverState);
2247 }
2248 
LPUART2_NonBlockingReceive(void * data,uint32_t num)2249 static int32_t LPUART2_NonBlockingReceive(void *data, uint32_t num)
2250 {
2251     return LPUART_NonBlockingReceive(data, num, &LPUART2_NonBlockingDriverState);
2252 }
2253 
LPUART2_NonBlockingTransfer(const void * data_out,void * data_in,uint32_t num)2254 static int32_t LPUART2_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num)
2255 {
2256     return LPUART_NonBlockingTransfer(data_out, data_in, num, &LPUART2_NonBlockingDriverState);
2257 }
2258 
LPUART2_NonBlockingGetTxCount(void)2259 static uint32_t LPUART2_NonBlockingGetTxCount(void)
2260 {
2261     return LPUART_NonBlockingGetTxCount(&LPUART2_NonBlockingDriverState);
2262 }
2263 
LPUART2_NonBlockingGetRxCount(void)2264 static uint32_t LPUART2_NonBlockingGetRxCount(void)
2265 {
2266     return LPUART_NonBlockingGetRxCount(&LPUART2_NonBlockingDriverState);
2267 }
2268 
LPUART2_NonBlockingControl(uint32_t control,uint32_t arg)2269 static int32_t LPUART2_NonBlockingControl(uint32_t control, uint32_t arg)
2270 {
2271     int32_t result;
2272 
2273     result = LPUART_NonBlockingControl(control, arg, &LPUART2_NonBlockingDriverState);
2274     if (ARM_DRIVER_OK != result)
2275     {
2276         return result;
2277     }
2278 
2279     /* Enable the receive interrupts if ring buffer is used */
2280     if (LPUART2_NonBlockingDriverState.handle->rxRingBuffer != NULL)
2281     {
2282         LPUART_EnableInterrupts(
2283             LPUART2_NonBlockingDriverState.resource->base,
2284             (uint32_t)kLPUART_RxDataRegFullInterruptEnable | (uint32_t)kLPUART_RxOverrunInterruptEnable);
2285     }
2286 
2287     return ARM_DRIVER_OK;
2288 }
2289 
LPUART2_NonBlockingGetStatus(void)2290 static ARM_USART_STATUS LPUART2_NonBlockingGetStatus(void)
2291 {
2292     return LPUART_NonBlockingGetStatus(&LPUART2_NonBlockingDriverState);
2293 }
2294 
2295 #endif
2296 
2297 ARM_DRIVER_USART Driver_USART2 = {LPUARTx_GetVersion,      LPUARTx_GetCapabilities,
2298 #if defined(RTE_USART2_DMA_EN) && RTE_USART2_DMA_EN
2299 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
2300                                   LPUART2_EdmaInitialize,  LPUART2_EdmaUninitialize, LPUART2_EdmaPowerControl,
2301                                   LPUART2_EdmaSend,        LPUART2_EdmaReceive,      LPUART2_EdmaTransfer,
2302                                   LPUART2_EdmaGetTxCount,  LPUART2_EdmaGetRxCount,   LPUART2_EdmaControl,
2303                                   LPUART2_EdmaGetStatus,
2304 #else
2305                                   LPUART2_DmaInitialize,   LPUART2_DmaUninitialize, LPUART2_DmaPowerControl,
2306                                   LPUART2_DmaSend,         LPUART2_DmaReceive,      LPUART2_DmaTransfer,
2307                                   LPUART2_DmaGetTxCount,   LPUART2_DmaGetRxCount,   LPUART2_DmaControl,
2308                                   LPUART2_DmaGetStatus,
2309 #endif /* FSL_FEATURE_SOC_EDMA_COUNT */
2310 #else
2311                                   LPUART2_NonBlockingInitialize,
2312                                   LPUART2_NonBlockingUninitialize,
2313                                   LPUART2_NonBlockingPowerControl,
2314                                   LPUART2_NonBlockingSend,
2315                                   LPUART2_NonBlockingReceive,
2316                                   LPUART2_NonBlockingTransfer,
2317                                   LPUART2_NonBlockingGetTxCount,
2318                                   LPUART2_NonBlockingGetRxCount,
2319                                   LPUART2_NonBlockingControl,
2320                                   LPUART2_NonBlockingGetStatus,
2321 #endif /* RTE_USART2_DMA_EN */
2322                                   LPUARTx_SetModemControl, LPUARTx_GetModemStatus};
2323 
2324 #endif /* LPUART2 */
2325 
2326 #if defined(LPUART3) && defined(RTE_USART3) && RTE_USART3
2327 
2328 /* User needs to provide the implementation for LPUART3_GetFreq/InitPins/DeinitPins
2329 in the application for enabling according instance. */
2330 extern uint32_t LPUART3_GetFreq(void);
2331 
2332 static cmsis_lpuart_resource_t LPUART3_Resource = {LPUART3, LPUART3_GetFreq};
2333 
2334 #if defined(RTE_USART3_DMA_EN) && RTE_USART3_DMA_EN
2335 
2336 #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT)
2337 
2338 static cmsis_lpuart_dma_resource_t LPUART3_DmaResource = {
2339     RTE_USART3_DMA_TX_DMA_BASE,    RTE_USART3_DMA_TX_CH,          RTE_USART3_DMA_TX_PERI_SEL,
2340     RTE_USART3_DMA_RX_DMA_BASE,    RTE_USART3_DMA_RX_CH,          RTE_USART3_DMA_RX_PERI_SEL,
2341 
2342 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
2343     RTE_USART3_DMA_TX_DMAMUX_BASE, RTE_USART3_DMA_RX_DMAMUX_BASE,
2344 #endif
2345 #if FSL_FEATURE_DMA_MODULE_CHANNEL != FSL_FEATURE_DMAMUX_MODULE_CHANNEL
2346     RTE_USART3_DMAMUX_TX_CH,       RTE_USART3_DMAMUX_RX_CH
2347 #endif
2348 };
2349 
2350 static lpuart_dma_handle_t LPUART3_DmaHandle;
2351 static dma_handle_t LPUART3_DmaRxHandle;
2352 static dma_handle_t LPUART3_DmaTxHandle;
2353 
2354 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
2355 ARMCC_SECTION("lpuart3_dma_driver_state")
2356 static cmsis_lpuart_dma_driver_state_t LPUART3_DmaDriverState = {
2357 #else
2358 static cmsis_lpuart_dma_driver_state_t LPUART3_DmaDriverState = {
2359 #endif
2360     &LPUART3_Resource, &LPUART3_DmaResource, &LPUART3_DmaHandle, &LPUART3_DmaRxHandle, &LPUART3_DmaTxHandle,
2361 };
2362 
LPUART3_DmaInitialize(ARM_USART_SignalEvent_t cb_event)2363 static int32_t LPUART3_DmaInitialize(ARM_USART_SignalEvent_t cb_event)
2364 {
2365 #ifdef RTE_USART3_PIN_INIT
2366     RTE_USART3_PIN_INIT();
2367 #endif
2368     return LPUART_DmaInitialize(cb_event, &LPUART3_DmaDriverState);
2369 }
2370 
LPUART3_DmaUninitialize(void)2371 static int32_t LPUART3_DmaUninitialize(void)
2372 {
2373 #ifdef RTE_USART3_PIN_DEINIT
2374     RTE_USART3_PIN_DEINIT();
2375 #endif
2376     return LPUART_DmaUninitialize(&LPUART3_DmaDriverState);
2377 }
2378 
LPUART3_DmaPowerControl(ARM_POWER_STATE state)2379 static int32_t LPUART3_DmaPowerControl(ARM_POWER_STATE state)
2380 {
2381     return LPUART_DmaPowerControl(state, &LPUART3_DmaDriverState);
2382 }
2383 
LPUART3_DmaSend(const void * data,uint32_t num)2384 static int32_t LPUART3_DmaSend(const void *data, uint32_t num)
2385 {
2386     return LPUART_DmaSend(data, num, &LPUART3_DmaDriverState);
2387 }
2388 
LPUART3_DmaReceive(void * data,uint32_t num)2389 static int32_t LPUART3_DmaReceive(void *data, uint32_t num)
2390 {
2391     return LPUART_DmaReceive(data, num, &LPUART3_DmaDriverState);
2392 }
2393 
LPUART3_DmaTransfer(const void * data_out,void * data_in,uint32_t num)2394 static int32_t LPUART3_DmaTransfer(const void *data_out, void *data_in, uint32_t num)
2395 {
2396     return LPUART_DmaTransfer(data_out, data_in, num, &LPUART3_DmaDriverState);
2397 }
2398 
LPUART3_DmaGetTxCount(void)2399 static uint32_t LPUART3_DmaGetTxCount(void)
2400 {
2401     return LPUART_DmaGetTxCount(&LPUART3_DmaDriverState);
2402 }
2403 
LPUART3_DmaGetRxCount(void)2404 static uint32_t LPUART3_DmaGetRxCount(void)
2405 {
2406     return LPUART_DmaGetRxCount(&LPUART3_DmaDriverState);
2407 }
2408 
LPUART3_DmaControl(uint32_t control,uint32_t arg)2409 static int32_t LPUART3_DmaControl(uint32_t control, uint32_t arg)
2410 {
2411     return LPUART_DmaControl(control, arg, &LPUART3_DmaDriverState);
2412 }
2413 
LPUART3_DmaGetStatus(void)2414 static ARM_USART_STATUS LPUART3_DmaGetStatus(void)
2415 {
2416     return LPUART_DmaGetStatus(&LPUART3_DmaDriverState);
2417 }
2418 
2419 #endif
2420 
2421 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
2422 
2423 static cmsis_lpuart_edma_resource_t LPUART3_EdmaResource = {
2424     RTE_USART3_DMA_TX_DMA_BASE,    RTE_USART3_DMA_TX_CH,          RTE_USART3_DMA_TX_PERI_SEL,
2425     RTE_USART3_DMA_RX_DMA_BASE,    RTE_USART3_DMA_RX_CH,          RTE_USART3_DMA_RX_PERI_SEL,
2426 
2427 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
2428     RTE_USART3_DMA_TX_DMAMUX_BASE, RTE_USART3_DMA_RX_DMAMUX_BASE,
2429 #endif
2430 };
2431 
2432 static lpuart_edma_handle_t LPUART3_EdmaHandle;
2433 static edma_handle_t LPUART3_EdmaRxHandle;
2434 static edma_handle_t LPUART3_EdmaTxHandle;
2435 
2436 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
2437 ARMCC_SECTION("lpuart3_edma_driver_state")
2438 static cmsis_lpuart_edma_driver_state_t LPUART3_EdmaDriverState = {
2439 #else
2440 static cmsis_lpuart_edma_driver_state_t LPUART3_EdmaDriverState = {
2441 #endif
2442     &LPUART3_Resource, &LPUART3_EdmaResource, &LPUART3_EdmaHandle, &LPUART3_EdmaRxHandle, &LPUART3_EdmaTxHandle,
2443 };
2444 
LPUART3_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)2445 static int32_t LPUART3_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)
2446 {
2447 #ifdef RTE_USART3_PIN_INIT
2448     RTE_USART3_PIN_INIT();
2449 #endif
2450     return LPUART_EdmaInitialize(cb_event, &LPUART3_EdmaDriverState);
2451 }
2452 
LPUART3_EdmaUninitialize(void)2453 static int32_t LPUART3_EdmaUninitialize(void)
2454 {
2455 #ifdef RTE_USART3_PIN_DEINIT
2456     RTE_USART3_PIN_DEINIT();
2457 #endif
2458     return LPUART_EdmaUninitialize(&LPUART3_EdmaDriverState);
2459 }
2460 
LPUART3_EdmaPowerControl(ARM_POWER_STATE state)2461 static int32_t LPUART3_EdmaPowerControl(ARM_POWER_STATE state)
2462 {
2463     return LPUART_EdmaPowerControl(state, &LPUART3_EdmaDriverState);
2464 }
2465 
LPUART3_EdmaSend(const void * data,uint32_t num)2466 static int32_t LPUART3_EdmaSend(const void *data, uint32_t num)
2467 {
2468     return LPUART_EdmaSend(data, num, &LPUART3_EdmaDriverState);
2469 }
2470 
LPUART3_EdmaReceive(void * data,uint32_t num)2471 static int32_t LPUART3_EdmaReceive(void *data, uint32_t num)
2472 {
2473     return LPUART_EdmaReceive(data, num, &LPUART3_EdmaDriverState);
2474 }
2475 
LPUART3_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)2476 static int32_t LPUART3_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
2477 {
2478     return LPUART_EdmaTransfer(data_out, data_in, num, &LPUART3_EdmaDriverState);
2479 }
2480 
LPUART3_EdmaGetTxCount(void)2481 static uint32_t LPUART3_EdmaGetTxCount(void)
2482 {
2483     return LPUART_EdmaGetTxCount(&LPUART3_EdmaDriverState);
2484 }
2485 
LPUART3_EdmaGetRxCount(void)2486 static uint32_t LPUART3_EdmaGetRxCount(void)
2487 {
2488     return LPUART_EdmaGetRxCount(&LPUART3_EdmaDriverState);
2489 }
2490 
LPUART3_EdmaControl(uint32_t control,uint32_t arg)2491 static int32_t LPUART3_EdmaControl(uint32_t control, uint32_t arg)
2492 {
2493     return LPUART_EdmaControl(control, arg, &LPUART3_EdmaDriverState);
2494 }
2495 
LPUART3_EdmaGetStatus(void)2496 static ARM_USART_STATUS LPUART3_EdmaGetStatus(void)
2497 {
2498     return LPUART_EdmaGetStatus(&LPUART3_EdmaDriverState);
2499 }
2500 
2501 #endif
2502 
2503 #else
2504 
2505 static lpuart_handle_t LPUART3_Handle;
2506 
2507 #if defined(USART3_RX_BUFFER_ENABLE) && (USART3_RX_BUFFER_ENABLE == 1)
2508 static uint8_t lpuart3_rxRingBuffer[USART_RX_BUFFER_LEN];
2509 #endif
2510 
2511 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
2512 ARMCC_SECTION("lpuart3_non_blocking_driver_state")
2513 static cmsis_lpuart_non_blocking_driver_state_t LPUART3_NonBlockingDriverState = {
2514 #else
2515 static cmsis_lpuart_non_blocking_driver_state_t LPUART3_NonBlockingDriverState = {
2516 #endif
2517     &LPUART3_Resource,
2518     &LPUART3_Handle,
2519 };
2520 
LPUART3_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)2521 static int32_t LPUART3_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)
2522 {
2523 #ifdef RTE_USART3_PIN_INIT
2524     RTE_USART3_PIN_INIT();
2525 #endif
2526     return LPUART_NonBlockingInitialize(cb_event, &LPUART3_NonBlockingDriverState);
2527 }
2528 
LPUART3_NonBlockingUninitialize(void)2529 static int32_t LPUART3_NonBlockingUninitialize(void)
2530 {
2531 #ifdef RTE_USART3_PIN_DEINIT
2532     RTE_USART3_PIN_DEINIT();
2533 #endif
2534     return LPUART_NonBlockingUninitialize(&LPUART3_NonBlockingDriverState);
2535 }
2536 
LPUART3_NonBlockingPowerControl(ARM_POWER_STATE state)2537 static int32_t LPUART3_NonBlockingPowerControl(ARM_POWER_STATE state)
2538 {
2539     int32_t result;
2540 
2541     result = LPUART_NonBlockingPowerControl(state, &LPUART3_NonBlockingDriverState);
2542 
2543 #if defined(USART3_RX_BUFFER_ENABLE) && (USART3_RX_BUFFER_ENABLE == 1)
2544     if ((state == ARM_POWER_FULL) && (LPUART3_NonBlockingDriverState.handle->rxRingBuffer == NULL))
2545     {
2546         LPUART_TransferStartRingBuffer(LPUART3_NonBlockingDriverState.resource->base,
2547                                        LPUART3_NonBlockingDriverState.handle, lpuart3_rxRingBuffer,
2548                                        USART_RX_BUFFER_LEN);
2549     }
2550 #endif
2551 
2552     return result;
2553 }
2554 
LPUART3_NonBlockingSend(const void * data,uint32_t num)2555 static int32_t LPUART3_NonBlockingSend(const void *data, uint32_t num)
2556 {
2557     return LPUART_NonBlockingSend(data, num, &LPUART3_NonBlockingDriverState);
2558 }
2559 
LPUART3_NonBlockingReceive(void * data,uint32_t num)2560 static int32_t LPUART3_NonBlockingReceive(void *data, uint32_t num)
2561 {
2562     return LPUART_NonBlockingReceive(data, num, &LPUART3_NonBlockingDriverState);
2563 }
2564 
LPUART3_NonBlockingTransfer(const void * data_out,void * data_in,uint32_t num)2565 static int32_t LPUART3_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num)
2566 {
2567     return LPUART_NonBlockingTransfer(data_out, data_in, num, &LPUART3_NonBlockingDriverState);
2568 }
2569 
LPUART3_NonBlockingGetTxCount(void)2570 static uint32_t LPUART3_NonBlockingGetTxCount(void)
2571 {
2572     return LPUART_NonBlockingGetTxCount(&LPUART3_NonBlockingDriverState);
2573 }
2574 
LPUART3_NonBlockingGetRxCount(void)2575 static uint32_t LPUART3_NonBlockingGetRxCount(void)
2576 {
2577     return LPUART_NonBlockingGetRxCount(&LPUART3_NonBlockingDriverState);
2578 }
2579 
LPUART3_NonBlockingControl(uint32_t control,uint32_t arg)2580 static int32_t LPUART3_NonBlockingControl(uint32_t control, uint32_t arg)
2581 {
2582     int32_t result;
2583 
2584     result = LPUART_NonBlockingControl(control, arg, &LPUART3_NonBlockingDriverState);
2585     if (ARM_DRIVER_OK != result)
2586     {
2587         return result;
2588     }
2589 
2590     /* Enable the receive interrupts if ring buffer is used */
2591     if (LPUART3_NonBlockingDriverState.handle->rxRingBuffer != NULL)
2592     {
2593         LPUART_EnableInterrupts(
2594             LPUART3_NonBlockingDriverState.resource->base,
2595             (uint32_t)kLPUART_RxDataRegFullInterruptEnable | (uint32_t)kLPUART_RxOverrunInterruptEnable);
2596     }
2597 
2598     return ARM_DRIVER_OK;
2599 }
2600 
LPUART3_NonBlockingGetStatus(void)2601 static ARM_USART_STATUS LPUART3_NonBlockingGetStatus(void)
2602 {
2603     return LPUART_NonBlockingGetStatus(&LPUART3_NonBlockingDriverState);
2604 }
2605 
2606 #endif
2607 
2608 ARM_DRIVER_USART Driver_USART3 = {LPUARTx_GetVersion,      LPUARTx_GetCapabilities,
2609 #if defined(RTE_USART3_DMA_EN) && RTE_USART3_DMA_EN
2610 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
2611                                   LPUART3_EdmaInitialize,  LPUART3_EdmaUninitialize, LPUART3_EdmaPowerControl,
2612                                   LPUART3_EdmaSend,        LPUART3_EdmaReceive,      LPUART3_EdmaTransfer,
2613                                   LPUART3_EdmaGetTxCount,  LPUART3_EdmaGetRxCount,   LPUART3_EdmaControl,
2614                                   LPUART3_EdmaGetStatus,
2615 #else
2616                                   LPUART3_DmaInitialize,   LPUART3_DmaUninitialize, LPUART3_DmaPowerControl,
2617                                   LPUART3_DmaSend,         LPUART3_DmaReceive,      LPUART3_DmaTransfer,
2618                                   LPUART3_DmaGetTxCount,   LPUART3_DmaGetRxCount,   LPUART3_DmaControl,
2619                                   LPUART3_DmaGetStatus,
2620 #endif /* FSL_FEATURE_SOC_EDMA_COUNT */
2621 #else
2622                                   LPUART3_NonBlockingInitialize,
2623                                   LPUART3_NonBlockingUninitialize,
2624                                   LPUART3_NonBlockingPowerControl,
2625                                   LPUART3_NonBlockingSend,
2626                                   LPUART3_NonBlockingReceive,
2627                                   LPUART3_NonBlockingTransfer,
2628                                   LPUART3_NonBlockingGetTxCount,
2629                                   LPUART3_NonBlockingGetRxCount,
2630                                   LPUART3_NonBlockingControl,
2631                                   LPUART3_NonBlockingGetStatus,
2632 #endif /* RTE_USART3_DMA_EN */
2633                                   LPUARTx_SetModemControl, LPUARTx_GetModemStatus};
2634 
2635 #endif /* LPUART3 */
2636 
2637 #if defined(LPUART4) && defined(RTE_USART4) && RTE_USART4
2638 
2639 /* User needs to provide the implementation for LPUART4_GetFreq/InitPins/DeinitPins
2640 in the application for enabling according instance. */
2641 extern uint32_t LPUART4_GetFreq(void);
2642 
2643 static cmsis_lpuart_resource_t LPUART4_Resource = {LPUART4, LPUART4_GetFreq};
2644 
2645 #if defined(RTE_USART4_DMA_EN) && RTE_USART4_DMA_EN
2646 
2647 #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT)
2648 
2649 static cmsis_lpuart_dma_resource_t LPUART4_DmaResource = {
2650     RTE_USART4_DMA_TX_DMA_BASE,    RTE_USART4_DMA_TX_CH,          RTE_USART4_DMA_TX_PERI_SEL,
2651     RTE_USART4_DMA_RX_DMA_BASE,    RTE_USART4_DMA_RX_CH,          RTE_USART4_DMA_RX_PERI_SEL,
2652 
2653 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
2654     RTE_USART4_DMA_TX_DMAMUX_BASE, RTE_USART4_DMA_RX_DMAMUX_BASE,
2655 #endif
2656 #if FSL_FEATURE_DMA_MODULE_CHANNEL != FSL_FEATURE_DMAMUX_MODULE_CHANNEL
2657     RTE_USART4_DMAMUX_TX_CH,       RTE_USART4_DMAMUX_RX_CH
2658 #endif
2659 };
2660 
2661 static lpuart_dma_handle_t LPUART4_DmaHandle;
2662 static dma_handle_t LPUART4_DmaRxHandle;
2663 static dma_handle_t LPUART4_DmaTxHandle;
2664 
2665 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
2666 ARMCC_SECTION("lpuart4_dma_driver_state")
2667 static cmsis_lpuart_dma_driver_state_t LPUART4_DmaDriverState = {
2668 #else
2669 static cmsis_lpuart_dma_driver_state_t LPUART4_DmaDriverState = {
2670 #endif
2671     &LPUART4_Resource, &LPUART4_DmaResource, &LPUART4_DmaHandle, &LPUART4_DmaRxHandle, &LPUART4_DmaTxHandle,
2672 };
2673 
LPUART4_DmaInitialize(ARM_USART_SignalEvent_t cb_event)2674 static int32_t LPUART4_DmaInitialize(ARM_USART_SignalEvent_t cb_event)
2675 {
2676 #ifdef RTE_USART4_PIN_INIT
2677     RTE_USART4_PIN_INIT();
2678 #endif
2679     return LPUART_DmaInitialize(cb_event, &LPUART4_DmaDriverState);
2680 }
2681 
LPUART4_DmaUninitialize(void)2682 static int32_t LPUART4_DmaUninitialize(void)
2683 {
2684 #ifdef RTE_USART4_PIN_DEINIT
2685     RTE_USART4_PIN_DEINIT();
2686 #endif
2687     return LPUART_DmaUninitialize(&LPUART4_DmaDriverState);
2688 }
2689 
LPUART4_DmaPowerControl(ARM_POWER_STATE state)2690 static int32_t LPUART4_DmaPowerControl(ARM_POWER_STATE state)
2691 {
2692     return LPUART_DmaPowerControl(state, &LPUART4_DmaDriverState);
2693 }
2694 
LPUART4_DmaSend(const void * data,uint32_t num)2695 static int32_t LPUART4_DmaSend(const void *data, uint32_t num)
2696 {
2697     return LPUART_DmaSend(data, num, &LPUART4_DmaDriverState);
2698 }
2699 
LPUART4_DmaReceive(void * data,uint32_t num)2700 static int32_t LPUART4_DmaReceive(void *data, uint32_t num)
2701 {
2702     return LPUART_DmaReceive(data, num, &LPUART4_DmaDriverState);
2703 }
2704 
LPUART4_DmaTransfer(const void * data_out,void * data_in,uint32_t num)2705 static int32_t LPUART4_DmaTransfer(const void *data_out, void *data_in, uint32_t num)
2706 {
2707     return LPUART_DmaTransfer(data_out, data_in, num, &LPUART4_DmaDriverState);
2708 }
2709 
LPUART4_DmaGetTxCount(void)2710 static uint32_t LPUART4_DmaGetTxCount(void)
2711 {
2712     return LPUART_DmaGetTxCount(&LPUART4_DmaDriverState);
2713 }
2714 
LPUART4_DmaGetRxCount(void)2715 static uint32_t LPUART4_DmaGetRxCount(void)
2716 {
2717     return LPUART_DmaGetRxCount(&LPUART4_DmaDriverState);
2718 }
2719 
LPUART4_DmaControl(uint32_t control,uint32_t arg)2720 static int32_t LPUART4_DmaControl(uint32_t control, uint32_t arg)
2721 {
2722     return LPUART_DmaControl(control, arg, &LPUART4_DmaDriverState);
2723 }
2724 
LPUART4_DmaGetStatus(void)2725 static ARM_USART_STATUS LPUART4_DmaGetStatus(void)
2726 {
2727     return LPUART_DmaGetStatus(&LPUART4_DmaDriverState);
2728 }
2729 
2730 #endif
2731 
2732 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
2733 
2734 static cmsis_lpuart_edma_resource_t LPUART4_EdmaResource = {
2735     RTE_USART4_DMA_TX_DMA_BASE,    RTE_USART4_DMA_TX_CH,          RTE_USART4_DMA_TX_PERI_SEL,
2736     RTE_USART4_DMA_RX_DMA_BASE,    RTE_USART4_DMA_RX_CH,          RTE_USART4_DMA_RX_PERI_SEL,
2737 
2738 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
2739     RTE_USART4_DMA_TX_DMAMUX_BASE, RTE_USART4_DMA_RX_DMAMUX_BASE,
2740 #endif
2741 };
2742 
2743 static lpuart_edma_handle_t LPUART4_EdmaHandle;
2744 static edma_handle_t LPUART4_EdmaRxHandle;
2745 static edma_handle_t LPUART4_EdmaTxHandle;
2746 
2747 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
2748 ARMCC_SECTION("lpuart4_edma_driver_state")
2749 static cmsis_lpuart_edma_driver_state_t LPUART4_EdmaDriverState = {
2750 #else
2751 static cmsis_lpuart_edma_driver_state_t LPUART4_EdmaDriverState = {
2752 #endif
2753     &LPUART4_Resource, &LPUART4_EdmaResource, &LPUART4_EdmaHandle, &LPUART4_EdmaRxHandle, &LPUART4_EdmaTxHandle,
2754 };
2755 
LPUART4_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)2756 static int32_t LPUART4_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)
2757 {
2758 #ifdef RTE_USART4_PIN_INIT
2759     RTE_USART4_PIN_INIT();
2760 #endif
2761     return LPUART_EdmaInitialize(cb_event, &LPUART4_EdmaDriverState);
2762 }
2763 
LPUART4_EdmaUninitialize(void)2764 static int32_t LPUART4_EdmaUninitialize(void)
2765 {
2766 #ifdef RTE_USART4_PIN_DEINIT
2767     RTE_USART4_PIN_DEINIT();
2768 #endif
2769     return LPUART_EdmaUninitialize(&LPUART4_EdmaDriverState);
2770 }
2771 
LPUART4_EdmaPowerControl(ARM_POWER_STATE state)2772 static int32_t LPUART4_EdmaPowerControl(ARM_POWER_STATE state)
2773 {
2774     return LPUART_EdmaPowerControl(state, &LPUART4_EdmaDriverState);
2775 }
2776 
LPUART4_EdmaSend(const void * data,uint32_t num)2777 static int32_t LPUART4_EdmaSend(const void *data, uint32_t num)
2778 {
2779     return LPUART_EdmaSend(data, num, &LPUART4_EdmaDriverState);
2780 }
2781 
LPUART4_EdmaReceive(void * data,uint32_t num)2782 static int32_t LPUART4_EdmaReceive(void *data, uint32_t num)
2783 {
2784     return LPUART_EdmaReceive(data, num, &LPUART4_EdmaDriverState);
2785 }
2786 
LPUART4_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)2787 static int32_t LPUART4_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
2788 {
2789     return LPUART_EdmaTransfer(data_out, data_in, num, &LPUART4_EdmaDriverState);
2790 }
2791 
LPUART4_EdmaGetTxCount(void)2792 static uint32_t LPUART4_EdmaGetTxCount(void)
2793 {
2794     return LPUART_EdmaGetTxCount(&LPUART4_EdmaDriverState);
2795 }
2796 
LPUART4_EdmaGetRxCount(void)2797 static uint32_t LPUART4_EdmaGetRxCount(void)
2798 {
2799     return LPUART_EdmaGetRxCount(&LPUART4_EdmaDriverState);
2800 }
2801 
LPUART4_EdmaControl(uint32_t control,uint32_t arg)2802 static int32_t LPUART4_EdmaControl(uint32_t control, uint32_t arg)
2803 {
2804     return LPUART_EdmaControl(control, arg, &LPUART4_EdmaDriverState);
2805 }
2806 
LPUART4_EdmaGetStatus(void)2807 static ARM_USART_STATUS LPUART4_EdmaGetStatus(void)
2808 {
2809     return LPUART_EdmaGetStatus(&LPUART4_EdmaDriverState);
2810 }
2811 
2812 #endif
2813 
2814 #else
2815 
2816 static lpuart_handle_t LPUART4_Handle;
2817 
2818 #if defined(USART4_RX_BUFFER_ENABLE) && (USART4_RX_BUFFER_ENABLE == 1)
2819 static uint8_t lpuart4_rxRingBuffer[USART_RX_BUFFER_LEN];
2820 #endif
2821 
2822 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
2823 ARMCC_SECTION("lpuart4_non_blocking_driver_state")
2824 static cmsis_lpuart_non_blocking_driver_state_t LPUART4_NonBlockingDriverState = {
2825 #else
2826 static cmsis_lpuart_non_blocking_driver_state_t LPUART4_NonBlockingDriverState = {
2827 #endif
2828     &LPUART4_Resource,
2829     &LPUART4_Handle,
2830 };
2831 
LPUART4_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)2832 static int32_t LPUART4_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)
2833 {
2834 #ifdef RTE_USART4_PIN_INIT
2835     RTE_USART4_PIN_INIT();
2836 #endif
2837     return LPUART_NonBlockingInitialize(cb_event, &LPUART4_NonBlockingDriverState);
2838 }
2839 
LPUART4_NonBlockingUninitialize(void)2840 static int32_t LPUART4_NonBlockingUninitialize(void)
2841 {
2842 #ifdef RTE_USART4_PIN_DEINIT
2843     RTE_USART4_PIN_DEINIT();
2844 #endif
2845     return LPUART_NonBlockingUninitialize(&LPUART4_NonBlockingDriverState);
2846 }
2847 
LPUART4_NonBlockingPowerControl(ARM_POWER_STATE state)2848 static int32_t LPUART4_NonBlockingPowerControl(ARM_POWER_STATE state)
2849 {
2850     int32_t result;
2851 
2852     result = LPUART_NonBlockingPowerControl(state, &LPUART4_NonBlockingDriverState);
2853 
2854 #if defined(USART4_RX_BUFFER_ENABLE) && (USART4_RX_BUFFER_ENABLE == 1)
2855     if ((state == ARM_POWER_FULL) && (LPUART4_NonBlockingDriverState.handle->rxRingBuffer == NULL))
2856     {
2857         LPUART_TransferStartRingBuffer(LPUART4_NonBlockingDriverState.resource->base,
2858                                        LPUART4_NonBlockingDriverState.handle, lpuart4_rxRingBuffer,
2859                                        USART_RX_BUFFER_LEN);
2860     }
2861 #endif
2862 
2863     return result;
2864 }
2865 
LPUART4_NonBlockingSend(const void * data,uint32_t num)2866 static int32_t LPUART4_NonBlockingSend(const void *data, uint32_t num)
2867 {
2868     return LPUART_NonBlockingSend(data, num, &LPUART4_NonBlockingDriverState);
2869 }
2870 
LPUART4_NonBlockingReceive(void * data,uint32_t num)2871 static int32_t LPUART4_NonBlockingReceive(void *data, uint32_t num)
2872 {
2873     return LPUART_NonBlockingReceive(data, num, &LPUART4_NonBlockingDriverState);
2874 }
2875 
LPUART4_NonBlockingTransfer(const void * data_out,void * data_in,uint32_t num)2876 static int32_t LPUART4_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num)
2877 {
2878     return LPUART_NonBlockingTransfer(data_out, data_in, num, &LPUART4_NonBlockingDriverState);
2879 }
2880 
LPUART4_NonBlockingGetTxCount(void)2881 static uint32_t LPUART4_NonBlockingGetTxCount(void)
2882 {
2883     return LPUART_NonBlockingGetTxCount(&LPUART4_NonBlockingDriverState);
2884 }
2885 
LPUART4_NonBlockingGetRxCount(void)2886 static uint32_t LPUART4_NonBlockingGetRxCount(void)
2887 {
2888     return LPUART_NonBlockingGetRxCount(&LPUART4_NonBlockingDriverState);
2889 }
2890 
LPUART4_NonBlockingControl(uint32_t control,uint32_t arg)2891 static int32_t LPUART4_NonBlockingControl(uint32_t control, uint32_t arg)
2892 {
2893     int32_t result;
2894 
2895     result = LPUART_NonBlockingControl(control, arg, &LPUART4_NonBlockingDriverState);
2896     if (ARM_DRIVER_OK != result)
2897     {
2898         return result;
2899     }
2900 
2901     /* Enable the receive interrupts if ring buffer is used */
2902     if (LPUART4_NonBlockingDriverState.handle->rxRingBuffer != NULL)
2903     {
2904         LPUART_EnableInterrupts(
2905             LPUART4_NonBlockingDriverState.resource->base,
2906             (uint32_t)kLPUART_RxDataRegFullInterruptEnable | (uint32_t)kLPUART_RxOverrunInterruptEnable);
2907     }
2908 
2909     return ARM_DRIVER_OK;
2910 }
2911 
LPUART4_NonBlockingGetStatus(void)2912 static ARM_USART_STATUS LPUART4_NonBlockingGetStatus(void)
2913 {
2914     return LPUART_NonBlockingGetStatus(&LPUART4_NonBlockingDriverState);
2915 }
2916 
2917 #endif
2918 
2919 ARM_DRIVER_USART Driver_USART4 = {LPUARTx_GetVersion,      LPUARTx_GetCapabilities,
2920 #if defined(RTE_USART4_DMA_EN) && RTE_USART4_DMA_EN
2921 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
2922                                   LPUART4_EdmaInitialize,  LPUART4_EdmaUninitialize, LPUART4_EdmaPowerControl,
2923                                   LPUART4_EdmaSend,        LPUART4_EdmaReceive,      LPUART4_EdmaTransfer,
2924                                   LPUART4_EdmaGetTxCount,  LPUART4_EdmaGetRxCount,   LPUART4_EdmaControl,
2925                                   LPUART4_EdmaGetStatus,
2926 #else
2927                                   LPUART4_DmaInitialize,   LPUART4_DmaUninitialize, LPUART4_DmaPowerControl,
2928                                   LPUART4_DmaSend,         LPUART4_DmaReceive,      LPUART4_DmaTransfer,
2929                                   LPUART4_DmaGetTxCount,   LPUART4_DmaGetRxCount,   LPUART4_DmaControl,
2930                                   LPUART4_DmaGetStatus,
2931 #endif /* FSL_FEATURE_SOC_EDMA_COUNT */
2932 #else
2933                                   LPUART4_NonBlockingInitialize,
2934                                   LPUART4_NonBlockingUninitialize,
2935                                   LPUART4_NonBlockingPowerControl,
2936                                   LPUART4_NonBlockingSend,
2937                                   LPUART4_NonBlockingReceive,
2938                                   LPUART4_NonBlockingTransfer,
2939                                   LPUART4_NonBlockingGetTxCount,
2940                                   LPUART4_NonBlockingGetRxCount,
2941                                   LPUART4_NonBlockingControl,
2942                                   LPUART4_NonBlockingGetStatus,
2943 #endif /* RTE_USART4_DMA_EN */
2944                                   LPUARTx_SetModemControl, LPUARTx_GetModemStatus};
2945 
2946 #endif /* LPUART4 */
2947 
2948 #if defined(LPUART5) && defined(RTE_USART5) && RTE_USART5
2949 
2950 /* User needs to provide the implementation for LPUART5_GetFreq/InitPins/DeinitPins
2951 in the application for enabling according instance. */
2952 extern uint32_t LPUART5_GetFreq(void);
2953 
2954 static cmsis_lpuart_resource_t LPUART5_Resource = {LPUART5, LPUART5_GetFreq};
2955 
2956 #if defined(RTE_USART5_DMA_EN) && RTE_USART5_DMA_EN
2957 
2958 #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT)
2959 
2960 static cmsis_lpuart_dma_resource_t LPUART5_DmaResource = {
2961     RTE_USART5_DMA_TX_DMA_BASE,    RTE_USART5_DMA_TX_CH,          RTE_USART5_DMA_TX_PERI_SEL,
2962     RTE_USART5_DMA_RX_DMA_BASE,    RTE_USART5_DMA_RX_CH,          RTE_USART5_DMA_RX_PERI_SEL,
2963 
2964 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
2965     RTE_USART5_DMA_TX_DMAMUX_BASE, RTE_USART5_DMA_RX_DMAMUX_BASE,
2966 #endif
2967 #if FSL_FEATURE_DMA_MODULE_CHANNEL != FSL_FEATURE_DMAMUX_MODULE_CHANNEL
2968     RTE_USART5_DMAMUX_TX_CH,       RTE_USART5_DMAMUX_RX_CH
2969 #endif
2970 };
2971 
2972 static lpuart_dma_handle_t LPUART5_DmaHandle;
2973 static dma_handle_t LPUART5_DmaRxHandle;
2974 static dma_handle_t LPUART5_DmaTxHandle;
2975 
2976 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
2977 ARMCC_SECTION("lpuart5_dma_driver_state")
2978 static cmsis_lpuart_dma_driver_state_t LPUART5_DmaDriverState = {
2979 #else
2980 static cmsis_lpuart_dma_driver_state_t LPUART5_DmaDriverState = {
2981 #endif
2982     &LPUART5_Resource, &LPUART5_DmaResource, &LPUART5_DmaHandle, &LPUART5_DmaRxHandle, &LPUART5_DmaTxHandle,
2983 };
2984 
LPUART5_DmaInitialize(ARM_USART_SignalEvent_t cb_event)2985 static int32_t LPUART5_DmaInitialize(ARM_USART_SignalEvent_t cb_event)
2986 {
2987 #ifdef RTE_USART5_PIN_INIT
2988     RTE_USART5_PIN_INIT();
2989 #endif
2990     return LPUART_DmaInitialize(cb_event, &LPUART5_DmaDriverState);
2991 }
2992 
LPUART5_DmaUninitialize(void)2993 static int32_t LPUART5_DmaUninitialize(void)
2994 {
2995 #ifdef RTE_USART5_PIN_DEINIT
2996     RTE_USART5_PIN_DEINIT();
2997 #endif
2998     return LPUART_DmaUninitialize(&LPUART5_DmaDriverState);
2999 }
3000 
LPUART5_DmaPowerControl(ARM_POWER_STATE state)3001 static int32_t LPUART5_DmaPowerControl(ARM_POWER_STATE state)
3002 {
3003     return LPUART_DmaPowerControl(state, &LPUART5_DmaDriverState);
3004 }
3005 
LPUART5_DmaSend(const void * data,uint32_t num)3006 static int32_t LPUART5_DmaSend(const void *data, uint32_t num)
3007 {
3008     return LPUART_DmaSend(data, num, &LPUART5_DmaDriverState);
3009 }
3010 
LPUART5_DmaReceive(void * data,uint32_t num)3011 static int32_t LPUART5_DmaReceive(void *data, uint32_t num)
3012 {
3013     return LPUART_DmaReceive(data, num, &LPUART5_DmaDriverState);
3014 }
3015 
LPUART5_DmaTransfer(const void * data_out,void * data_in,uint32_t num)3016 static int32_t LPUART5_DmaTransfer(const void *data_out, void *data_in, uint32_t num)
3017 {
3018     return LPUART_DmaTransfer(data_out, data_in, num, &LPUART5_DmaDriverState);
3019 }
3020 
LPUART5_DmaGetTxCount(void)3021 static uint32_t LPUART5_DmaGetTxCount(void)
3022 {
3023     return LPUART_DmaGetTxCount(&LPUART5_DmaDriverState);
3024 }
3025 
LPUART5_DmaGetRxCount(void)3026 static uint32_t LPUART5_DmaGetRxCount(void)
3027 {
3028     return LPUART_DmaGetRxCount(&LPUART5_DmaDriverState);
3029 }
3030 
LPUART5_DmaControl(uint32_t control,uint32_t arg)3031 static int32_t LPUART5_DmaControl(uint32_t control, uint32_t arg)
3032 {
3033     return LPUART_DmaControl(control, arg, &LPUART5_DmaDriverState);
3034 }
3035 
LPUART5_DmaGetStatus(void)3036 static ARM_USART_STATUS LPUART5_DmaGetStatus(void)
3037 {
3038     return LPUART_DmaGetStatus(&LPUART5_DmaDriverState);
3039 }
3040 
3041 /* LPUART5 Driver Control Block */
3042 
3043 #endif
3044 
3045 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
3046 
3047 static cmsis_lpuart_edma_resource_t LPUART5_EdmaResource = {
3048     RTE_USART5_DMA_TX_DMA_BASE,    RTE_USART5_DMA_TX_CH,          RTE_USART5_DMA_TX_PERI_SEL,
3049     RTE_USART5_DMA_RX_DMA_BASE,    RTE_USART5_DMA_RX_CH,          RTE_USART5_DMA_RX_PERI_SEL,
3050 
3051 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
3052     RTE_USART5_DMA_TX_DMAMUX_BASE, RTE_USART5_DMA_RX_DMAMUX_BASE,
3053 #endif
3054 };
3055 
3056 static lpuart_edma_handle_t LPUART5_EdmaHandle;
3057 static edma_handle_t LPUART5_EdmaRxHandle;
3058 static edma_handle_t LPUART5_EdmaTxHandle;
3059 
3060 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
3061 ARMCC_SECTION("lpuart5_edma_driver_state")
3062 static cmsis_lpuart_edma_driver_state_t LPUART5_EdmaDriverState = {
3063 #else
3064 static cmsis_lpuart_edma_driver_state_t LPUART5_EdmaDriverState = {
3065 #endif
3066     &LPUART5_Resource, &LPUART5_EdmaResource, &LPUART5_EdmaHandle, &LPUART5_EdmaRxHandle, &LPUART5_EdmaTxHandle,
3067 };
3068 
LPUART5_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)3069 static int32_t LPUART5_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)
3070 {
3071 #ifdef RTE_USART5_PIN_INIT
3072     RTE_USART5_PIN_INIT();
3073 #endif
3074     return LPUART_EdmaInitialize(cb_event, &LPUART5_EdmaDriverState);
3075 }
3076 
LPUART5_EdmaUninitialize(void)3077 static int32_t LPUART5_EdmaUninitialize(void)
3078 {
3079 #ifdef RTE_USART5_PIN_DEINIT
3080     RTE_USART5_PIN_DEINIT();
3081 #endif
3082     return LPUART_EdmaUninitialize(&LPUART5_EdmaDriverState);
3083 }
3084 
LPUART5_EdmaPowerControl(ARM_POWER_STATE state)3085 static int32_t LPUART5_EdmaPowerControl(ARM_POWER_STATE state)
3086 {
3087     return LPUART_EdmaPowerControl(state, &LPUART5_EdmaDriverState);
3088 }
3089 
LPUART5_EdmaSend(const void * data,uint32_t num)3090 static int32_t LPUART5_EdmaSend(const void *data, uint32_t num)
3091 {
3092     return LPUART_EdmaSend(data, num, &LPUART5_EdmaDriverState);
3093 }
3094 
LPUART5_EdmaReceive(void * data,uint32_t num)3095 static int32_t LPUART5_EdmaReceive(void *data, uint32_t num)
3096 {
3097     return LPUART_EdmaReceive(data, num, &LPUART5_EdmaDriverState);
3098 }
3099 
LPUART5_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)3100 static int32_t LPUART5_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
3101 {
3102     return LPUART_EdmaTransfer(data_out, data_in, num, &LPUART5_EdmaDriverState);
3103 }
3104 
LPUART5_EdmaGetTxCount(void)3105 static uint32_t LPUART5_EdmaGetTxCount(void)
3106 {
3107     return LPUART_EdmaGetTxCount(&LPUART5_EdmaDriverState);
3108 }
3109 
LPUART5_EdmaGetRxCount(void)3110 static uint32_t LPUART5_EdmaGetRxCount(void)
3111 {
3112     return LPUART_EdmaGetRxCount(&LPUART5_EdmaDriverState);
3113 }
3114 
LPUART5_EdmaControl(uint32_t control,uint32_t arg)3115 static int32_t LPUART5_EdmaControl(uint32_t control, uint32_t arg)
3116 {
3117     return LPUART_EdmaControl(control, arg, &LPUART5_EdmaDriverState);
3118 }
3119 
LPUART5_EdmaGetStatus(void)3120 static ARM_USART_STATUS LPUART5_EdmaGetStatus(void)
3121 {
3122     return LPUART_EdmaGetStatus(&LPUART5_EdmaDriverState);
3123 }
3124 
3125 #endif
3126 
3127 #else
3128 
3129 static lpuart_handle_t LPUART5_Handle;
3130 
3131 #if defined(USART5_RX_BUFFER_ENABLE) && (USART5_RX_BUFFER_ENABLE == 1)
3132 static uint8_t lpuart5_rxRingBuffer[USART_RX_BUFFER_LEN];
3133 #endif
3134 
3135 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
3136 ARMCC_SECTION("lpuart5_non_blocking_driver_state")
3137 static cmsis_lpuart_non_blocking_driver_state_t LPUART5_NonBlockingDriverState = {
3138 #else
3139 static cmsis_lpuart_non_blocking_driver_state_t LPUART5_NonBlockingDriverState = {
3140 #endif
3141     &LPUART5_Resource,
3142     &LPUART5_Handle,
3143 };
3144 
LPUART5_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)3145 static int32_t LPUART5_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)
3146 {
3147 #ifdef RTE_USART5_PIN_INIT
3148     RTE_USART5_PIN_INIT();
3149 #endif
3150     return LPUART_NonBlockingInitialize(cb_event, &LPUART5_NonBlockingDriverState);
3151 }
3152 
LPUART5_NonBlockingUninitialize(void)3153 static int32_t LPUART5_NonBlockingUninitialize(void)
3154 {
3155 #ifdef RTE_USART5_PIN_DEINIT
3156     RTE_USART5_PIN_DEINIT();
3157 #endif
3158     return LPUART_NonBlockingUninitialize(&LPUART5_NonBlockingDriverState);
3159 }
3160 
LPUART5_NonBlockingPowerControl(ARM_POWER_STATE state)3161 static int32_t LPUART5_NonBlockingPowerControl(ARM_POWER_STATE state)
3162 {
3163     int32_t result;
3164 
3165     result = LPUART_NonBlockingPowerControl(state, &LPUART5_NonBlockingDriverState);
3166 
3167 #if defined(USART5_RX_BUFFER_ENABLE) && (USART5_RX_BUFFER_ENABLE == 1)
3168     if ((state == ARM_POWER_FULL) && (LPUART5_NonBlockingDriverState.handle->rxRingBuffer == NULL))
3169     {
3170         LPUART_TransferStartRingBuffer(LPUART5_NonBlockingDriverState.resource->base,
3171                                        LPUART5_NonBlockingDriverState.handle, lpuart5_rxRingBuffer,
3172                                        USART_RX_BUFFER_LEN);
3173     }
3174 #endif
3175 
3176     return result;
3177 }
3178 
LPUART5_NonBlockingSend(const void * data,uint32_t num)3179 static int32_t LPUART5_NonBlockingSend(const void *data, uint32_t num)
3180 {
3181     return LPUART_NonBlockingSend(data, num, &LPUART5_NonBlockingDriverState);
3182 }
3183 
LPUART5_NonBlockingReceive(void * data,uint32_t num)3184 static int32_t LPUART5_NonBlockingReceive(void *data, uint32_t num)
3185 {
3186     return LPUART_NonBlockingReceive(data, num, &LPUART5_NonBlockingDriverState);
3187 }
3188 
LPUART5_NonBlockingTransfer(const void * data_out,void * data_in,uint32_t num)3189 static int32_t LPUART5_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num)
3190 {
3191     return LPUART_NonBlockingTransfer(data_out, data_in, num, &LPUART5_NonBlockingDriverState);
3192 }
3193 
LPUART5_NonBlockingGetTxCount(void)3194 static uint32_t LPUART5_NonBlockingGetTxCount(void)
3195 {
3196     return LPUART_NonBlockingGetTxCount(&LPUART5_NonBlockingDriverState);
3197 }
3198 
LPUART5_NonBlockingGetRxCount(void)3199 static uint32_t LPUART5_NonBlockingGetRxCount(void)
3200 {
3201     return LPUART_NonBlockingGetRxCount(&LPUART5_NonBlockingDriverState);
3202 }
3203 
LPUART5_NonBlockingControl(uint32_t control,uint32_t arg)3204 static int32_t LPUART5_NonBlockingControl(uint32_t control, uint32_t arg)
3205 {
3206     int32_t result;
3207 
3208     result = LPUART_NonBlockingControl(control, arg, &LPUART5_NonBlockingDriverState);
3209     if (ARM_DRIVER_OK != result)
3210     {
3211         return result;
3212     }
3213 
3214     /* Enable the receive interrupts if ring buffer is used */
3215     if (LPUART5_NonBlockingDriverState.handle->rxRingBuffer != NULL)
3216     {
3217         LPUART_EnableInterrupts(
3218             LPUART5_NonBlockingDriverState.resource->base,
3219             (uint32_t)kLPUART_RxDataRegFullInterruptEnable | (uint32_t)kLPUART_RxOverrunInterruptEnable);
3220     }
3221 
3222     return ARM_DRIVER_OK;
3223 }
3224 
LPUART5_NonBlockingGetStatus(void)3225 static ARM_USART_STATUS LPUART5_NonBlockingGetStatus(void)
3226 {
3227     return LPUART_NonBlockingGetStatus(&LPUART5_NonBlockingDriverState);
3228 }
3229 
3230 #endif
3231 
3232 ARM_DRIVER_USART Driver_USART5 = {LPUARTx_GetVersion,      LPUARTx_GetCapabilities,
3233 #if defined(RTE_USART5_DMA_EN) && RTE_USART5_DMA_EN
3234 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
3235                                   LPUART5_EdmaInitialize,  LPUART5_EdmaUninitialize, LPUART5_EdmaPowerControl,
3236                                   LPUART5_EdmaSend,        LPUART5_EdmaReceive,      LPUART5_EdmaTransfer,
3237                                   LPUART5_EdmaGetTxCount,  LPUART5_EdmaGetRxCount,   LPUART5_EdmaControl,
3238                                   LPUART5_EdmaGetStatus,
3239 #else
3240                                   LPUART5_DmaInitialize,   LPUART5_DmaUninitialize, LPUART5_DmaPowerControl,
3241                                   LPUART5_DmaSend,         LPUART5_DmaReceive,      LPUART5_DmaTransfer,
3242                                   LPUART5_DmaGetTxCount,   LPUART5_DmaGetRxCount,   LPUART5_DmaControl,
3243                                   LPUART5_DmaGetStatus,
3244 #endif /* FSL_FEATURE_SOC_EDMA_COUNT */
3245 #else
3246                                   LPUART5_NonBlockingInitialize,
3247                                   LPUART5_NonBlockingUninitialize,
3248                                   LPUART5_NonBlockingPowerControl,
3249                                   LPUART5_NonBlockingSend,
3250                                   LPUART5_NonBlockingReceive,
3251                                   LPUART5_NonBlockingTransfer,
3252                                   LPUART5_NonBlockingGetTxCount,
3253                                   LPUART5_NonBlockingGetRxCount,
3254                                   LPUART5_NonBlockingControl,
3255                                   LPUART5_NonBlockingGetStatus,
3256 #endif /* RTE_USART5_DMA_EN */
3257                                   LPUARTx_SetModemControl, LPUARTx_GetModemStatus};
3258 
3259 #endif /* LPUART5 */
3260 
3261 #if defined(LPUART6) && defined(RTE_USART6) && RTE_USART6
3262 
3263 /* User needs to provide the implementation for LPUART6_GetFreq/InitPins/DeinitPins
3264 in the application for enabling according instance. */
3265 extern uint32_t LPUART6_GetFreq(void);
3266 
3267 static cmsis_lpuart_resource_t LPUART6_Resource = {LPUART6, LPUART6_GetFreq};
3268 
3269 #if defined(RTE_USART6_DMA_EN) && RTE_USART6_DMA_EN
3270 
3271 #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT)
3272 
3273 static cmsis_lpuart_dma_resource_t LPUART6_DmaResource = {
3274     RTE_USART6_DMA_TX_DMA_BASE,    RTE_USART6_DMA_TX_CH,          RTE_USART6_DMA_TX_PERI_SEL,
3275     RTE_USART6_DMA_RX_DMA_BASE,    RTE_USART6_DMA_RX_CH,          RTE_USART6_DMA_RX_PERI_SEL,
3276 
3277 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
3278     RTE_USART6_DMA_TX_DMAMUX_BASE, RTE_USART6_DMA_RX_DMAMUX_BASE,
3279 #endif
3280 #if FSL_FEATURE_DMA_MODULE_CHANNEL != FSL_FEATURE_DMAMUX_MODULE_CHANNEL
3281     RTE_USART6_DMAMUX_TX_CH,       RTE_USART6_DMAMUX_RX_CH
3282 #endif
3283 };
3284 
3285 static lpuart_dma_handle_t LPUART6_DmaHandle;
3286 static dma_handle_t LPUART6_DmaRxHandle;
3287 static dma_handle_t LPUART6_DmaTxHandle;
3288 
3289 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
3290 ARMCC_SECTION("lpuart6_dma_driver_state")
3291 static cmsis_lpuart_dma_driver_state_t LPUART6_DmaDriverState = {
3292 #else
3293 static cmsis_lpuart_dma_driver_state_t LPUART6_DmaDriverState = {
3294 #endif
3295     &LPUART6_Resource, &LPUART6_DmaResource, &LPUART6_DmaHandle, &LPUART6_DmaRxHandle, &LPUART6_DmaTxHandle,
3296 };
3297 
LPUART6_DmaInitialize(ARM_USART_SignalEvent_t cb_event)3298 static int32_t LPUART6_DmaInitialize(ARM_USART_SignalEvent_t cb_event)
3299 {
3300 #ifdef RTE_USART6_PIN_INIT
3301     RTE_USART6_PIN_INIT();
3302 #endif
3303     return LPUART_DmaInitialize(cb_event, &LPUART6_DmaDriverState);
3304 }
3305 
LPUART6_DmaUninitialize(void)3306 static int32_t LPUART6_DmaUninitialize(void)
3307 {
3308 #ifdef RTE_USART6_PIN_DEINIT
3309     RTE_USART6_PIN_DEINIT();
3310 #endif
3311     return LPUART_DmaUninitialize(&LPUART6_DmaDriverState);
3312 }
3313 
LPUART6_DmaPowerControl(ARM_POWER_STATE state)3314 static int32_t LPUART6_DmaPowerControl(ARM_POWER_STATE state)
3315 {
3316     return LPUART_DmaPowerControl(state, &LPUART6_DmaDriverState);
3317 }
3318 
LPUART6_DmaSend(const void * data,uint32_t num)3319 static int32_t LPUART6_DmaSend(const void *data, uint32_t num)
3320 {
3321     return LPUART_DmaSend(data, num, &LPUART6_DmaDriverState);
3322 }
3323 
LPUART6_DmaReceive(void * data,uint32_t num)3324 static int32_t LPUART6_DmaReceive(void *data, uint32_t num)
3325 {
3326     return LPUART_DmaReceive(data, num, &LPUART6_DmaDriverState);
3327 }
3328 
LPUART6_DmaTransfer(const void * data_out,void * data_in,uint32_t num)3329 static int32_t LPUART6_DmaTransfer(const void *data_out, void *data_in, uint32_t num)
3330 {
3331     return LPUART_DmaTransfer(data_out, data_in, num, &LPUART6_DmaDriverState);
3332 }
3333 
LPUART6_DmaGetTxCount(void)3334 static uint32_t LPUART6_DmaGetTxCount(void)
3335 {
3336     return LPUART_DmaGetTxCount(&LPUART6_DmaDriverState);
3337 }
3338 
LPUART6_DmaGetRxCount(void)3339 static uint32_t LPUART6_DmaGetRxCount(void)
3340 {
3341     return LPUART_DmaGetRxCount(&LPUART6_DmaDriverState);
3342 }
3343 
LPUART6_DmaControl(uint32_t control,uint32_t arg)3344 static int32_t LPUART6_DmaControl(uint32_t control, uint32_t arg)
3345 {
3346     return LPUART_DmaControl(control, arg, &LPUART6_DmaDriverState);
3347 }
3348 
LPUART6_DmaGetStatus(void)3349 static ARM_USART_STATUS LPUART6_DmaGetStatus(void)
3350 {
3351     return LPUART_DmaGetStatus(&LPUART6_DmaDriverState);
3352 }
3353 
3354 /* LPUART6 Driver Control Block */
3355 
3356 #endif
3357 
3358 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
3359 
3360 static cmsis_lpuart_edma_resource_t LPUART6_EdmaResource = {
3361     RTE_USART6_DMA_TX_DMA_BASE,    RTE_USART6_DMA_TX_CH,          RTE_USART6_DMA_TX_PERI_SEL,
3362     RTE_USART6_DMA_RX_DMA_BASE,    RTE_USART6_DMA_RX_CH,          RTE_USART6_DMA_RX_PERI_SEL,
3363 
3364 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
3365     RTE_USART6_DMA_TX_DMAMUX_BASE, RTE_USART6_DMA_RX_DMAMUX_BASE,
3366 #endif
3367 };
3368 
3369 static lpuart_edma_handle_t LPUART6_EdmaHandle;
3370 static edma_handle_t LPUART6_EdmaRxHandle;
3371 static edma_handle_t LPUART6_EdmaTxHandle;
3372 
3373 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
3374 ARMCC_SECTION("lpuart6_edma_driver_state")
3375 static cmsis_lpuart_edma_driver_state_t LPUART6_EdmaDriverState = {
3376 #else
3377 static cmsis_lpuart_edma_driver_state_t LPUART6_EdmaDriverState = {
3378 #endif
3379     &LPUART6_Resource, &LPUART6_EdmaResource, &LPUART6_EdmaHandle, &LPUART6_EdmaRxHandle, &LPUART6_EdmaTxHandle,
3380 };
3381 
LPUART6_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)3382 static int32_t LPUART6_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)
3383 {
3384 #ifdef RTE_USART6_PIN_INIT
3385     RTE_USART6_PIN_INIT();
3386 #endif
3387     return LPUART_EdmaInitialize(cb_event, &LPUART6_EdmaDriverState);
3388 }
3389 
LPUART6_EdmaUninitialize(void)3390 static int32_t LPUART6_EdmaUninitialize(void)
3391 {
3392 #ifdef RTE_USART6_PIN_DEINIT
3393     RTE_USART6_PIN_DEINIT();
3394 #endif
3395     return LPUART_EdmaUninitialize(&LPUART6_EdmaDriverState);
3396 }
3397 
LPUART6_EdmaPowerControl(ARM_POWER_STATE state)3398 static int32_t LPUART6_EdmaPowerControl(ARM_POWER_STATE state)
3399 {
3400     return LPUART_EdmaPowerControl(state, &LPUART6_EdmaDriverState);
3401 }
3402 
LPUART6_EdmaSend(const void * data,uint32_t num)3403 static int32_t LPUART6_EdmaSend(const void *data, uint32_t num)
3404 {
3405     return LPUART_EdmaSend(data, num, &LPUART6_EdmaDriverState);
3406 }
3407 
LPUART6_EdmaReceive(void * data,uint32_t num)3408 static int32_t LPUART6_EdmaReceive(void *data, uint32_t num)
3409 {
3410     return LPUART_EdmaReceive(data, num, &LPUART6_EdmaDriverState);
3411 }
3412 
LPUART6_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)3413 static int32_t LPUART6_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
3414 {
3415     return LPUART_EdmaTransfer(data_out, data_in, num, &LPUART6_EdmaDriverState);
3416 }
3417 
LPUART6_EdmaGetTxCount(void)3418 static uint32_t LPUART6_EdmaGetTxCount(void)
3419 {
3420     return LPUART_EdmaGetTxCount(&LPUART6_EdmaDriverState);
3421 }
3422 
LPUART6_EdmaGetRxCount(void)3423 static uint32_t LPUART6_EdmaGetRxCount(void)
3424 {
3425     return LPUART_EdmaGetRxCount(&LPUART6_EdmaDriverState);
3426 }
3427 
LPUART6_EdmaControl(uint32_t control,uint32_t arg)3428 static int32_t LPUART6_EdmaControl(uint32_t control, uint32_t arg)
3429 {
3430     return LPUART_EdmaControl(control, arg, &LPUART6_EdmaDriverState);
3431 }
3432 
LPUART6_EdmaGetStatus(void)3433 static ARM_USART_STATUS LPUART6_EdmaGetStatus(void)
3434 {
3435     return LPUART_EdmaGetStatus(&LPUART6_EdmaDriverState);
3436 }
3437 
3438 #endif
3439 
3440 #else
3441 
3442 static lpuart_handle_t LPUART6_Handle;
3443 
3444 #if defined(USART6_RX_BUFFER_ENABLE) && (USART6_RX_BUFFER_ENABLE == 1)
3445 static uint8_t lpuart6_rxRingBuffer[USART_RX_BUFFER_LEN];
3446 #endif
3447 
3448 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
3449 ARMCC_SECTION("lpuart6_non_blocking_driver_state")
3450 static cmsis_lpuart_non_blocking_driver_state_t LPUART6_NonBlockingDriverState = {
3451 #else
3452 static cmsis_lpuart_non_blocking_driver_state_t LPUART6_NonBlockingDriverState = {
3453 #endif
3454     &LPUART6_Resource,
3455     &LPUART6_Handle,
3456 };
3457 
LPUART6_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)3458 static int32_t LPUART6_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)
3459 {
3460 #ifdef RTE_USART6_PIN_INIT
3461     RTE_USART6_PIN_INIT();
3462 #endif
3463     return LPUART_NonBlockingInitialize(cb_event, &LPUART6_NonBlockingDriverState);
3464 }
3465 
LPUART6_NonBlockingUninitialize(void)3466 static int32_t LPUART6_NonBlockingUninitialize(void)
3467 {
3468 #ifdef RTE_USART6_PIN_DEINIT
3469     RTE_USART6_PIN_DEINIT();
3470 #endif
3471     return LPUART_NonBlockingUninitialize(&LPUART6_NonBlockingDriverState);
3472 }
3473 
LPUART6_NonBlockingPowerControl(ARM_POWER_STATE state)3474 static int32_t LPUART6_NonBlockingPowerControl(ARM_POWER_STATE state)
3475 {
3476     int32_t result;
3477 
3478     result = LPUART_NonBlockingPowerControl(state, &LPUART6_NonBlockingDriverState);
3479 
3480 #if defined(USART6_RX_BUFFER_ENABLE) && (USART6_RX_BUFFER_ENABLE == 1)
3481     if ((state == ARM_POWER_FULL) && (LPUART6_NonBlockingDriverState.handle->rxRingBuffer == NULL))
3482     {
3483         LPUART_TransferStartRingBuffer(LPUART6_NonBlockingDriverState.resource->base,
3484                                        LPUART6_NonBlockingDriverState.handle, lpuart6_rxRingBuffer,
3485                                        USART_RX_BUFFER_LEN);
3486     }
3487 #endif
3488 
3489     return result;
3490 }
3491 
LPUART6_NonBlockingSend(const void * data,uint32_t num)3492 static int32_t LPUART6_NonBlockingSend(const void *data, uint32_t num)
3493 {
3494     return LPUART_NonBlockingSend(data, num, &LPUART6_NonBlockingDriverState);
3495 }
3496 
LPUART6_NonBlockingReceive(void * data,uint32_t num)3497 static int32_t LPUART6_NonBlockingReceive(void *data, uint32_t num)
3498 {
3499     return LPUART_NonBlockingReceive(data, num, &LPUART6_NonBlockingDriverState);
3500 }
3501 
LPUART6_NonBlockingTransfer(const void * data_out,void * data_in,uint32_t num)3502 static int32_t LPUART6_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num)
3503 {
3504     return LPUART_NonBlockingTransfer(data_out, data_in, num, &LPUART6_NonBlockingDriverState);
3505 }
3506 
LPUART6_NonBlockingGetTxCount(void)3507 static uint32_t LPUART6_NonBlockingGetTxCount(void)
3508 {
3509     return LPUART_NonBlockingGetTxCount(&LPUART6_NonBlockingDriverState);
3510 }
3511 
LPUART6_NonBlockingGetRxCount(void)3512 static uint32_t LPUART6_NonBlockingGetRxCount(void)
3513 {
3514     return LPUART_NonBlockingGetRxCount(&LPUART6_NonBlockingDriverState);
3515 }
3516 
LPUART6_NonBlockingControl(uint32_t control,uint32_t arg)3517 static int32_t LPUART6_NonBlockingControl(uint32_t control, uint32_t arg)
3518 {
3519     int32_t result;
3520 
3521     result = LPUART_NonBlockingControl(control, arg, &LPUART6_NonBlockingDriverState);
3522     if (ARM_DRIVER_OK != result)
3523     {
3524         return result;
3525     }
3526 
3527     /* Enable the receive interrupts if ring buffer is used */
3528     if (LPUART6_NonBlockingDriverState.handle->rxRingBuffer != NULL)
3529     {
3530         LPUART_EnableInterrupts(
3531             LPUART6_NonBlockingDriverState.resource->base,
3532             (uint32_t)kLPUART_RxDataRegFullInterruptEnable | (uint32_t)kLPUART_RxOverrunInterruptEnable);
3533     }
3534 
3535     return ARM_DRIVER_OK;
3536 }
3537 
LPUART6_NonBlockingGetStatus(void)3538 static ARM_USART_STATUS LPUART6_NonBlockingGetStatus(void)
3539 {
3540     return LPUART_NonBlockingGetStatus(&LPUART6_NonBlockingDriverState);
3541 }
3542 
3543 #endif
3544 
3545 ARM_DRIVER_USART Driver_USART6 = {LPUARTx_GetVersion,      LPUARTx_GetCapabilities,
3546 #if defined(RTE_USART6_DMA_EN) && RTE_USART6_DMA_EN
3547 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
3548                                   LPUART6_EdmaInitialize,  LPUART6_EdmaUninitialize, LPUART6_EdmaPowerControl,
3549                                   LPUART6_EdmaSend,        LPUART6_EdmaReceive,      LPUART6_EdmaTransfer,
3550                                   LPUART6_EdmaGetTxCount,  LPUART6_EdmaGetRxCount,   LPUART6_EdmaControl,
3551                                   LPUART6_EdmaGetStatus,
3552 #else
3553                                   LPUART6_DmaInitialize,   LPUART6_DmaUninitialize, LPUART6_DmaPowerControl,
3554                                   LPUART6_DmaSend,         LPUART6_DmaReceive,      LPUART6_DmaTransfer,
3555                                   LPUART6_DmaGetTxCount,   LPUART6_DmaGetRxCount,   LPUART6_DmaControl,
3556                                   LPUART6_DmaGetStatus,
3557 #endif /* FSL_FEATURE_SOC_EDMA_COUNT */
3558 #else
3559                                   LPUART6_NonBlockingInitialize,
3560                                   LPUART6_NonBlockingUninitialize,
3561                                   LPUART6_NonBlockingPowerControl,
3562                                   LPUART6_NonBlockingSend,
3563                                   LPUART6_NonBlockingReceive,
3564                                   LPUART6_NonBlockingTransfer,
3565                                   LPUART6_NonBlockingGetTxCount,
3566                                   LPUART6_NonBlockingGetRxCount,
3567                                   LPUART6_NonBlockingControl,
3568                                   LPUART6_NonBlockingGetStatus,
3569 #endif /* RTE_USART6_DMA_EN */
3570                                   LPUARTx_SetModemControl, LPUARTx_GetModemStatus};
3571 
3572 #endif /* LPUART6 */
3573 
3574 #if defined(LPUART7) && defined(RTE_USART7) && RTE_USART7
3575 
3576 /* User needs to provide the implementation for LPUART7_GetFreq/InitPins/DeinitPins
3577 in the application for enabling according instance. */
3578 extern uint32_t LPUART7_GetFreq(void);
3579 
3580 static cmsis_lpuart_resource_t LPUART7_Resource = {LPUART7, LPUART7_GetFreq};
3581 
3582 #if defined(RTE_USART7_DMA_EN) && RTE_USART7_DMA_EN
3583 
3584 #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT)
3585 
3586 static cmsis_lpuart_dma_resource_t LPUART7_DmaResource = {
3587     RTE_USART7_DMA_TX_DMA_BASE,    RTE_USART7_DMA_TX_CH,          RTE_USART7_DMA_TX_PERI_SEL,
3588     RTE_USART7_DMA_RX_DMA_BASE,    RTE_USART7_DMA_RX_CH,          RTE_USART7_DMA_RX_PERI_SEL,
3589 
3590 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
3591     RTE_USART7_DMA_TX_DMAMUX_BASE, RTE_USART7_DMA_RX_DMAMUX_BASE,
3592 #endif
3593 #if FSL_FEATURE_DMA_MODULE_CHANNEL != FSL_FEATURE_DMAMUX_MODULE_CHANNEL
3594     RTE_USART7_DMAMUX_TX_CH,       RTE_USART7_DMAMUX_RX_CH
3595 #endif
3596 };
3597 
3598 static lpuart_dma_handle_t LPUART7_DmaHandle;
3599 static dma_handle_t LPUART7_DmaRxHandle;
3600 static dma_handle_t LPUART7_DmaTxHandle;
3601 
3602 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
3603 ARMCC_SECTION("lpuart7_dma_driver_state")
3604 static cmsis_lpuart_dma_driver_state_t LPUART7_DmaDriverState = {
3605 #else
3606 static cmsis_lpuart_dma_driver_state_t LPUART7_DmaDriverState = {
3607 #endif
3608     &LPUART7_Resource, &LPUART7_DmaResource, &LPUART7_DmaHandle, &LPUART7_DmaRxHandle, &LPUART7_DmaTxHandle,
3609 };
3610 
LPUART7_DmaInitialize(ARM_USART_SignalEvent_t cb_event)3611 static int32_t LPUART7_DmaInitialize(ARM_USART_SignalEvent_t cb_event)
3612 {
3613 #ifdef RTE_USART7_PIN_INIT
3614     RTE_USART7_PIN_INIT();
3615 #endif
3616     return LPUART_DmaInitialize(cb_event, &LPUART7_DmaDriverState);
3617 }
3618 
LPUART7_DmaUninitialize(void)3619 static int32_t LPUART7_DmaUninitialize(void)
3620 {
3621 #ifdef RTE_USART7_PIN_DEINIT
3622     RTE_USART7_PIN_DEINIT();
3623 #endif
3624     return LPUART_DmaUninitialize(&LPUART7_DmaDriverState);
3625 }
3626 
LPUART7_DmaPowerControl(ARM_POWER_STATE state)3627 static int32_t LPUART7_DmaPowerControl(ARM_POWER_STATE state)
3628 {
3629     return LPUART_DmaPowerControl(state, &LPUART7_DmaDriverState);
3630 }
3631 
LPUART7_DmaSend(const void * data,uint32_t num)3632 static int32_t LPUART7_DmaSend(const void *data, uint32_t num)
3633 {
3634     return LPUART_DmaSend(data, num, &LPUART7_DmaDriverState);
3635 }
3636 
LPUART7_DmaReceive(void * data,uint32_t num)3637 static int32_t LPUART7_DmaReceive(void *data, uint32_t num)
3638 {
3639     return LPUART_DmaReceive(data, num, &LPUART7_DmaDriverState);
3640 }
3641 
LPUART7_DmaTransfer(const void * data_out,void * data_in,uint32_t num)3642 static int32_t LPUART7_DmaTransfer(const void *data_out, void *data_in, uint32_t num)
3643 {
3644     return LPUART_DmaTransfer(data_out, data_in, num, &LPUART7_DmaDriverState);
3645 }
3646 
LPUART7_DmaGetTxCount(void)3647 static uint32_t LPUART7_DmaGetTxCount(void)
3648 {
3649     return LPUART_DmaGetTxCount(&LPUART7_DmaDriverState);
3650 }
3651 
LPUART7_DmaGetRxCount(void)3652 static uint32_t LPUART7_DmaGetRxCount(void)
3653 {
3654     return LPUART_DmaGetRxCount(&LPUART7_DmaDriverState);
3655 }
3656 
LPUART7_DmaControl(uint32_t control,uint32_t arg)3657 static int32_t LPUART7_DmaControl(uint32_t control, uint32_t arg)
3658 {
3659     return LPUART_DmaControl(control, arg, &LPUART7_DmaDriverState);
3660 }
3661 
LPUART7_DmaGetStatus(void)3662 static ARM_USART_STATUS LPUART7_DmaGetStatus(void)
3663 {
3664     return LPUART_DmaGetStatus(&LPUART7_DmaDriverState);
3665 }
3666 
3667 /* LPUART7 Driver Control Block */
3668 
3669 #endif
3670 
3671 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
3672 
3673 static cmsis_lpuart_edma_resource_t LPUART7_EdmaResource = {
3674     RTE_USART7_DMA_TX_DMA_BASE,    RTE_USART7_DMA_TX_CH,          RTE_USART7_DMA_TX_PERI_SEL,
3675     RTE_USART7_DMA_RX_DMA_BASE,    RTE_USART7_DMA_RX_CH,          RTE_USART7_DMA_RX_PERI_SEL,
3676 
3677 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
3678     RTE_USART7_DMA_TX_DMAMUX_BASE, RTE_USART7_DMA_RX_DMAMUX_BASE,
3679 #endif
3680 };
3681 
3682 static lpuart_edma_handle_t LPUART7_EdmaHandle;
3683 static edma_handle_t LPUART7_EdmaRxHandle;
3684 static edma_handle_t LPUART7_EdmaTxHandle;
3685 
3686 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
3687 ARMCC_SECTION("lpuart7_edma_driver_state")
3688 static cmsis_lpuart_edma_driver_state_t LPUART7_EdmaDriverState = {
3689 #else
3690 static cmsis_lpuart_edma_driver_state_t LPUART7_EdmaDriverState = {
3691 #endif
3692     &LPUART7_Resource, &LPUART7_EdmaResource, &LPUART7_EdmaHandle, &LPUART7_EdmaRxHandle, &LPUART7_EdmaTxHandle,
3693 };
3694 
LPUART7_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)3695 static int32_t LPUART7_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)
3696 {
3697 #ifdef RTE_USART7_PIN_INIT
3698     RTE_USART7_PIN_INIT();
3699 #endif
3700     return LPUART_EdmaInitialize(cb_event, &LPUART7_EdmaDriverState);
3701 }
3702 
LPUART7_EdmaUninitialize(void)3703 static int32_t LPUART7_EdmaUninitialize(void)
3704 {
3705 #ifdef RTE_USART7_PIN_DEINIT
3706     RTE_USART7_PIN_DEINIT();
3707 #endif
3708     return LPUART_EdmaUninitialize(&LPUART7_EdmaDriverState);
3709 }
3710 
LPUART7_EdmaPowerControl(ARM_POWER_STATE state)3711 static int32_t LPUART7_EdmaPowerControl(ARM_POWER_STATE state)
3712 {
3713     return LPUART_EdmaPowerControl(state, &LPUART7_EdmaDriverState);
3714 }
3715 
LPUART7_EdmaSend(const void * data,uint32_t num)3716 static int32_t LPUART7_EdmaSend(const void *data, uint32_t num)
3717 {
3718     return LPUART_EdmaSend(data, num, &LPUART7_EdmaDriverState);
3719 }
3720 
LPUART7_EdmaReceive(void * data,uint32_t num)3721 static int32_t LPUART7_EdmaReceive(void *data, uint32_t num)
3722 {
3723     return LPUART_EdmaReceive(data, num, &LPUART7_EdmaDriverState);
3724 }
3725 
LPUART7_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)3726 static int32_t LPUART7_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
3727 {
3728     return LPUART_EdmaTransfer(data_out, data_in, num, &LPUART7_EdmaDriverState);
3729 }
3730 
LPUART7_EdmaGetTxCount(void)3731 static uint32_t LPUART7_EdmaGetTxCount(void)
3732 {
3733     return LPUART_EdmaGetTxCount(&LPUART7_EdmaDriverState);
3734 }
3735 
LPUART7_EdmaGetRxCount(void)3736 static uint32_t LPUART7_EdmaGetRxCount(void)
3737 {
3738     return LPUART_EdmaGetRxCount(&LPUART7_EdmaDriverState);
3739 }
3740 
LPUART7_EdmaControl(uint32_t control,uint32_t arg)3741 static int32_t LPUART7_EdmaControl(uint32_t control, uint32_t arg)
3742 {
3743     return LPUART_EdmaControl(control, arg, &LPUART7_EdmaDriverState);
3744 }
3745 
LPUART7_EdmaGetStatus(void)3746 static ARM_USART_STATUS LPUART7_EdmaGetStatus(void)
3747 {
3748     return LPUART_EdmaGetStatus(&LPUART7_EdmaDriverState);
3749 }
3750 
3751 #endif
3752 
3753 #else
3754 
3755 static lpuart_handle_t LPUART7_Handle;
3756 
3757 #if defined(USART7_RX_BUFFER_ENABLE) && (USART7_RX_BUFFER_ENABLE == 1)
3758 static uint8_t lpuart7_rxRingBuffer[USART_RX_BUFFER_LEN];
3759 #endif
3760 
3761 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
3762 ARMCC_SECTION("lpuart7_non_blocking_driver_state")
3763 static cmsis_lpuart_non_blocking_driver_state_t LPUART7_NonBlockingDriverState = {
3764 #else
3765 static cmsis_lpuart_non_blocking_driver_state_t LPUART7_NonBlockingDriverState = {
3766 #endif
3767     &LPUART7_Resource,
3768     &LPUART7_Handle,
3769 };
3770 
LPUART7_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)3771 static int32_t LPUART7_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)
3772 {
3773 #ifdef RTE_USART7_PIN_INIT
3774     RTE_USART7_PIN_INIT();
3775 #endif
3776     return LPUART_NonBlockingInitialize(cb_event, &LPUART7_NonBlockingDriverState);
3777 }
3778 
LPUART7_NonBlockingUninitialize(void)3779 static int32_t LPUART7_NonBlockingUninitialize(void)
3780 {
3781 #ifdef RTE_USART7_PIN_DEINIT
3782     RTE_USART7_PIN_DEINIT();
3783 #endif
3784     return LPUART_NonBlockingUninitialize(&LPUART7_NonBlockingDriverState);
3785 }
3786 
LPUART7_NonBlockingPowerControl(ARM_POWER_STATE state)3787 static int32_t LPUART7_NonBlockingPowerControl(ARM_POWER_STATE state)
3788 {
3789     int32_t result;
3790 
3791     result = LPUART_NonBlockingPowerControl(state, &LPUART7_NonBlockingDriverState);
3792 
3793 #if defined(USART7_RX_BUFFER_ENABLE) && (USART7_RX_BUFFER_ENABLE == 1)
3794     if ((state == ARM_POWER_FULL) && (LPUART7_NonBlockingDriverState.handle->rxRingBuffer == NULL))
3795     {
3796         LPUART_TransferStartRingBuffer(LPUART7_NonBlockingDriverState.resource->base,
3797                                        LPUART7_NonBlockingDriverState.handle, lpuart7_rxRingBuffer,
3798                                        USART_RX_BUFFER_LEN);
3799     }
3800 #endif
3801 
3802     return result;
3803 }
3804 
LPUART7_NonBlockingSend(const void * data,uint32_t num)3805 static int32_t LPUART7_NonBlockingSend(const void *data, uint32_t num)
3806 {
3807     return LPUART_NonBlockingSend(data, num, &LPUART7_NonBlockingDriverState);
3808 }
3809 
LPUART7_NonBlockingReceive(void * data,uint32_t num)3810 static int32_t LPUART7_NonBlockingReceive(void *data, uint32_t num)
3811 {
3812     return LPUART_NonBlockingReceive(data, num, &LPUART7_NonBlockingDriverState);
3813 }
3814 
LPUART7_NonBlockingTransfer(const void * data_out,void * data_in,uint32_t num)3815 static int32_t LPUART7_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num)
3816 {
3817     return LPUART_NonBlockingTransfer(data_out, data_in, num, &LPUART7_NonBlockingDriverState);
3818 }
3819 
LPUART7_NonBlockingGetTxCount(void)3820 static uint32_t LPUART7_NonBlockingGetTxCount(void)
3821 {
3822     return LPUART_NonBlockingGetTxCount(&LPUART7_NonBlockingDriverState);
3823 }
3824 
LPUART7_NonBlockingGetRxCount(void)3825 static uint32_t LPUART7_NonBlockingGetRxCount(void)
3826 {
3827     return LPUART_NonBlockingGetRxCount(&LPUART7_NonBlockingDriverState);
3828 }
3829 
LPUART7_NonBlockingControl(uint32_t control,uint32_t arg)3830 static int32_t LPUART7_NonBlockingControl(uint32_t control, uint32_t arg)
3831 {
3832     int32_t result;
3833 
3834     result = LPUART_NonBlockingControl(control, arg, &LPUART7_NonBlockingDriverState);
3835     if (ARM_DRIVER_OK != result)
3836     {
3837         return result;
3838     }
3839 
3840     /* Enable the receive interrupts if ring buffer is used */
3841     if (LPUART7_NonBlockingDriverState.handle->rxRingBuffer != NULL)
3842     {
3843         LPUART_EnableInterrupts(
3844             LPUART7_NonBlockingDriverState.resource->base,
3845             (uint32_t)kLPUART_RxDataRegFullInterruptEnable | (uint32_t)kLPUART_RxOverrunInterruptEnable);
3846     }
3847 
3848     return ARM_DRIVER_OK;
3849 }
3850 
LPUART7_NonBlockingGetStatus(void)3851 static ARM_USART_STATUS LPUART7_NonBlockingGetStatus(void)
3852 {
3853     return LPUART_NonBlockingGetStatus(&LPUART7_NonBlockingDriverState);
3854 }
3855 
3856 #endif
3857 
3858 ARM_DRIVER_USART Driver_USART7 = {LPUARTx_GetVersion,      LPUARTx_GetCapabilities,
3859 #if defined(RTE_USART7_DMA_EN) && RTE_USART7_DMA_EN
3860 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
3861                                   LPUART7_EdmaInitialize,  LPUART7_EdmaUninitialize, LPUART7_EdmaPowerControl,
3862                                   LPUART7_EdmaSend,        LPUART7_EdmaReceive,      LPUART7_EdmaTransfer,
3863                                   LPUART7_EdmaGetTxCount,  LPUART7_EdmaGetRxCount,   LPUART7_EdmaControl,
3864                                   LPUART7_EdmaGetStatus,
3865 #else
3866                                   LPUART7_DmaInitialize,   LPUART7_DmaUninitialize, LPUART7_DmaPowerControl,
3867                                   LPUART7_DmaSend,         LPUART7_DmaReceive,      LPUART7_DmaTransfer,
3868                                   LPUART7_DmaGetTxCount,   LPUART7_DmaGetRxCount,   LPUART7_DmaControl,
3869                                   LPUART7_DmaGetStatus,
3870 #endif /* FSL_FEATURE_SOC_EDMA_COUNT */
3871 #else
3872                                   LPUART7_NonBlockingInitialize,
3873                                   LPUART7_NonBlockingUninitialize,
3874                                   LPUART7_NonBlockingPowerControl,
3875                                   LPUART7_NonBlockingSend,
3876                                   LPUART7_NonBlockingReceive,
3877                                   LPUART7_NonBlockingTransfer,
3878                                   LPUART7_NonBlockingGetTxCount,
3879                                   LPUART7_NonBlockingGetRxCount,
3880                                   LPUART7_NonBlockingControl,
3881                                   LPUART7_NonBlockingGetStatus,
3882 #endif /* RTE_USART7_DMA_EN */
3883                                   LPUARTx_SetModemControl, LPUARTx_GetModemStatus};
3884 
3885 #endif /* LPUART7 */
3886 
3887 #if defined(LPUART8) && defined(RTE_USART8) && RTE_USART8
3888 
3889 /* User needs to provide the implementation for LPUART8_GetFreq/InitPins/DeinitPins
3890 in the application for enabling according instance. */
3891 extern uint32_t LPUART8_GetFreq(void);
3892 
3893 static cmsis_lpuart_resource_t LPUART8_Resource = {LPUART8, LPUART8_GetFreq};
3894 
3895 #if defined(RTE_USART8_DMA_EN) && RTE_USART8_DMA_EN
3896 
3897 #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT)
3898 
3899 static cmsis_lpuart_dma_resource_t LPUART8_DmaResource = {
3900     RTE_USART8_DMA_TX_DMA_BASE,    RTE_USART8_DMA_TX_CH,          RTE_USART8_DMA_TX_PERI_SEL,
3901     RTE_USART8_DMA_RX_DMA_BASE,    RTE_USART8_DMA_RX_CH,          RTE_USART8_DMA_RX_PERI_SEL,
3902 
3903 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
3904     RTE_USART8_DMA_TX_DMAMUX_BASE, RTE_USART8_DMA_RX_DMAMUX_BASE,
3905 #endif
3906 #if FSL_FEATURE_DMA_MODULE_CHANNEL != FSL_FEATURE_DMAMUX_MODULE_CHANNEL
3907     RTE_USART8_DMAMUX_TX_CH,       RTE_USART8_DMAMUX_RX_CH
3908 #endif
3909 };
3910 
3911 static lpuart_dma_handle_t LPUART8_DmaHandle;
3912 static dma_handle_t LPUART8_DmaRxHandle;
3913 static dma_handle_t LPUART8_DmaTxHandle;
3914 
3915 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
3916 ARMCC_SECTION("lpuart8_dma_driver_state")
3917 static cmsis_lpuart_dma_driver_state_t LPUART8_DmaDriverState = {
3918 #else
3919 static cmsis_lpuart_dma_driver_state_t LPUART8_DmaDriverState = {
3920 #endif
3921     &LPUART8_Resource, &LPUART8_DmaResource, &LPUART8_DmaHandle, &LPUART8_DmaRxHandle, &LPUART8_DmaTxHandle,
3922 };
3923 
LPUART8_DmaInitialize(ARM_USART_SignalEvent_t cb_event)3924 static int32_t LPUART8_DmaInitialize(ARM_USART_SignalEvent_t cb_event)
3925 {
3926 #ifdef RTE_USART8_PIN_INIT
3927     RTE_USART8_PIN_INIT();
3928 #endif
3929     return LPUART_DmaInitialize(cb_event, &LPUART8_DmaDriverState);
3930 }
3931 
LPUART8_DmaUninitialize(void)3932 static int32_t LPUART8_DmaUninitialize(void)
3933 {
3934 #ifdef RTE_USART8_PIN_DEINIT
3935     RTE_USART8_PIN_DEINIT();
3936 #endif
3937     return LPUART_DmaUninitialize(&LPUART8_DmaDriverState);
3938 }
3939 
LPUART8_DmaPowerControl(ARM_POWER_STATE state)3940 static int32_t LPUART8_DmaPowerControl(ARM_POWER_STATE state)
3941 {
3942     return LPUART_DmaPowerControl(state, &LPUART8_DmaDriverState);
3943 }
3944 
LPUART8_DmaSend(const void * data,uint32_t num)3945 static int32_t LPUART8_DmaSend(const void *data, uint32_t num)
3946 {
3947     return LPUART_DmaSend(data, num, &LPUART8_DmaDriverState);
3948 }
3949 
LPUART8_DmaReceive(void * data,uint32_t num)3950 static int32_t LPUART8_DmaReceive(void *data, uint32_t num)
3951 {
3952     return LPUART_DmaReceive(data, num, &LPUART8_DmaDriverState);
3953 }
3954 
LPUART8_DmaTransfer(const void * data_out,void * data_in,uint32_t num)3955 static int32_t LPUART8_DmaTransfer(const void *data_out, void *data_in, uint32_t num)
3956 {
3957     return LPUART_DmaTransfer(data_out, data_in, num, &LPUART8_DmaDriverState);
3958 }
3959 
LPUART8_DmaGetTxCount(void)3960 static uint32_t LPUART8_DmaGetTxCount(void)
3961 {
3962     return LPUART_DmaGetTxCount(&LPUART8_DmaDriverState);
3963 }
3964 
LPUART8_DmaGetRxCount(void)3965 static uint32_t LPUART8_DmaGetRxCount(void)
3966 {
3967     return LPUART_DmaGetRxCount(&LPUART8_DmaDriverState);
3968 }
3969 
LPUART8_DmaControl(uint32_t control,uint32_t arg)3970 static int32_t LPUART8_DmaControl(uint32_t control, uint32_t arg)
3971 {
3972     return LPUART_DmaControl(control, arg, &LPUART8_DmaDriverState);
3973 }
3974 
LPUART8_DmaGetStatus(void)3975 static ARM_USART_STATUS LPUART8_DmaGetStatus(void)
3976 {
3977     return LPUART_DmaGetStatus(&LPUART8_DmaDriverState);
3978 }
3979 
3980 /* LPUART8 Driver Control Block */
3981 
3982 #endif
3983 
3984 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
3985 
3986 static cmsis_lpuart_edma_resource_t LPUART8_EdmaResource = {
3987     RTE_USART8_DMA_TX_DMA_BASE,    RTE_USART8_DMA_TX_CH,          RTE_USART8_DMA_TX_PERI_SEL,
3988     RTE_USART8_DMA_RX_DMA_BASE,    RTE_USART8_DMA_RX_CH,          RTE_USART8_DMA_RX_PERI_SEL,
3989 
3990 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
3991     RTE_USART8_DMA_TX_DMAMUX_BASE, RTE_USART8_DMA_RX_DMAMUX_BASE,
3992 #endif
3993 };
3994 
3995 static lpuart_edma_handle_t LPUART8_EdmaHandle;
3996 static edma_handle_t LPUART8_EdmaRxHandle;
3997 static edma_handle_t LPUART8_EdmaTxHandle;
3998 
3999 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
4000 ARMCC_SECTION("lpuart8_edma_driver_state")
4001 static cmsis_lpuart_edma_driver_state_t LPUART8_EdmaDriverState = {
4002 #else
4003 static cmsis_lpuart_edma_driver_state_t LPUART8_EdmaDriverState = {
4004 #endif
4005     &LPUART8_Resource, &LPUART8_EdmaResource, &LPUART8_EdmaHandle, &LPUART8_EdmaRxHandle, &LPUART8_EdmaTxHandle,
4006 };
4007 
LPUART8_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)4008 static int32_t LPUART8_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)
4009 {
4010 #ifdef RTE_USART8_PIN_INIT
4011     RTE_USART8_PIN_INIT();
4012 #endif
4013     return LPUART_EdmaInitialize(cb_event, &LPUART8_EdmaDriverState);
4014 }
4015 
LPUART8_EdmaUninitialize(void)4016 static int32_t LPUART8_EdmaUninitialize(void)
4017 {
4018 #ifdef RTE_USART8_PIN_DEINIT
4019     RTE_USART8_PIN_DEINIT();
4020 #endif
4021     return LPUART_EdmaUninitialize(&LPUART8_EdmaDriverState);
4022 }
4023 
LPUART8_EdmaPowerControl(ARM_POWER_STATE state)4024 static int32_t LPUART8_EdmaPowerControl(ARM_POWER_STATE state)
4025 {
4026     return LPUART_EdmaPowerControl(state, &LPUART8_EdmaDriverState);
4027 }
4028 
LPUART8_EdmaSend(const void * data,uint32_t num)4029 static int32_t LPUART8_EdmaSend(const void *data, uint32_t num)
4030 {
4031     return LPUART_EdmaSend(data, num, &LPUART8_EdmaDriverState);
4032 }
4033 
LPUART8_EdmaReceive(void * data,uint32_t num)4034 static int32_t LPUART8_EdmaReceive(void *data, uint32_t num)
4035 {
4036     return LPUART_EdmaReceive(data, num, &LPUART8_EdmaDriverState);
4037 }
4038 
LPUART8_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)4039 static int32_t LPUART8_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
4040 {
4041     return LPUART_EdmaTransfer(data_out, data_in, num, &LPUART8_EdmaDriverState);
4042 }
4043 
LPUART8_EdmaGetTxCount(void)4044 static uint32_t LPUART8_EdmaGetTxCount(void)
4045 {
4046     return LPUART_EdmaGetTxCount(&LPUART8_EdmaDriverState);
4047 }
4048 
LPUART8_EdmaGetRxCount(void)4049 static uint32_t LPUART8_EdmaGetRxCount(void)
4050 {
4051     return LPUART_EdmaGetRxCount(&LPUART8_EdmaDriverState);
4052 }
4053 
LPUART8_EdmaControl(uint32_t control,uint32_t arg)4054 static int32_t LPUART8_EdmaControl(uint32_t control, uint32_t arg)
4055 {
4056     return LPUART_EdmaControl(control, arg, &LPUART8_EdmaDriverState);
4057 }
4058 
LPUART8_EdmaGetStatus(void)4059 static ARM_USART_STATUS LPUART8_EdmaGetStatus(void)
4060 {
4061     return LPUART_EdmaGetStatus(&LPUART8_EdmaDriverState);
4062 }
4063 
4064 #endif
4065 
4066 #else
4067 
4068 static lpuart_handle_t LPUART8_Handle;
4069 
4070 #if defined(USART8_RX_BUFFER_ENABLE) && (USART8_RX_BUFFER_ENABLE == 1)
4071 static uint8_t lpuart8_rxRingBuffer[USART_RX_BUFFER_LEN];
4072 #endif
4073 
4074 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
4075 ARMCC_SECTION("lpuart8_non_blocking_driver_state")
4076 static cmsis_lpuart_non_blocking_driver_state_t LPUART8_NonBlockingDriverState = {
4077 #else
4078 static cmsis_lpuart_non_blocking_driver_state_t LPUART8_NonBlockingDriverState = {
4079 #endif
4080     &LPUART8_Resource,
4081     &LPUART8_Handle,
4082 };
4083 
LPUART8_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)4084 static int32_t LPUART8_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)
4085 {
4086 #ifdef RTE_USART8_PIN_INIT
4087     RTE_USART8_PIN_INIT();
4088 #endif
4089     return LPUART_NonBlockingInitialize(cb_event, &LPUART8_NonBlockingDriverState);
4090 }
4091 
LPUART8_NonBlockingUninitialize(void)4092 static int32_t LPUART8_NonBlockingUninitialize(void)
4093 {
4094 #ifdef RTE_USART8_PIN_DEINIT
4095     RTE_USART8_PIN_DEINIT();
4096 #endif
4097     return LPUART_NonBlockingUninitialize(&LPUART8_NonBlockingDriverState);
4098 }
4099 
LPUART8_NonBlockingPowerControl(ARM_POWER_STATE state)4100 static int32_t LPUART8_NonBlockingPowerControl(ARM_POWER_STATE state)
4101 {
4102     int32_t result;
4103 
4104     result = LPUART_NonBlockingPowerControl(state, &LPUART8_NonBlockingDriverState);
4105 
4106 #if defined(USART8_RX_BUFFER_ENABLE) && (USART8_RX_BUFFER_ENABLE == 1)
4107     if ((state == ARM_POWER_FULL) && (LPUART8_NonBlockingDriverState.handle->rxRingBuffer == NULL))
4108     {
4109         LPUART_TransferStartRingBuffer(LPUART8_NonBlockingDriverState.resource->base,
4110                                        LPUART8_NonBlockingDriverState.handle, lpuart8_rxRingBuffer,
4111                                        USART_RX_BUFFER_LEN);
4112     }
4113 #endif
4114 
4115     return result;
4116 }
4117 
LPUART8_NonBlockingSend(const void * data,uint32_t num)4118 static int32_t LPUART8_NonBlockingSend(const void *data, uint32_t num)
4119 {
4120     return LPUART_NonBlockingSend(data, num, &LPUART8_NonBlockingDriverState);
4121 }
4122 
LPUART8_NonBlockingReceive(void * data,uint32_t num)4123 static int32_t LPUART8_NonBlockingReceive(void *data, uint32_t num)
4124 {
4125     return LPUART_NonBlockingReceive(data, num, &LPUART8_NonBlockingDriverState);
4126 }
4127 
LPUART8_NonBlockingTransfer(const void * data_out,void * data_in,uint32_t num)4128 static int32_t LPUART8_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num)
4129 {
4130     return LPUART_NonBlockingTransfer(data_out, data_in, num, &LPUART8_NonBlockingDriverState);
4131 }
4132 
LPUART8_NonBlockingGetTxCount(void)4133 static uint32_t LPUART8_NonBlockingGetTxCount(void)
4134 {
4135     return LPUART_NonBlockingGetTxCount(&LPUART8_NonBlockingDriverState);
4136 }
4137 
LPUART8_NonBlockingGetRxCount(void)4138 static uint32_t LPUART8_NonBlockingGetRxCount(void)
4139 {
4140     return LPUART_NonBlockingGetRxCount(&LPUART8_NonBlockingDriverState);
4141 }
4142 
LPUART8_NonBlockingControl(uint32_t control,uint32_t arg)4143 static int32_t LPUART8_NonBlockingControl(uint32_t control, uint32_t arg)
4144 {
4145     int32_t result;
4146 
4147     result = LPUART_NonBlockingControl(control, arg, &LPUART8_NonBlockingDriverState);
4148     if (ARM_DRIVER_OK != result)
4149     {
4150         return result;
4151     }
4152 
4153     /* Enable the receive interrupts if ring buffer is used */
4154     if (LPUART8_NonBlockingDriverState.handle->rxRingBuffer != NULL)
4155     {
4156         LPUART_EnableInterrupts(
4157             LPUART8_NonBlockingDriverState.resource->base,
4158             (uint32_t)kLPUART_RxDataRegFullInterruptEnable | (uint32_t)kLPUART_RxOverrunInterruptEnable);
4159     }
4160 
4161     return ARM_DRIVER_OK;
4162 }
4163 
LPUART8_NonBlockingGetStatus(void)4164 static ARM_USART_STATUS LPUART8_NonBlockingGetStatus(void)
4165 {
4166     return LPUART_NonBlockingGetStatus(&LPUART8_NonBlockingDriverState);
4167 }
4168 
4169 #endif
4170 
4171 ARM_DRIVER_USART Driver_USART8 = {LPUARTx_GetVersion,      LPUARTx_GetCapabilities,
4172 #if defined(RTE_USART8_DMA_EN) && RTE_USART8_DMA_EN
4173 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
4174                                   LPUART8_EdmaInitialize,  LPUART8_EdmaUninitialize, LPUART8_EdmaPowerControl,
4175                                   LPUART8_EdmaSend,        LPUART8_EdmaReceive,      LPUART8_EdmaTransfer,
4176                                   LPUART8_EdmaGetTxCount,  LPUART8_EdmaGetRxCount,   LPUART8_EdmaControl,
4177                                   LPUART8_EdmaGetStatus,
4178 #else
4179                                   LPUART8_DmaInitialize,   LPUART8_DmaUninitialize, LPUART8_DmaPowerControl,
4180                                   LPUART8_DmaSend,         LPUART8_DmaReceive,      LPUART8_DmaTransfer,
4181                                   LPUART8_DmaGetTxCount,   LPUART8_DmaGetRxCount,   LPUART8_DmaControl,
4182                                   LPUART8_DmaGetStatus,
4183 #endif /* FSL_FEATURE_SOC_EDMA_COUNT */
4184 #else
4185                                   LPUART8_NonBlockingInitialize,
4186                                   LPUART8_NonBlockingUninitialize,
4187                                   LPUART8_NonBlockingPowerControl,
4188                                   LPUART8_NonBlockingSend,
4189                                   LPUART8_NonBlockingReceive,
4190                                   LPUART8_NonBlockingTransfer,
4191                                   LPUART8_NonBlockingGetTxCount,
4192                                   LPUART8_NonBlockingGetRxCount,
4193                                   LPUART8_NonBlockingControl,
4194                                   LPUART8_NonBlockingGetStatus,
4195 #endif /* RTE_USART8_DMA_EN */
4196                                   LPUARTx_SetModemControl, LPUARTx_GetModemStatus};
4197 
4198 #endif /* LPUART8 */
4199 
4200 #if defined(LPUART9) && defined(RTE_USART9) && RTE_USART9
4201 
4202 /* User needs to provide the implementation for LPUART9_GetFreq/InitPins/DeinitPins
4203 in the application for enabling according instance. */
4204 extern uint32_t LPUART9_GetFreq(void);
4205 
4206 static cmsis_lpuart_resource_t LPUART9_Resource = {LPUART9, LPUART9_GetFreq};
4207 
4208 #if defined(RTE_USART9_DMA_EN) && RTE_USART9_DMA_EN
4209 
4210 #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT)
4211 
4212 static cmsis_lpuart_dma_resource_t LPUART9_DmaResource = {
4213     RTE_USART9_DMA_TX_DMA_BASE,    RTE_USART9_DMA_TX_CH,          RTE_USART9_DMA_TX_PERI_SEL,
4214     RTE_USART9_DMA_RX_DMA_BASE,    RTE_USART9_DMA_RX_CH,          RTE_USART9_DMA_RX_PERI_SEL,
4215 
4216 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
4217     RTE_USART9_DMA_TX_DMAMUX_BASE, RTE_USART9_DMA_RX_DMAMUX_BASE,
4218 #endif
4219 #if FSL_FEATURE_DMA_MODULE_CHANNEL != FSL_FEATURE_DMAMUX_MODULE_CHANNEL
4220     RTE_USART9_DMAMUX_TX_CH,       RTE_USART9_DMAMUX_RX_CH
4221 #endif
4222 };
4223 
4224 static lpuart_dma_handle_t LPUART9_DmaHandle;
4225 static dma_handle_t LPUART9_DmaRxHandle;
4226 static dma_handle_t LPUART9_DmaTxHandle;
4227 
4228 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
4229 ARMCC_SECTION("lpuart9_dma_driver_state")
4230 static cmsis_lpuart_dma_driver_state_t LPUART9_DmaDriverState = {
4231 #else
4232 static cmsis_lpuart_dma_driver_state_t LPUART9_DmaDriverState = {
4233 #endif
4234     &LPUART9_Resource, &LPUART9_DmaResource, &LPUART9_DmaHandle, &LPUART9_DmaRxHandle, &LPUART9_DmaTxHandle,
4235 };
4236 
LPUART9_DmaInitialize(ARM_USART_SignalEvent_t cb_event)4237 static int32_t LPUART9_DmaInitialize(ARM_USART_SignalEvent_t cb_event)
4238 {
4239 #ifdef RTE_USART9_PIN_INIT
4240     RTE_USART9_PIN_INIT();
4241 #endif
4242     return LPUART_DmaInitialize(cb_event, &LPUART9_DmaDriverState);
4243 }
4244 
LPUART9_DmaUninitialize(void)4245 static int32_t LPUART9_DmaUninitialize(void)
4246 {
4247 #ifdef RTE_USART9_PIN_DEINIT
4248     RTE_USART9_PIN_DEINIT();
4249 #endif
4250     return LPUART_DmaUninitialize(&LPUART9_DmaDriverState);
4251 }
4252 
LPUART9_DmaPowerControl(ARM_POWER_STATE state)4253 static int32_t LPUART9_DmaPowerControl(ARM_POWER_STATE state)
4254 {
4255     return LPUART_DmaPowerControl(state, &LPUART9_DmaDriverState);
4256 }
4257 
LPUART9_DmaSend(const void * data,uint32_t num)4258 static int32_t LPUART9_DmaSend(const void *data, uint32_t num)
4259 {
4260     return LPUART_DmaSend(data, num, &LPUART9_DmaDriverState);
4261 }
4262 
LPUART9_DmaReceive(void * data,uint32_t num)4263 static int32_t LPUART9_DmaReceive(void *data, uint32_t num)
4264 {
4265     return LPUART_DmaReceive(data, num, &LPUART9_DmaDriverState);
4266 }
4267 
LPUART9_DmaTransfer(const void * data_out,void * data_in,uint32_t num)4268 static int32_t LPUART9_DmaTransfer(const void *data_out, void *data_in, uint32_t num)
4269 {
4270     return LPUART_DmaTransfer(data_out, data_in, num, &LPUART9_DmaDriverState);
4271 }
4272 
LPUART9_DmaGetTxCount(void)4273 static uint32_t LPUART9_DmaGetTxCount(void)
4274 {
4275     return LPUART_DmaGetTxCount(&LPUART9_DmaDriverState);
4276 }
4277 
LPUART9_DmaGetRxCount(void)4278 static uint32_t LPUART9_DmaGetRxCount(void)
4279 {
4280     return LPUART_DmaGetRxCount(&LPUART9_DmaDriverState);
4281 }
4282 
LPUART9_DmaControl(uint32_t control,uint32_t arg)4283 static int32_t LPUART9_DmaControl(uint32_t control, uint32_t arg)
4284 {
4285     return LPUART_DmaControl(control, arg, &LPUART9_DmaDriverState);
4286 }
4287 
LPUART9_DmaGetStatus(void)4288 static ARM_USART_STATUS LPUART9_DmaGetStatus(void)
4289 {
4290     return LPUART_DmaGetStatus(&LPUART9_DmaDriverState);
4291 }
4292 
4293 /* LPUART9 Driver Control Block */
4294 
4295 #endif
4296 
4297 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
4298 
4299 static cmsis_lpuart_edma_resource_t LPUART9_EdmaResource = {
4300     RTE_USART9_DMA_TX_DMA_BASE,    RTE_USART9_DMA_TX_CH,          RTE_USART9_DMA_TX_PERI_SEL,
4301     RTE_USART9_DMA_RX_DMA_BASE,    RTE_USART9_DMA_RX_CH,          RTE_USART9_DMA_RX_PERI_SEL,
4302 
4303 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
4304     RTE_USART9_DMA_TX_DMAMUX_BASE, RTE_USART9_DMA_RX_DMAMUX_BASE,
4305 #endif
4306 };
4307 
4308 static lpuart_edma_handle_t LPUART9_EdmaHandle;
4309 static edma_handle_t LPUART9_EdmaRxHandle;
4310 static edma_handle_t LPUART9_EdmaTxHandle;
4311 
4312 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
4313 ARMCC_SECTION("lpuart9_edma_driver_state")
4314 static cmsis_lpuart_edma_driver_state_t LPUART9_EdmaDriverState = {
4315 #else
4316 static cmsis_lpuart_edma_driver_state_t LPUART9_EdmaDriverState = {
4317 #endif
4318     &LPUART9_Resource, &LPUART9_EdmaResource, &LPUART9_EdmaHandle, &LPUART9_EdmaRxHandle, &LPUART9_EdmaTxHandle,
4319 };
4320 
LPUART9_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)4321 static int32_t LPUART9_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)
4322 {
4323 #ifdef RTE_USART9_PIN_INIT
4324     RTE_USART9_PIN_INIT();
4325 #endif
4326     return LPUART_EdmaInitialize(cb_event, &LPUART9_EdmaDriverState);
4327 }
4328 
LPUART9_EdmaUninitialize(void)4329 static int32_t LPUART9_EdmaUninitialize(void)
4330 {
4331 #ifdef RTE_USART9_PIN_DEINIT
4332     RTE_USART9_PIN_DEINIT();
4333 #endif
4334     return LPUART_EdmaUninitialize(&LPUART9_EdmaDriverState);
4335 }
4336 
LPUART9_EdmaPowerControl(ARM_POWER_STATE state)4337 static int32_t LPUART9_EdmaPowerControl(ARM_POWER_STATE state)
4338 {
4339     return LPUART_EdmaPowerControl(state, &LPUART9_EdmaDriverState);
4340 }
4341 
LPUART9_EdmaSend(const void * data,uint32_t num)4342 static int32_t LPUART9_EdmaSend(const void *data, uint32_t num)
4343 {
4344     return LPUART_EdmaSend(data, num, &LPUART9_EdmaDriverState);
4345 }
4346 
LPUART9_EdmaReceive(void * data,uint32_t num)4347 static int32_t LPUART9_EdmaReceive(void *data, uint32_t num)
4348 {
4349     return LPUART_EdmaReceive(data, num, &LPUART9_EdmaDriverState);
4350 }
4351 
LPUART9_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)4352 static int32_t LPUART9_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
4353 {
4354     return LPUART_EdmaTransfer(data_out, data_in, num, &LPUART9_EdmaDriverState);
4355 }
4356 
LPUART9_EdmaGetTxCount(void)4357 static uint32_t LPUART9_EdmaGetTxCount(void)
4358 {
4359     return LPUART_EdmaGetTxCount(&LPUART9_EdmaDriverState);
4360 }
4361 
LPUART9_EdmaGetRxCount(void)4362 static uint32_t LPUART9_EdmaGetRxCount(void)
4363 {
4364     return LPUART_EdmaGetRxCount(&LPUART9_EdmaDriverState);
4365 }
4366 
LPUART9_EdmaControl(uint32_t control,uint32_t arg)4367 static int32_t LPUART9_EdmaControl(uint32_t control, uint32_t arg)
4368 {
4369     return LPUART_EdmaControl(control, arg, &LPUART9_EdmaDriverState);
4370 }
4371 
LPUART9_EdmaGetStatus(void)4372 static ARM_USART_STATUS LPUART9_EdmaGetStatus(void)
4373 {
4374     return LPUART_EdmaGetStatus(&LPUART9_EdmaDriverState);
4375 }
4376 
4377 #endif
4378 
4379 #else
4380 
4381 static lpuart_handle_t LPUART9_Handle;
4382 
4383 #if defined(USART9_RX_BUFFER_ENABLE) && (USART9_RX_BUFFER_ENABLE == 1)
4384 static uint8_t lpuart9_rxRingBuffer[USART_RX_BUFFER_LEN];
4385 #endif
4386 
4387 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
4388 ARMCC_SECTION("lpuart9_non_blocking_driver_state")
4389 static cmsis_lpuart_non_blocking_driver_state_t LPUART9_NonBlockingDriverState = {
4390 #else
4391 static cmsis_lpuart_non_blocking_driver_state_t LPUART9_NonBlockingDriverState = {
4392 #endif
4393     &LPUART9_Resource,
4394     &LPUART9_Handle,
4395 };
4396 
LPUART9_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)4397 static int32_t LPUART9_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)
4398 {
4399 #ifdef RTE_USART9_PIN_INIT
4400     RTE_USART9_PIN_INIT();
4401 #endif
4402     return LPUART_NonBlockingInitialize(cb_event, &LPUART9_NonBlockingDriverState);
4403 }
4404 
LPUART9_NonBlockingUninitialize(void)4405 static int32_t LPUART9_NonBlockingUninitialize(void)
4406 {
4407 #ifdef RTE_USART9_PIN_DEINIT
4408     RTE_USART9_PIN_DEINIT();
4409 #endif
4410     return LPUART_NonBlockingUninitialize(&LPUART9_NonBlockingDriverState);
4411 }
4412 
LPUART9_NonBlockingPowerControl(ARM_POWER_STATE state)4413 static int32_t LPUART9_NonBlockingPowerControl(ARM_POWER_STATE state)
4414 {
4415     int32_t result;
4416 
4417     result = LPUART_NonBlockingPowerControl(state, &LPUART9_NonBlockingDriverState);
4418 
4419 #if defined(USART9_RX_BUFFER_ENABLE) && (USART9_RX_BUFFER_ENABLE == 1)
4420     if ((state == ARM_POWER_FULL) && (LPUART9_NonBlockingDriverState.handle->rxRingBuffer == NULL))
4421     {
4422         LPUART_TransferStartRingBuffer(LPUART9_NonBlockingDriverState.resource->base,
4423                                        LPUART9_NonBlockingDriverState.handle, lpuart9_rxRingBuffer,
4424                                        USART_RX_BUFFER_LEN);
4425     }
4426 #endif
4427 
4428     return result;
4429 }
4430 
LPUART9_NonBlockingSend(const void * data,uint32_t num)4431 static int32_t LPUART9_NonBlockingSend(const void *data, uint32_t num)
4432 {
4433     return LPUART_NonBlockingSend(data, num, &LPUART9_NonBlockingDriverState);
4434 }
4435 
LPUART9_NonBlockingReceive(void * data,uint32_t num)4436 static int32_t LPUART9_NonBlockingReceive(void *data, uint32_t num)
4437 {
4438     return LPUART_NonBlockingReceive(data, num, &LPUART9_NonBlockingDriverState);
4439 }
4440 
LPUART9_NonBlockingTransfer(const void * data_out,void * data_in,uint32_t num)4441 static int32_t LPUART9_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num)
4442 {
4443     return LPUART_NonBlockingTransfer(data_out, data_in, num, &LPUART9_NonBlockingDriverState);
4444 }
4445 
LPUART9_NonBlockingGetTxCount(void)4446 static uint32_t LPUART9_NonBlockingGetTxCount(void)
4447 {
4448     return LPUART_NonBlockingGetTxCount(&LPUART9_NonBlockingDriverState);
4449 }
4450 
LPUART9_NonBlockingGetRxCount(void)4451 static uint32_t LPUART9_NonBlockingGetRxCount(void)
4452 {
4453     return LPUART_NonBlockingGetRxCount(&LPUART9_NonBlockingDriverState);
4454 }
4455 
LPUART9_NonBlockingControl(uint32_t control,uint32_t arg)4456 static int32_t LPUART9_NonBlockingControl(uint32_t control, uint32_t arg)
4457 {
4458     int32_t result;
4459 
4460     result = LPUART_NonBlockingControl(control, arg, &LPUART9_NonBlockingDriverState);
4461     if (ARM_DRIVER_OK != result)
4462     {
4463         return result;
4464     }
4465 
4466     /* Enable the receive interrupts if ring buffer is used */
4467     if (LPUART9_NonBlockingDriverState.handle->rxRingBuffer != NULL)
4468     {
4469         LPUART_EnableInterrupts(
4470             LPUART9_NonBlockingDriverState.resource->base,
4471             (uint32_t)kLPUART_RxDataRegFullInterruptEnable | (uint32_t)kLPUART_RxOverrunInterruptEnable);
4472     }
4473 
4474     return ARM_DRIVER_OK;
4475 }
4476 
LPUART9_NonBlockingGetStatus(void)4477 static ARM_USART_STATUS LPUART9_NonBlockingGetStatus(void)
4478 {
4479     return LPUART_NonBlockingGetStatus(&LPUART9_NonBlockingDriverState);
4480 }
4481 
4482 #endif
4483 
4484 ARM_DRIVER_USART Driver_USART9 = {LPUARTx_GetVersion,      LPUARTx_GetCapabilities,
4485 #if defined(RTE_USART9_DMA_EN) && RTE_USART9_DMA_EN
4486 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
4487                                   LPUART9_EdmaInitialize,  LPUART9_EdmaUninitialize, LPUART9_EdmaPowerControl,
4488                                   LPUART9_EdmaSend,        LPUART9_EdmaReceive,      LPUART9_EdmaTransfer,
4489                                   LPUART9_EdmaGetTxCount,  LPUART9_EdmaGetRxCount,   LPUART9_EdmaControl,
4490                                   LPUART9_EdmaGetStatus,
4491 #else
4492                                   LPUART9_DmaInitialize,   LPUART9_DmaUninitialize, LPUART9_DmaPowerControl,
4493                                   LPUART9_DmaSend,         LPUART9_DmaReceive,      LPUART9_DmaTransfer,
4494                                   LPUART9_DmaGetTxCount,   LPUART9_DmaGetRxCount,   LPUART9_DmaControl,
4495                                   LPUART9_DmaGetStatus,
4496 #endif /* FSL_FEATURE_SOC_EDMA_COUNT */
4497 #else
4498                                   LPUART9_NonBlockingInitialize,
4499                                   LPUART9_NonBlockingUninitialize,
4500                                   LPUART9_NonBlockingPowerControl,
4501                                   LPUART9_NonBlockingSend,
4502                                   LPUART9_NonBlockingReceive,
4503                                   LPUART9_NonBlockingTransfer,
4504                                   LPUART9_NonBlockingGetTxCount,
4505                                   LPUART9_NonBlockingGetRxCount,
4506                                   LPUART9_NonBlockingControl,
4507                                   LPUART9_NonBlockingGetStatus,
4508 #endif /* RTE_USART9_DMA_EN */
4509                                   LPUARTx_SetModemControl, LPUARTx_GetModemStatus};
4510 
4511 #endif /* LPUART9 */
4512 
4513 #if defined(LPUART10) && defined(RTE_USART10) && RTE_USART10
4514 
4515 /* User needs to provide the implementation for LPUART10_GetFreq/InitPins/DeinitPins
4516 in the application for enabling according instance. */
4517 extern uint32_t LPUART10_GetFreq(void);
4518 
4519 static cmsis_lpuart_resource_t LPUART10_Resource = {LPUART10, LPUART10_GetFreq};
4520 
4521 #if defined(RTE_USART10_DMA_EN) && RTE_USART10_DMA_EN
4522 
4523 #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT)
4524 
4525 static cmsis_lpuart_dma_resource_t LPUART10_DmaResource = {
4526     RTE_USART10_DMA_TX_DMA_BASE,    RTE_USART10_DMA_TX_CH,          RTE_USART10_DMA_TX_PERI_SEL,
4527     RTE_USART10_DMA_RX_DMA_BASE,    RTE_USART10_DMA_RX_CH,          RTE_USART10_DMA_RX_PERI_SEL,
4528 
4529 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
4530     RTE_USART10_DMA_TX_DMAMUX_BASE, RTE_USART10_DMA_RX_DMAMUX_BASE,
4531 #endif
4532 #if FSL_FEATURE_DMA_MODULE_CHANNEL != FSL_FEATURE_DMAMUX_MODULE_CHANNEL
4533     RTE_USART10_DMAMUX_TX_CH,       RTE_USART10_DMAMUX_RX_CH
4534 #endif
4535 };
4536 
4537 static lpuart_dma_handle_t LPUART10_DmaHandle;
4538 static dma_handle_t LPUART10_DmaRxHandle;
4539 static dma_handle_t LPUART10_DmaTxHandle;
4540 
4541 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
4542 ARMCC_SECTION("lpuart10_dma_driver_state")
4543 static cmsis_lpuart_dma_driver_state_t LPUART10_DmaDriverState = {
4544 #else
4545 static cmsis_lpuart_dma_driver_state_t LPUART10_DmaDriverState = {
4546 #endif
4547     &LPUART10_Resource, &LPUART10_DmaResource, &LPUART10_DmaHandle, &LPUART10_DmaRxHandle, &LPUART10_DmaTxHandle,
4548 };
4549 
LPUART10_DmaInitialize(ARM_USART_SignalEvent_t cb_event)4550 static int32_t LPUART10_DmaInitialize(ARM_USART_SignalEvent_t cb_event)
4551 {
4552 #ifdef RTE_USART10_PIN_INIT
4553     RTE_USART10_PIN_INIT();
4554 #endif
4555     return LPUART_DmaInitialize(cb_event, &LPUART10_DmaDriverState);
4556 }
4557 
LPUART10_DmaUninitialize(void)4558 static int32_t LPUART10_DmaUninitialize(void)
4559 {
4560 #ifdef RTE_USART10_PIN_DEINIT
4561     RTE_USART10_PIN_DEINIT();
4562 #endif
4563     return LPUART_DmaUninitialize(&LPUART10_DmaDriverState);
4564 }
4565 
LPUART10_DmaPowerControl(ARM_POWER_STATE state)4566 static int32_t LPUART10_DmaPowerControl(ARM_POWER_STATE state)
4567 {
4568     return LPUART_DmaPowerControl(state, &LPUART10_DmaDriverState);
4569 }
4570 
LPUART10_DmaSend(const void * data,uint32_t num)4571 static int32_t LPUART10_DmaSend(const void *data, uint32_t num)
4572 {
4573     return LPUART_DmaSend(data, num, &LPUART10_DmaDriverState);
4574 }
4575 
LPUART10_DmaReceive(void * data,uint32_t num)4576 static int32_t LPUART10_DmaReceive(void *data, uint32_t num)
4577 {
4578     return LPUART_DmaReceive(data, num, &LPUART10_DmaDriverState);
4579 }
4580 
LPUART10_DmaTransfer(const void * data_out,void * data_in,uint32_t num)4581 static int32_t LPUART10_DmaTransfer(const void *data_out, void *data_in, uint32_t num)
4582 {
4583     return LPUART_DmaTransfer(data_out, data_in, num, &LPUART10_DmaDriverState);
4584 }
4585 
LPUART10_DmaGetTxCount(void)4586 static uint32_t LPUART10_DmaGetTxCount(void)
4587 {
4588     return LPUART_DmaGetTxCount(&LPUART10_DmaDriverState);
4589 }
4590 
LPUART10_DmaGetRxCount(void)4591 static uint32_t LPUART10_DmaGetRxCount(void)
4592 {
4593     return LPUART_DmaGetRxCount(&LPUART10_DmaDriverState);
4594 }
4595 
LPUART10_DmaControl(uint32_t control,uint32_t arg)4596 static int32_t LPUART10_DmaControl(uint32_t control, uint32_t arg)
4597 {
4598     return LPUART_DmaControl(control, arg, &LPUART10_DmaDriverState);
4599 }
4600 
LPUART10_DmaGetStatus(void)4601 static ARM_USART_STATUS LPUART10_DmaGetStatus(void)
4602 {
4603     return LPUART_DmaGetStatus(&LPUART10_DmaDriverState);
4604 }
4605 
4606 /* LPUART10 Driver Control Block */
4607 
4608 #endif
4609 
4610 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
4611 
4612 static cmsis_lpuart_edma_resource_t LPUART10_EdmaResource = {
4613     RTE_USART10_DMA_TX_DMA_BASE,    RTE_USART10_DMA_TX_CH,          RTE_USART10_DMA_TX_PERI_SEL,
4614     RTE_USART10_DMA_RX_DMA_BASE,    RTE_USART10_DMA_RX_CH,          RTE_USART10_DMA_RX_PERI_SEL,
4615 
4616 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
4617     RTE_USART10_DMA_TX_DMAMUX_BASE, RTE_USART10_DMA_RX_DMAMUX_BASE,
4618 #endif
4619 };
4620 
4621 static lpuart_edma_handle_t LPUART10_EdmaHandle;
4622 static edma_handle_t LPUART10_EdmaRxHandle;
4623 static edma_handle_t LPUART10_EdmaTxHandle;
4624 
4625 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
4626 ARMCC_SECTION("lpuart10_edma_driver_state")
4627 static cmsis_lpuart_edma_driver_state_t LPUART10_EdmaDriverState = {
4628 #else
4629 static cmsis_lpuart_edma_driver_state_t LPUART10_EdmaDriverState = {
4630 #endif
4631     &LPUART10_Resource, &LPUART10_EdmaResource, &LPUART10_EdmaHandle, &LPUART10_EdmaRxHandle, &LPUART10_EdmaTxHandle,
4632 };
4633 
LPUART10_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)4634 static int32_t LPUART10_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)
4635 {
4636 #ifdef RTE_USART10_PIN_INIT
4637     RTE_USART10_PIN_INIT();
4638 #endif
4639     return LPUART_EdmaInitialize(cb_event, &LPUART10_EdmaDriverState);
4640 }
4641 
LPUART10_EdmaUninitialize(void)4642 static int32_t LPUART10_EdmaUninitialize(void)
4643 {
4644 #ifdef RTE_USART10_PIN_DEINIT
4645     RTE_USART10_PIN_DEINIT();
4646 #endif
4647     return LPUART_EdmaUninitialize(&LPUART10_EdmaDriverState);
4648 }
4649 
LPUART10_EdmaPowerControl(ARM_POWER_STATE state)4650 static int32_t LPUART10_EdmaPowerControl(ARM_POWER_STATE state)
4651 {
4652     return LPUART_EdmaPowerControl(state, &LPUART10_EdmaDriverState);
4653 }
4654 
LPUART10_EdmaSend(const void * data,uint32_t num)4655 static int32_t LPUART10_EdmaSend(const void *data, uint32_t num)
4656 {
4657     return LPUART_EdmaSend(data, num, &LPUART10_EdmaDriverState);
4658 }
4659 
LPUART10_EdmaReceive(void * data,uint32_t num)4660 static int32_t LPUART10_EdmaReceive(void *data, uint32_t num)
4661 {
4662     return LPUART_EdmaReceive(data, num, &LPUART10_EdmaDriverState);
4663 }
4664 
LPUART10_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)4665 static int32_t LPUART10_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
4666 {
4667     return LPUART_EdmaTransfer(data_out, data_in, num, &LPUART10_EdmaDriverState);
4668 }
4669 
LPUART10_EdmaGetTxCount(void)4670 static uint32_t LPUART10_EdmaGetTxCount(void)
4671 {
4672     return LPUART_EdmaGetTxCount(&LPUART10_EdmaDriverState);
4673 }
4674 
LPUART10_EdmaGetRxCount(void)4675 static uint32_t LPUART10_EdmaGetRxCount(void)
4676 {
4677     return LPUART_EdmaGetRxCount(&LPUART10_EdmaDriverState);
4678 }
4679 
LPUART10_EdmaControl(uint32_t control,uint32_t arg)4680 static int32_t LPUART10_EdmaControl(uint32_t control, uint32_t arg)
4681 {
4682     return LPUART_EdmaControl(control, arg, &LPUART10_EdmaDriverState);
4683 }
4684 
LPUART10_EdmaGetStatus(void)4685 static ARM_USART_STATUS LPUART10_EdmaGetStatus(void)
4686 {
4687     return LPUART_EdmaGetStatus(&LPUART10_EdmaDriverState);
4688 }
4689 
4690 #endif
4691 
4692 #else
4693 
4694 static lpuart_handle_t LPUART10_Handle;
4695 
4696 #if defined(USART10_RX_BUFFER_ENABLE) && (USART10_RX_BUFFER_ENABLE == 1)
4697 static uint8_t lpuart10_rxRingBuffer[USART_RX_BUFFER_LEN];
4698 #endif
4699 
4700 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
4701 ARMCC_SECTION("lpuart10_non_blocking_driver_state")
4702 static cmsis_lpuart_non_blocking_driver_state_t LPUART10_NonBlockingDriverState = {
4703 #else
4704 static cmsis_lpuart_non_blocking_driver_state_t LPUART10_NonBlockingDriverState = {
4705 #endif
4706     &LPUART10_Resource,
4707     &LPUART10_Handle,
4708 };
4709 
LPUART10_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)4710 static int32_t LPUART10_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)
4711 {
4712 #ifdef RTE_USART10_PIN_INIT
4713     RTE_USART10_PIN_INIT();
4714 #endif
4715     return LPUART_NonBlockingInitialize(cb_event, &LPUART10_NonBlockingDriverState);
4716 }
4717 
LPUART10_NonBlockingUninitialize(void)4718 static int32_t LPUART10_NonBlockingUninitialize(void)
4719 {
4720 #ifdef RTE_USART10_PIN_DEINIT
4721     RTE_USART10_PIN_DEINIT();
4722 #endif
4723     return LPUART_NonBlockingUninitialize(&LPUART10_NonBlockingDriverState);
4724 }
4725 
LPUART10_NonBlockingPowerControl(ARM_POWER_STATE state)4726 static int32_t LPUART10_NonBlockingPowerControl(ARM_POWER_STATE state)
4727 {
4728     int32_t result;
4729 
4730     result = LPUART_NonBlockingPowerControl(state, &LPUART10_NonBlockingDriverState);
4731 
4732 #if defined(USART10_RX_BUFFER_ENABLE) && (USART10_RX_BUFFER_ENABLE == 1)
4733     if ((state == ARM_POWER_FULL) && (LPUART10_NonBlockingDriverState.handle->rxRingBuffer == NULL))
4734     {
4735         LPUART_TransferStartRingBuffer(LPUART10_NonBlockingDriverState.resource->base,
4736                                        LPUART10_NonBlockingDriverState.handle, lpuart10_rxRingBuffer,
4737                                        USART_RX_BUFFER_LEN);
4738     }
4739 #endif
4740 
4741     return result;
4742 }
4743 
LPUART10_NonBlockingSend(const void * data,uint32_t num)4744 static int32_t LPUART10_NonBlockingSend(const void *data, uint32_t num)
4745 {
4746     return LPUART_NonBlockingSend(data, num, &LPUART10_NonBlockingDriverState);
4747 }
4748 
LPUART10_NonBlockingReceive(void * data,uint32_t num)4749 static int32_t LPUART10_NonBlockingReceive(void *data, uint32_t num)
4750 {
4751     return LPUART_NonBlockingReceive(data, num, &LPUART10_NonBlockingDriverState);
4752 }
4753 
LPUART10_NonBlockingTransfer(const void * data_out,void * data_in,uint32_t num)4754 static int32_t LPUART10_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num)
4755 {
4756     return LPUART_NonBlockingTransfer(data_out, data_in, num, &LPUART10_NonBlockingDriverState);
4757 }
4758 
LPUART10_NonBlockingGetTxCount(void)4759 static uint32_t LPUART10_NonBlockingGetTxCount(void)
4760 {
4761     return LPUART_NonBlockingGetTxCount(&LPUART10_NonBlockingDriverState);
4762 }
4763 
LPUART10_NonBlockingGetRxCount(void)4764 static uint32_t LPUART10_NonBlockingGetRxCount(void)
4765 {
4766     return LPUART_NonBlockingGetRxCount(&LPUART10_NonBlockingDriverState);
4767 }
4768 
LPUART10_NonBlockingControl(uint32_t control,uint32_t arg)4769 static int32_t LPUART10_NonBlockingControl(uint32_t control, uint32_t arg)
4770 {
4771     int32_t result;
4772 
4773     result = LPUART_NonBlockingControl(control, arg, &LPUART10_NonBlockingDriverState);
4774     if (ARM_DRIVER_OK != result)
4775     {
4776         return result;
4777     }
4778 
4779     /* Enable the receive interrupts if ring buffer is used */
4780     if (LPUART10_NonBlockingDriverState.handle->rxRingBuffer != NULL)
4781     {
4782         LPUART_EnableInterrupts(
4783             LPUART10_NonBlockingDriverState.resource->base,
4784             (uint32_t)kLPUART_RxDataRegFullInterruptEnable | (uint32_t)kLPUART_RxOverrunInterruptEnable);
4785     }
4786 
4787     return ARM_DRIVER_OK;
4788 }
4789 
LPUART10_NonBlockingGetStatus(void)4790 static ARM_USART_STATUS LPUART10_NonBlockingGetStatus(void)
4791 {
4792     return LPUART_NonBlockingGetStatus(&LPUART10_NonBlockingDriverState);
4793 }
4794 
4795 #endif
4796 
4797 ARM_DRIVER_USART Driver_USART10 = {LPUARTx_GetVersion,      LPUARTx_GetCapabilities,
4798 #if defined(RTE_USART10_DMA_EN) && RTE_USART10_DMA_EN
4799 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
4800                                    LPUART10_EdmaInitialize, LPUART10_EdmaUninitialize, LPUART10_EdmaPowerControl,
4801                                    LPUART10_EdmaSend,       LPUART10_EdmaReceive,      LPUART10_EdmaTransfer,
4802                                    LPUART10_EdmaGetTxCount, LPUART10_EdmaGetRxCount,   LPUART10_EdmaControl,
4803                                    LPUART10_EdmaGetStatus,
4804 #else
4805                                    LPUART10_DmaInitialize,  LPUART10_DmaUninitialize, LPUART10_DmaPowerControl,
4806                                    LPUART10_DmaSend,        LPUART10_DmaReceive,      LPUART10_DmaTransfer,
4807                                    LPUART10_DmaGetTxCount,  LPUART10_DmaGetRxCount,   LPUART10_DmaControl,
4808                                    LPUART10_DmaGetStatus,
4809 #endif /* FSL_FEATURE_SOC_EDMA_COUNT */
4810 #else
4811                                   LPUART10_NonBlockingInitialize,
4812                                   LPUART10_NonBlockingUninitialize,
4813                                   LPUART10_NonBlockingPowerControl,
4814                                   LPUART10_NonBlockingSend,
4815                                   LPUART10_NonBlockingReceive,
4816                                   LPUART10_NonBlockingTransfer,
4817                                   LPUART10_NonBlockingGetTxCount,
4818                                   LPUART10_NonBlockingGetRxCount,
4819                                   LPUART10_NonBlockingControl,
4820                                   LPUART10_NonBlockingGetStatus,
4821 #endif /* RTE_USART10_DMA_EN */
4822                                    LPUARTx_SetModemControl, LPUARTx_GetModemStatus};
4823 
4824 #endif /* LPUART10 */
4825 
4826 #if defined(LPUART11) && defined(RTE_USART11) && RTE_USART11
4827 
4828 /* User needs to provide the implementation for LPUART11_GetFreq/InitPins/DeinitPins
4829 in the application for enabling according instance. */
4830 extern uint32_t LPUART11_GetFreq(void);
4831 
4832 static cmsis_lpuart_resource_t LPUART11_Resource = {LPUART11, LPUART11_GetFreq};
4833 
4834 #if defined(RTE_USART11_DMA_EN) && RTE_USART11_DMA_EN
4835 
4836 #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT)
4837 
4838 static cmsis_lpuart_dma_resource_t LPUART11_DmaResource = {
4839     RTE_USART11_DMA_TX_DMA_BASE,    RTE_USART11_DMA_TX_CH,          RTE_USART11_DMA_TX_PERI_SEL,
4840     RTE_USART11_DMA_RX_DMA_BASE,    RTE_USART11_DMA_RX_CH,          RTE_USART11_DMA_RX_PERI_SEL,
4841 
4842 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
4843     RTE_USART11_DMA_TX_DMAMUX_BASE, RTE_USART11_DMA_RX_DMAMUX_BASE,
4844 #endif
4845 #if FSL_FEATURE_DMA_MODULE_CHANNEL != FSL_FEATURE_DMAMUX_MODULE_CHANNEL
4846     RTE_USART11_DMAMUX_TX_CH,       RTE_USART11_DMAMUX_RX_CH
4847 #endif
4848 };
4849 
4850 static lpuart_dma_handle_t LPUART11_DmaHandle;
4851 static dma_handle_t LPUART11_DmaRxHandle;
4852 static dma_handle_t LPUART11_DmaTxHandle;
4853 
4854 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
4855 ARMCC_SECTION("lpuart11_dma_driver_state")
4856 static cmsis_lpuart_dma_driver_state_t LPUART11_DmaDriverState = {
4857 #else
4858 static cmsis_lpuart_dma_driver_state_t LPUART11_DmaDriverState = {
4859 #endif
4860     &LPUART11_Resource, &LPUART11_DmaResource, &LPUART11_DmaHandle, &LPUART11_DmaRxHandle, &LPUART11_DmaTxHandle,
4861 };
4862 
LPUART11_DmaInitialize(ARM_USART_SignalEvent_t cb_event)4863 static int32_t LPUART11_DmaInitialize(ARM_USART_SignalEvent_t cb_event)
4864 {
4865 #ifdef RTE_USART11_PIN_INIT
4866     RTE_USART11_PIN_INIT();
4867 #endif
4868     return LPUART_DmaInitialize(cb_event, &LPUART11_DmaDriverState);
4869 }
4870 
LPUART11_DmaUninitialize(void)4871 static int32_t LPUART11_DmaUninitialize(void)
4872 {
4873 #ifdef RTE_USART11_PIN_DEINIT
4874     RTE_USART11_PIN_DEINIT();
4875 #endif
4876     return LPUART_DmaUninitialize(&LPUART11_DmaDriverState);
4877 }
4878 
LPUART11_DmaPowerControl(ARM_POWER_STATE state)4879 static int32_t LPUART11_DmaPowerControl(ARM_POWER_STATE state)
4880 {
4881     return LPUART_DmaPowerControl(state, &LPUART11_DmaDriverState);
4882 }
4883 
LPUART11_DmaSend(const void * data,uint32_t num)4884 static int32_t LPUART11_DmaSend(const void *data, uint32_t num)
4885 {
4886     return LPUART_DmaSend(data, num, &LPUART11_DmaDriverState);
4887 }
4888 
LPUART11_DmaReceive(void * data,uint32_t num)4889 static int32_t LPUART11_DmaReceive(void *data, uint32_t num)
4890 {
4891     return LPUART_DmaReceive(data, num, &LPUART11_DmaDriverState);
4892 }
4893 
LPUART11_DmaTransfer(const void * data_out,void * data_in,uint32_t num)4894 static int32_t LPUART11_DmaTransfer(const void *data_out, void *data_in, uint32_t num)
4895 {
4896     return LPUART_DmaTransfer(data_out, data_in, num, &LPUART11_DmaDriverState);
4897 }
4898 
LPUART11_DmaGetTxCount(void)4899 static uint32_t LPUART11_DmaGetTxCount(void)
4900 {
4901     return LPUART_DmaGetTxCount(&LPUART11_DmaDriverState);
4902 }
4903 
LPUART11_DmaGetRxCount(void)4904 static uint32_t LPUART11_DmaGetRxCount(void)
4905 {
4906     return LPUART_DmaGetRxCount(&LPUART11_DmaDriverState);
4907 }
4908 
LPUART11_DmaControl(uint32_t control,uint32_t arg)4909 static int32_t LPUART11_DmaControl(uint32_t control, uint32_t arg)
4910 {
4911     return LPUART_DmaControl(control, arg, &LPUART11_DmaDriverState);
4912 }
4913 
LPUART11_DmaGetStatus(void)4914 static ARM_USART_STATUS LPUART11_DmaGetStatus(void)
4915 {
4916     return LPUART_DmaGetStatus(&LPUART11_DmaDriverState);
4917 }
4918 
4919 /* LPUART11 Driver Control Block */
4920 
4921 #endif
4922 
4923 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
4924 
4925 static cmsis_lpuart_edma_resource_t LPUART11_EdmaResource = {
4926     RTE_USART11_DMA_TX_DMA_BASE,    RTE_USART11_DMA_TX_CH,          RTE_USART11_DMA_TX_PERI_SEL,
4927     RTE_USART11_DMA_RX_DMA_BASE,    RTE_USART11_DMA_RX_CH,          RTE_USART11_DMA_RX_PERI_SEL,
4928 
4929 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
4930     RTE_USART11_DMA_TX_DMAMUX_BASE, RTE_USART11_DMA_RX_DMAMUX_BASE,
4931 #endif
4932 };
4933 
4934 static lpuart_edma_handle_t LPUART11_EdmaHandle;
4935 static edma_handle_t LPUART11_EdmaRxHandle;
4936 static edma_handle_t LPUART11_EdmaTxHandle;
4937 
4938 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
4939 ARMCC_SECTION("lpuart11_edma_driver_state")
4940 static cmsis_lpuart_edma_driver_state_t LPUART11_EdmaDriverState = {
4941 #else
4942 static cmsis_lpuart_edma_driver_state_t LPUART11_EdmaDriverState = {
4943 #endif
4944     &LPUART11_Resource, &LPUART11_EdmaResource, &LPUART11_EdmaHandle, &LPUART11_EdmaRxHandle, &LPUART11_EdmaTxHandle,
4945 };
4946 
LPUART11_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)4947 static int32_t LPUART11_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)
4948 {
4949 #ifdef RTE_USART11_PIN_INIT
4950     RTE_USART11_PIN_INIT();
4951 #endif
4952     return LPUART_EdmaInitialize(cb_event, &LPUART11_EdmaDriverState);
4953 }
4954 
LPUART11_EdmaUninitialize(void)4955 static int32_t LPUART11_EdmaUninitialize(void)
4956 {
4957 #ifdef RTE_USART11_PIN_DEINIT
4958     RTE_USART11_PIN_DEINIT();
4959 #endif
4960     return LPUART_EdmaUninitialize(&LPUART11_EdmaDriverState);
4961 }
4962 
LPUART11_EdmaPowerControl(ARM_POWER_STATE state)4963 static int32_t LPUART11_EdmaPowerControl(ARM_POWER_STATE state)
4964 {
4965     return LPUART_EdmaPowerControl(state, &LPUART11_EdmaDriverState);
4966 }
4967 
LPUART11_EdmaSend(const void * data,uint32_t num)4968 static int32_t LPUART11_EdmaSend(const void *data, uint32_t num)
4969 {
4970     return LPUART_EdmaSend(data, num, &LPUART11_EdmaDriverState);
4971 }
4972 
LPUART11_EdmaReceive(void * data,uint32_t num)4973 static int32_t LPUART11_EdmaReceive(void *data, uint32_t num)
4974 {
4975     return LPUART_EdmaReceive(data, num, &LPUART11_EdmaDriverState);
4976 }
4977 
LPUART11_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)4978 static int32_t LPUART11_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
4979 {
4980     return LPUART_EdmaTransfer(data_out, data_in, num, &LPUART11_EdmaDriverState);
4981 }
4982 
LPUART11_EdmaGetTxCount(void)4983 static uint32_t LPUART11_EdmaGetTxCount(void)
4984 {
4985     return LPUART_EdmaGetTxCount(&LPUART11_EdmaDriverState);
4986 }
4987 
LPUART11_EdmaGetRxCount(void)4988 static uint32_t LPUART11_EdmaGetRxCount(void)
4989 {
4990     return LPUART_EdmaGetRxCount(&LPUART11_EdmaDriverState);
4991 }
4992 
LPUART11_EdmaControl(uint32_t control,uint32_t arg)4993 static int32_t LPUART11_EdmaControl(uint32_t control, uint32_t arg)
4994 {
4995     return LPUART_EdmaControl(control, arg, &LPUART11_EdmaDriverState);
4996 }
4997 
LPUART11_EdmaGetStatus(void)4998 static ARM_USART_STATUS LPUART11_EdmaGetStatus(void)
4999 {
5000     return LPUART_EdmaGetStatus(&LPUART11_EdmaDriverState);
5001 }
5002 
5003 #endif
5004 
5005 #else
5006 
5007 static lpuart_handle_t LPUART11_Handle;
5008 
5009 #if defined(USART11_RX_BUFFER_ENABLE) && (USART11_RX_BUFFER_ENABLE == 1)
5010 static uint8_t lpuart11_rxRingBuffer[USART_RX_BUFFER_LEN];
5011 #endif
5012 
5013 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
5014 ARMCC_SECTION("lpuart11_non_blocking_driver_state")
5015 static cmsis_lpuart_non_blocking_driver_state_t LPUART11_NonBlockingDriverState = {
5016 #else
5017 static cmsis_lpuart_non_blocking_driver_state_t LPUART11_NonBlockingDriverState = {
5018 #endif
5019     &LPUART11_Resource,
5020     &LPUART11_Handle,
5021 };
5022 
LPUART11_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)5023 static int32_t LPUART11_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)
5024 {
5025 #ifdef RTE_USART11_PIN_INIT
5026     RTE_USART11_PIN_INIT();
5027 #endif
5028     return LPUART_NonBlockingInitialize(cb_event, &LPUART11_NonBlockingDriverState);
5029 }
5030 
LPUART11_NonBlockingUninitialize(void)5031 static int32_t LPUART11_NonBlockingUninitialize(void)
5032 {
5033 #ifdef RTE_USART11_PIN_DEINIT
5034     RTE_USART11_PIN_DEINIT();
5035 #endif
5036     return LPUART_NonBlockingUninitialize(&LPUART11_NonBlockingDriverState);
5037 }
5038 
LPUART11_NonBlockingPowerControl(ARM_POWER_STATE state)5039 static int32_t LPUART11_NonBlockingPowerControl(ARM_POWER_STATE state)
5040 {
5041     int32_t result;
5042 
5043     result = LPUART_NonBlockingPowerControl(state, &LPUART11_NonBlockingDriverState);
5044 
5045 #if defined(USART11_RX_BUFFER_ENABLE) && (USART11_RX_BUFFER_ENABLE == 1)
5046     if ((state == ARM_POWER_FULL) && (LPUART11_NonBlockingDriverState.handle->rxRingBuffer == NULL))
5047     {
5048         LPUART_TransferStartRingBuffer(LPUART11_NonBlockingDriverState.resource->base,
5049                                        LPUART11_NonBlockingDriverState.handle, lpuart11_rxRingBuffer,
5050                                        USART_RX_BUFFER_LEN);
5051     }
5052 #endif
5053 
5054     return result;
5055 }
5056 
LPUART11_NonBlockingSend(const void * data,uint32_t num)5057 static int32_t LPUART11_NonBlockingSend(const void *data, uint32_t num)
5058 {
5059     return LPUART_NonBlockingSend(data, num, &LPUART11_NonBlockingDriverState);
5060 }
5061 
LPUART11_NonBlockingReceive(void * data,uint32_t num)5062 static int32_t LPUART11_NonBlockingReceive(void *data, uint32_t num)
5063 {
5064     return LPUART_NonBlockingReceive(data, num, &LPUART11_NonBlockingDriverState);
5065 }
5066 
LPUART11_NonBlockingTransfer(const void * data_out,void * data_in,uint32_t num)5067 static int32_t LPUART11_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num)
5068 {
5069     return LPUART_NonBlockingTransfer(data_out, data_in, num, &LPUART11_NonBlockingDriverState);
5070 }
5071 
LPUART11_NonBlockingGetTxCount(void)5072 static uint32_t LPUART11_NonBlockingGetTxCount(void)
5073 {
5074     return LPUART_NonBlockingGetTxCount(&LPUART11_NonBlockingDriverState);
5075 }
5076 
LPUART11_NonBlockingGetRxCount(void)5077 static uint32_t LPUART11_NonBlockingGetRxCount(void)
5078 {
5079     return LPUART_NonBlockingGetRxCount(&LPUART11_NonBlockingDriverState);
5080 }
5081 
LPUART11_NonBlockingControl(uint32_t control,uint32_t arg)5082 static int32_t LPUART11_NonBlockingControl(uint32_t control, uint32_t arg)
5083 {
5084     int32_t result;
5085 
5086     result = LPUART_NonBlockingControl(control, arg, &LPUART11_NonBlockingDriverState);
5087     if (ARM_DRIVER_OK != result)
5088     {
5089         return result;
5090     }
5091 
5092     /* Enable the receive interrupts if ring buffer is used */
5093     if (LPUART11_NonBlockingDriverState.handle->rxRingBuffer != NULL)
5094     {
5095         LPUART_EnableInterrupts(
5096             LPUART11_NonBlockingDriverState.resource->base,
5097             (uint32_t)kLPUART_RxDataRegFullInterruptEnable | (uint32_t)kLPUART_RxOverrunInterruptEnable);
5098     }
5099 
5100     return ARM_DRIVER_OK;
5101 }
5102 
LPUART11_NonBlockingGetStatus(void)5103 static ARM_USART_STATUS LPUART11_NonBlockingGetStatus(void)
5104 {
5105     return LPUART_NonBlockingGetStatus(&LPUART11_NonBlockingDriverState);
5106 }
5107 
5108 #endif
5109 
5110 ARM_DRIVER_USART Driver_USART11 = {LPUARTx_GetVersion,      LPUARTx_GetCapabilities,
5111 #if defined(RTE_USART11_DMA_EN) && RTE_USART11_DMA_EN
5112 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
5113                                    LPUART11_EdmaInitialize, LPUART11_EdmaUninitialize, LPUART11_EdmaPowerControl,
5114                                    LPUART11_EdmaSend,       LPUART11_EdmaReceive,      LPUART11_EdmaTransfer,
5115                                    LPUART11_EdmaGetTxCount, LPUART11_EdmaGetRxCount,   LPUART11_EdmaControl,
5116                                    LPUART11_EdmaGetStatus,
5117 #else
5118                                    LPUART11_DmaInitialize,  LPUART11_DmaUninitialize, LPUART11_DmaPowerControl,
5119                                    LPUART11_DmaSend,        LPUART11_DmaReceive,      LPUART11_DmaTransfer,
5120                                    LPUART11_DmaGetTxCount,  LPUART11_DmaGetRxCount,   LPUART11_DmaControl,
5121                                    LPUART11_DmaGetStatus,
5122 #endif /* FSL_FEATURE_SOC_EDMA_COUNT */
5123 #else
5124                                   LPUART11_NonBlockingInitialize,
5125                                   LPUART11_NonBlockingUninitialize,
5126                                   LPUART11_NonBlockingPowerControl,
5127                                   LPUART11_NonBlockingSend,
5128                                   LPUART11_NonBlockingReceive,
5129                                   LPUART11_NonBlockingTransfer,
5130                                   LPUART11_NonBlockingGetTxCount,
5131                                   LPUART11_NonBlockingGetRxCount,
5132                                   LPUART11_NonBlockingControl,
5133                                   LPUART11_NonBlockingGetStatus,
5134 #endif /* RTE_USART11_DMA_EN */
5135                                    LPUARTx_SetModemControl, LPUARTx_GetModemStatus};
5136 
5137 #endif /* LPUART11 */
5138 
5139 #if defined(LPUART12) && defined(RTE_USART12) && RTE_USART12
5140 
5141 /* User needs to provide the implementation for LPUART12_GetFreq/InitPins/DeinitPins
5142 in the application for enabling according instance. */
5143 extern uint32_t LPUART12_GetFreq(void);
5144 
5145 static cmsis_lpuart_resource_t LPUART12_Resource = {LPUART12, LPUART12_GetFreq};
5146 
5147 #if defined(RTE_USART12_DMA_EN) && RTE_USART12_DMA_EN
5148 
5149 #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT)
5150 
5151 static cmsis_lpuart_dma_resource_t LPUART12_DmaResource = {
5152     RTE_USART12_DMA_TX_DMA_BASE,    RTE_USART12_DMA_TX_CH,          RTE_USART12_DMA_TX_PERI_SEL,
5153     RTE_USART12_DMA_RX_DMA_BASE,    RTE_USART12_DMA_RX_CH,          RTE_USART12_DMA_RX_PERI_SEL,
5154 
5155 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
5156     RTE_USART12_DMA_TX_DMAMUX_BASE, RTE_USART12_DMA_RX_DMAMUX_BASE,
5157 #endif
5158 #if FSL_FEATURE_DMA_MODULE_CHANNEL != FSL_FEATURE_DMAMUX_MODULE_CHANNEL
5159     RTE_USART12_DMAMUX_TX_CH,       RTE_USART12_DMAMUX_RX_CH
5160 #endif
5161 };
5162 
5163 static lpuart_dma_handle_t LPUART12_DmaHandle;
5164 static dma_handle_t LPUART12_DmaRxHandle;
5165 static dma_handle_t LPUART12_DmaTxHandle;
5166 
5167 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
5168 ARMCC_SECTION("lpuart12_dma_driver_state")
5169 static cmsis_lpuart_dma_driver_state_t LPUART12_DmaDriverState = {
5170 #else
5171 static cmsis_lpuart_dma_driver_state_t LPUART12_DmaDriverState = {
5172 #endif
5173     &LPUART12_Resource, &LPUART12_DmaResource, &LPUART12_DmaHandle, &LPUART12_DmaRxHandle, &LPUART12_DmaTxHandle,
5174 };
5175 
LPUART12_DmaInitialize(ARM_USART_SignalEvent_t cb_event)5176 static int32_t LPUART12_DmaInitialize(ARM_USART_SignalEvent_t cb_event)
5177 {
5178 #ifdef RTE_USART12_PIN_INIT
5179     RTE_USART12_PIN_INIT();
5180 #endif
5181     return LPUART_DmaInitialize(cb_event, &LPUART12_DmaDriverState);
5182 }
5183 
LPUART12_DmaUninitialize(void)5184 static int32_t LPUART12_DmaUninitialize(void)
5185 {
5186 #ifdef RTE_USART12_PIN_DEINIT
5187     RTE_USART12_PIN_DEINIT();
5188 #endif
5189     return LPUART_DmaUninitialize(&LPUART12_DmaDriverState);
5190 }
5191 
LPUART12_DmaPowerControl(ARM_POWER_STATE state)5192 static int32_t LPUART12_DmaPowerControl(ARM_POWER_STATE state)
5193 {
5194     return LPUART_DmaPowerControl(state, &LPUART12_DmaDriverState);
5195 }
5196 
LPUART12_DmaSend(const void * data,uint32_t num)5197 static int32_t LPUART12_DmaSend(const void *data, uint32_t num)
5198 {
5199     return LPUART_DmaSend(data, num, &LPUART12_DmaDriverState);
5200 }
5201 
LPUART12_DmaReceive(void * data,uint32_t num)5202 static int32_t LPUART12_DmaReceive(void *data, uint32_t num)
5203 {
5204     return LPUART_DmaReceive(data, num, &LPUART12_DmaDriverState);
5205 }
5206 
LPUART12_DmaTransfer(const void * data_out,void * data_in,uint32_t num)5207 static int32_t LPUART12_DmaTransfer(const void *data_out, void *data_in, uint32_t num)
5208 {
5209     return LPUART_DmaTransfer(data_out, data_in, num, &LPUART12_DmaDriverState);
5210 }
5211 
LPUART12_DmaGetTxCount(void)5212 static uint32_t LPUART12_DmaGetTxCount(void)
5213 {
5214     return LPUART_DmaGetTxCount(&LPUART12_DmaDriverState);
5215 }
5216 
LPUART12_DmaGetRxCount(void)5217 static uint32_t LPUART12_DmaGetRxCount(void)
5218 {
5219     return LPUART_DmaGetRxCount(&LPUART12_DmaDriverState);
5220 }
5221 
LPUART12_DmaControl(uint32_t control,uint32_t arg)5222 static int32_t LPUART12_DmaControl(uint32_t control, uint32_t arg)
5223 {
5224     return LPUART_DmaControl(control, arg, &LPUART12_DmaDriverState);
5225 }
5226 
LPUART12_DmaGetStatus(void)5227 static ARM_USART_STATUS LPUART12_DmaGetStatus(void)
5228 {
5229     return LPUART_DmaGetStatus(&LPUART12_DmaDriverState);
5230 }
5231 
5232 /* LPUART12 Driver Control Block */
5233 
5234 #endif
5235 
5236 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
5237 
5238 static cmsis_lpuart_edma_resource_t LPUART12_EdmaResource = {
5239     RTE_USART12_DMA_TX_DMA_BASE,    RTE_USART12_DMA_TX_CH,          RTE_USART12_DMA_TX_PERI_SEL,
5240     RTE_USART12_DMA_RX_DMA_BASE,    RTE_USART12_DMA_RX_CH,          RTE_USART12_DMA_RX_PERI_SEL,
5241 
5242 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
5243     RTE_USART12_DMA_TX_DMAMUX_BASE, RTE_USART12_DMA_RX_DMAMUX_BASE,
5244 #endif
5245 };
5246 
5247 static lpuart_edma_handle_t LPUART12_EdmaHandle;
5248 static edma_handle_t LPUART12_EdmaRxHandle;
5249 static edma_handle_t LPUART12_EdmaTxHandle;
5250 
5251 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
5252 ARMCC_SECTION("lpuart12_edma_driver_state")
5253 static cmsis_lpuart_edma_driver_state_t LPUART12_EdmaDriverState = {
5254 #else
5255 static cmsis_lpuart_edma_driver_state_t LPUART12_EdmaDriverState = {
5256 #endif
5257     &LPUART12_Resource, &LPUART12_EdmaResource, &LPUART12_EdmaHandle, &LPUART12_EdmaRxHandle, &LPUART12_EdmaTxHandle,
5258 };
5259 
LPUART12_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)5260 static int32_t LPUART12_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)
5261 {
5262 #ifdef RTE_USART12_PIN_INIT
5263     RTE_USART12_PIN_INIT();
5264 #endif
5265     return LPUART_EdmaInitialize(cb_event, &LPUART12_EdmaDriverState);
5266 }
5267 
LPUART12_EdmaUninitialize(void)5268 static int32_t LPUART12_EdmaUninitialize(void)
5269 {
5270 #ifdef RTE_USART12_PIN_DEINIT
5271     RTE_USART12_PIN_DEINIT();
5272 #endif
5273     return LPUART_EdmaUninitialize(&LPUART12_EdmaDriverState);
5274 }
5275 
LPUART12_EdmaPowerControl(ARM_POWER_STATE state)5276 static int32_t LPUART12_EdmaPowerControl(ARM_POWER_STATE state)
5277 {
5278     return LPUART_EdmaPowerControl(state, &LPUART12_EdmaDriverState);
5279 }
5280 
LPUART12_EdmaSend(const void * data,uint32_t num)5281 static int32_t LPUART12_EdmaSend(const void *data, uint32_t num)
5282 {
5283     return LPUART_EdmaSend(data, num, &LPUART12_EdmaDriverState);
5284 }
5285 
LPUART12_EdmaReceive(void * data,uint32_t num)5286 static int32_t LPUART12_EdmaReceive(void *data, uint32_t num)
5287 {
5288     return LPUART_EdmaReceive(data, num, &LPUART12_EdmaDriverState);
5289 }
5290 
LPUART12_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)5291 static int32_t LPUART12_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
5292 {
5293     return LPUART_EdmaTransfer(data_out, data_in, num, &LPUART12_EdmaDriverState);
5294 }
5295 
LPUART12_EdmaGetTxCount(void)5296 static uint32_t LPUART12_EdmaGetTxCount(void)
5297 {
5298     return LPUART_EdmaGetTxCount(&LPUART12_EdmaDriverState);
5299 }
5300 
LPUART12_EdmaGetRxCount(void)5301 static uint32_t LPUART12_EdmaGetRxCount(void)
5302 {
5303     return LPUART_EdmaGetRxCount(&LPUART12_EdmaDriverState);
5304 }
5305 
LPUART12_EdmaControl(uint32_t control,uint32_t arg)5306 static int32_t LPUART12_EdmaControl(uint32_t control, uint32_t arg)
5307 {
5308     return LPUART_EdmaControl(control, arg, &LPUART12_EdmaDriverState);
5309 }
5310 
LPUART12_EdmaGetStatus(void)5311 static ARM_USART_STATUS LPUART12_EdmaGetStatus(void)
5312 {
5313     return LPUART_EdmaGetStatus(&LPUART12_EdmaDriverState);
5314 }
5315 
5316 #endif
5317 
5318 #else
5319 
5320 static lpuart_handle_t LPUART12_Handle;
5321 
5322 #if defined(USART12_RX_BUFFER_ENABLE) && (USART12_RX_BUFFER_ENABLE == 1)
5323 static uint8_t lpuart12_rxRingBuffer[USART_RX_BUFFER_LEN];
5324 #endif
5325 
5326 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
5327 ARMCC_SECTION("lpuart12_non_blocking_driver_state")
5328 static cmsis_lpuart_non_blocking_driver_state_t LPUART12_NonBlockingDriverState = {
5329 #else
5330 static cmsis_lpuart_non_blocking_driver_state_t LPUART12_NonBlockingDriverState = {
5331 #endif
5332     &LPUART12_Resource,
5333     &LPUART12_Handle,
5334 };
5335 
LPUART12_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)5336 static int32_t LPUART12_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)
5337 {
5338 #ifdef RTE_USART12_PIN_INIT
5339     RTE_USART12_PIN_INIT();
5340 #endif
5341     return LPUART_NonBlockingInitialize(cb_event, &LPUART12_NonBlockingDriverState);
5342 }
5343 
LPUART12_NonBlockingUninitialize(void)5344 static int32_t LPUART12_NonBlockingUninitialize(void)
5345 {
5346 #ifdef RTE_USART12_PIN_DEINIT
5347     RTE_USART12_PIN_DEINIT();
5348 #endif
5349     return LPUART_NonBlockingUninitialize(&LPUART12_NonBlockingDriverState);
5350 }
5351 
LPUART12_NonBlockingPowerControl(ARM_POWER_STATE state)5352 static int32_t LPUART12_NonBlockingPowerControl(ARM_POWER_STATE state)
5353 {
5354     int32_t result;
5355 
5356     result = LPUART_NonBlockingPowerControl(state, &LPUART12_NonBlockingDriverState);
5357 
5358 #if defined(USART12_RX_BUFFER_ENABLE) && (USART12_RX_BUFFER_ENABLE == 1)
5359     if ((state == ARM_POWER_FULL) && (LPUART12_NonBlockingDriverState.handle->rxRingBuffer == NULL))
5360     {
5361         LPUART_TransferStartRingBuffer(LPUART12_NonBlockingDriverState.resource->base,
5362                                        LPUART12_NonBlockingDriverState.handle, lpuart12_rxRingBuffer,
5363                                        USART_RX_BUFFER_LEN);
5364     }
5365 #endif
5366 
5367     return result;
5368 }
5369 
LPUART12_NonBlockingSend(const void * data,uint32_t num)5370 static int32_t LPUART12_NonBlockingSend(const void *data, uint32_t num)
5371 {
5372     return LPUART_NonBlockingSend(data, num, &LPUART12_NonBlockingDriverState);
5373 }
5374 
LPUART12_NonBlockingReceive(void * data,uint32_t num)5375 static int32_t LPUART12_NonBlockingReceive(void *data, uint32_t num)
5376 {
5377     return LPUART_NonBlockingReceive(data, num, &LPUART12_NonBlockingDriverState);
5378 }
5379 
LPUART12_NonBlockingTransfer(const void * data_out,void * data_in,uint32_t num)5380 static int32_t LPUART12_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num)
5381 {
5382     return LPUART_NonBlockingTransfer(data_out, data_in, num, &LPUART12_NonBlockingDriverState);
5383 }
5384 
LPUART12_NonBlockingGetTxCount(void)5385 static uint32_t LPUART12_NonBlockingGetTxCount(void)
5386 {
5387     return LPUART_NonBlockingGetTxCount(&LPUART12_NonBlockingDriverState);
5388 }
5389 
LPUART12_NonBlockingGetRxCount(void)5390 static uint32_t LPUART12_NonBlockingGetRxCount(void)
5391 {
5392     return LPUART_NonBlockingGetRxCount(&LPUART12_NonBlockingDriverState);
5393 }
5394 
LPUART12_NonBlockingControl(uint32_t control,uint32_t arg)5395 static int32_t LPUART12_NonBlockingControl(uint32_t control, uint32_t arg)
5396 {
5397     int32_t result;
5398 
5399     result = LPUART_NonBlockingControl(control, arg, &LPUART12_NonBlockingDriverState);
5400     if (ARM_DRIVER_OK != result)
5401     {
5402         return result;
5403     }
5404 
5405     /* Enable the receive interrupts if ring buffer is used */
5406     if (LPUART12_NonBlockingDriverState.handle->rxRingBuffer != NULL)
5407     {
5408         LPUART_EnableInterrupts(
5409             LPUART12_NonBlockingDriverState.resource->base,
5410             (uint32_t)kLPUART_RxDataRegFullInterruptEnable | (uint32_t)kLPUART_RxOverrunInterruptEnable);
5411     }
5412 
5413     return ARM_DRIVER_OK;
5414 }
5415 
LPUART12_NonBlockingGetStatus(void)5416 static ARM_USART_STATUS LPUART12_NonBlockingGetStatus(void)
5417 {
5418     return LPUART_NonBlockingGetStatus(&LPUART12_NonBlockingDriverState);
5419 }
5420 
5421 #endif
5422 
5423 ARM_DRIVER_USART Driver_USART12 = {LPUARTx_GetVersion,      LPUARTx_GetCapabilities,
5424 #if defined(RTE_USART12_DMA_EN) && RTE_USART12_DMA_EN
5425 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
5426                                    LPUART12_EdmaInitialize, LPUART12_EdmaUninitialize, LPUART12_EdmaPowerControl,
5427                                    LPUART12_EdmaSend,       LPUART12_EdmaReceive,      LPUART12_EdmaTransfer,
5428                                    LPUART12_EdmaGetTxCount, LPUART12_EdmaGetRxCount,   LPUART12_EdmaControl,
5429                                    LPUART12_EdmaGetStatus,
5430 #else
5431                                    LPUART12_DmaInitialize,  LPUART12_DmaUninitialize, LPUART12_DmaPowerControl,
5432                                    LPUART12_DmaSend,        LPUART12_DmaReceive,      LPUART12_DmaTransfer,
5433                                    LPUART12_DmaGetTxCount,  LPUART12_DmaGetRxCount,   LPUART12_DmaControl,
5434                                    LPUART12_DmaGetStatus,
5435 #endif /* FSL_FEATURE_SOC_EDMA_COUNT */
5436 #else
5437                                   LPUART12_NonBlockingInitialize,
5438                                   LPUART12_NonBlockingUninitialize,
5439                                   LPUART12_NonBlockingPowerControl,
5440                                   LPUART12_NonBlockingSend,
5441                                   LPUART12_NonBlockingReceive,
5442                                   LPUART12_NonBlockingTransfer,
5443                                   LPUART12_NonBlockingGetTxCount,
5444                                   LPUART12_NonBlockingGetRxCount,
5445                                   LPUART12_NonBlockingControl,
5446                                   LPUART12_NonBlockingGetStatus,
5447 #endif /* RTE_USART12_DMA_EN */
5448                                    LPUARTx_SetModemControl, LPUARTx_GetModemStatus};
5449 
5450 #endif /* LPUART12 */
5451 
5452 #if defined(LPUART13) && defined(RTE_USART13) && RTE_USART13
5453 
5454 /* User needs to provide the implementation for LPUART13_GetFreq/InitPins/DeinitPins
5455 in the application for enabling according instance. */
5456 extern uint32_t LPUART13_GetFreq(void);
5457 
5458 static cmsis_lpuart_resource_t LPUART13_Resource = {LPUART13, LPUART13_GetFreq};
5459 
5460 #if defined(RTE_USART13_DMA_EN) && RTE_USART13_DMA_EN
5461 
5462 #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT)
5463 
5464 static cmsis_lpuart_dma_resource_t LPUART13_DmaResource = {
5465     RTE_USART13_DMA_TX_DMA_BASE,    RTE_USART13_DMA_TX_CH,          RTE_USART13_DMA_TX_PERI_SEL,
5466     RTE_USART13_DMA_RX_DMA_BASE,    RTE_USART13_DMA_RX_CH,          RTE_USART13_DMA_RX_PERI_SEL,
5467 
5468 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
5469     RTE_USART13_DMA_TX_DMAMUX_BASE, RTE_USART13_DMA_RX_DMAMUX_BASE,
5470 #endif
5471 #if FSL_FEATURE_DMA_MODULE_CHANNEL != FSL_FEATURE_DMAMUX_MODULE_CHANNEL
5472     RTE_USART13_DMAMUX_TX_CH,       RTE_USART13_DMAMUX_RX_CH
5473 #endif
5474 };
5475 
5476 static lpuart_dma_handle_t LPUART13_DmaHandle;
5477 static dma_handle_t LPUART13_DmaRxHandle;
5478 static dma_handle_t LPUART13_DmaTxHandle;
5479 
5480 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
5481 ARMCC_SECTION("lpuart13_dma_driver_state")
5482 static cmsis_lpuart_dma_driver_state_t LPUART13_DmaDriverState = {
5483 #else
5484 static cmsis_lpuart_dma_driver_state_t LPUART13_DmaDriverState = {
5485 #endif
5486     &LPUART13_Resource, &LPUART13_DmaResource, &LPUART13_DmaHandle, &LPUART13_DmaRxHandle, &LPUART13_DmaTxHandle,
5487 };
5488 
LPUART13_DmaInitialize(ARM_USART_SignalEvent_t cb_event)5489 static int32_t LPUART13_DmaInitialize(ARM_USART_SignalEvent_t cb_event)
5490 {
5491 #ifdef RTE_USART13_PIN_INIT
5492     RTE_USART13_PIN_INIT();
5493 #endif
5494     return LPUART_DmaInitialize(cb_event, &LPUART13_DmaDriverState);
5495 }
5496 
LPUART13_DmaUninitialize(void)5497 static int32_t LPUART13_DmaUninitialize(void)
5498 {
5499 #ifdef RTE_USART13_PIN_DEINIT
5500     RTE_USART13_PIN_DEINIT();
5501 #endif
5502     return LPUART_DmaUninitialize(&LPUART13_DmaDriverState);
5503 }
5504 
LPUART13_DmaPowerControl(ARM_POWER_STATE state)5505 static int32_t LPUART13_DmaPowerControl(ARM_POWER_STATE state)
5506 {
5507     return LPUART_DmaPowerControl(state, &LPUART13_DmaDriverState);
5508 }
5509 
LPUART13_DmaSend(const void * data,uint32_t num)5510 static int32_t LPUART13_DmaSend(const void *data, uint32_t num)
5511 {
5512     return LPUART_DmaSend(data, num, &LPUART13_DmaDriverState);
5513 }
5514 
LPUART13_DmaReceive(void * data,uint32_t num)5515 static int32_t LPUART13_DmaReceive(void *data, uint32_t num)
5516 {
5517     return LPUART_DmaReceive(data, num, &LPUART13_DmaDriverState);
5518 }
5519 
LPUART13_DmaTransfer(const void * data_out,void * data_in,uint32_t num)5520 static int32_t LPUART13_DmaTransfer(const void *data_out, void *data_in, uint32_t num)
5521 {
5522     return LPUART_DmaTransfer(data_out, data_in, num, &LPUART13_DmaDriverState);
5523 }
5524 
LPUART13_DmaGetTxCount(void)5525 static uint32_t LPUART13_DmaGetTxCount(void)
5526 {
5527     return LPUART_DmaGetTxCount(&LPUART13_DmaDriverState);
5528 }
5529 
LPUART13_DmaGetRxCount(void)5530 static uint32_t LPUART13_DmaGetRxCount(void)
5531 {
5532     return LPUART_DmaGetRxCount(&LPUART13_DmaDriverState);
5533 }
5534 
LPUART13_DmaControl(uint32_t control,uint32_t arg)5535 static int32_t LPUART13_DmaControl(uint32_t control, uint32_t arg)
5536 {
5537     return LPUART_DmaControl(control, arg, &LPUART13_DmaDriverState);
5538 }
5539 
LPUART13_DmaGetStatus(void)5540 static ARM_USART_STATUS LPUART13_DmaGetStatus(void)
5541 {
5542     return LPUART_DmaGetStatus(&LPUART13_DmaDriverState);
5543 }
5544 
5545 /* LPUART13 Driver Control Block */
5546 
5547 #endif
5548 
5549 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
5550 
5551 static cmsis_lpuart_edma_resource_t LPUART13_EdmaResource = {
5552     RTE_USART13_DMA_TX_DMA_BASE,    RTE_USART13_DMA_TX_CH,          RTE_USART13_DMA_TX_PERI_SEL,
5553     RTE_USART13_DMA_RX_DMA_BASE,    RTE_USART13_DMA_RX_CH,          RTE_USART13_DMA_RX_PERI_SEL,
5554 
5555 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
5556     RTE_USART13_DMA_TX_DMAMUX_BASE, RTE_USART13_DMA_RX_DMAMUX_BASE,
5557 #endif
5558 };
5559 
5560 static lpuart_edma_handle_t LPUART13_EdmaHandle;
5561 static edma_handle_t LPUART13_EdmaRxHandle;
5562 static edma_handle_t LPUART13_EdmaTxHandle;
5563 
5564 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
5565 ARMCC_SECTION("lpuart13_edma_driver_state")
5566 static cmsis_lpuart_edma_driver_state_t LPUART13_EdmaDriverState = {
5567 #else
5568 static cmsis_lpuart_edma_driver_state_t LPUART13_EdmaDriverState = {
5569 #endif
5570     &LPUART13_Resource, &LPUART13_EdmaResource, &LPUART13_EdmaHandle, &LPUART13_EdmaRxHandle, &LPUART13_EdmaTxHandle,
5571 };
5572 
LPUART13_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)5573 static int32_t LPUART13_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)
5574 {
5575 #ifdef RTE_USART13_PIN_INIT
5576     RTE_USART13_PIN_INIT();
5577 #endif
5578     return LPUART_EdmaInitialize(cb_event, &LPUART13_EdmaDriverState);
5579 }
5580 
LPUART13_EdmaUninitialize(void)5581 static int32_t LPUART13_EdmaUninitialize(void)
5582 {
5583 #ifdef RTE_USART13_PIN_DEINIT
5584     RTE_USART13_PIN_DEINIT();
5585 #endif
5586     return LPUART_EdmaUninitialize(&LPUART13_EdmaDriverState);
5587 }
5588 
LPUART13_EdmaPowerControl(ARM_POWER_STATE state)5589 static int32_t LPUART13_EdmaPowerControl(ARM_POWER_STATE state)
5590 {
5591     return LPUART_EdmaPowerControl(state, &LPUART13_EdmaDriverState);
5592 }
5593 
LPUART13_EdmaSend(const void * data,uint32_t num)5594 static int32_t LPUART13_EdmaSend(const void *data, uint32_t num)
5595 {
5596     return LPUART_EdmaSend(data, num, &LPUART13_EdmaDriverState);
5597 }
5598 
LPUART13_EdmaReceive(void * data,uint32_t num)5599 static int32_t LPUART13_EdmaReceive(void *data, uint32_t num)
5600 {
5601     return LPUART_EdmaReceive(data, num, &LPUART13_EdmaDriverState);
5602 }
5603 
LPUART13_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)5604 static int32_t LPUART13_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
5605 {
5606     return LPUART_EdmaTransfer(data_out, data_in, num, &LPUART13_EdmaDriverState);
5607 }
5608 
LPUART13_EdmaGetTxCount(void)5609 static uint32_t LPUART13_EdmaGetTxCount(void)
5610 {
5611     return LPUART_EdmaGetTxCount(&LPUART13_EdmaDriverState);
5612 }
5613 
LPUART13_EdmaGetRxCount(void)5614 static uint32_t LPUART13_EdmaGetRxCount(void)
5615 {
5616     return LPUART_EdmaGetRxCount(&LPUART13_EdmaDriverState);
5617 }
5618 
LPUART13_EdmaControl(uint32_t control,uint32_t arg)5619 static int32_t LPUART13_EdmaControl(uint32_t control, uint32_t arg)
5620 {
5621     return LPUART_EdmaControl(control, arg, &LPUART13_EdmaDriverState);
5622 }
5623 
LPUART13_EdmaGetStatus(void)5624 static ARM_USART_STATUS LPUART13_EdmaGetStatus(void)
5625 {
5626     return LPUART_EdmaGetStatus(&LPUART13_EdmaDriverState);
5627 }
5628 
5629 #endif
5630 
5631 #else
5632 
5633 static lpuart_handle_t LPUART13_Handle;
5634 
5635 #if defined(USART13_RX_BUFFER_ENABLE) && (USART13_RX_BUFFER_ENABLE == 1)
5636 static uint8_t lpuart13_rxRingBuffer[USART_RX_BUFFER_LEN];
5637 #endif
5638 
5639 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
5640 ARMCC_SECTION("lpuart13_non_blocking_driver_state")
5641 static cmsis_lpuart_non_blocking_driver_state_t LPUART13_NonBlockingDriverState = {
5642 #else
5643 static cmsis_lpuart_non_blocking_driver_state_t LPUART13_NonBlockingDriverState = {
5644 #endif
5645     &LPUART13_Resource,
5646     &LPUART13_Handle,
5647 };
5648 
LPUART13_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)5649 static int32_t LPUART13_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)
5650 {
5651 #ifdef RTE_USART13_PIN_INIT
5652     RTE_USART13_PIN_INIT();
5653 #endif
5654     return LPUART_NonBlockingInitialize(cb_event, &LPUART13_NonBlockingDriverState);
5655 }
5656 
LPUART13_NonBlockingUninitialize(void)5657 static int32_t LPUART13_NonBlockingUninitialize(void)
5658 {
5659 #ifdef RTE_USART13_PIN_DEINIT
5660     RTE_USART13_PIN_DEINIT();
5661 #endif
5662     return LPUART_NonBlockingUninitialize(&LPUART13_NonBlockingDriverState);
5663 }
5664 
LPUART13_NonBlockingPowerControl(ARM_POWER_STATE state)5665 static int32_t LPUART13_NonBlockingPowerControl(ARM_POWER_STATE state)
5666 {
5667     int32_t result;
5668 
5669     result = LPUART_NonBlockingPowerControl(state, &LPUART13_NonBlockingDriverState);
5670 
5671 #if defined(USART13_RX_BUFFER_ENABLE) && (USART13_RX_BUFFER_ENABLE == 1)
5672     if ((state == ARM_POWER_FULL) && (LPUART13_NonBlockingDriverState.handle->rxRingBuffer == NULL))
5673     {
5674         LPUART_TransferStartRingBuffer(LPUART13_NonBlockingDriverState.resource->base,
5675                                        LPUART13_NonBlockingDriverState.handle, lpuart13_rxRingBuffer,
5676                                        USART_RX_BUFFER_LEN);
5677     }
5678 #endif
5679 
5680     return result;
5681 }
5682 
LPUART13_NonBlockingSend(const void * data,uint32_t num)5683 static int32_t LPUART13_NonBlockingSend(const void *data, uint32_t num)
5684 {
5685     return LPUART_NonBlockingSend(data, num, &LPUART13_NonBlockingDriverState);
5686 }
5687 
LPUART13_NonBlockingReceive(void * data,uint32_t num)5688 static int32_t LPUART13_NonBlockingReceive(void *data, uint32_t num)
5689 {
5690     return LPUART_NonBlockingReceive(data, num, &LPUART13_NonBlockingDriverState);
5691 }
5692 
LPUART13_NonBlockingTransfer(const void * data_out,void * data_in,uint32_t num)5693 static int32_t LPUART13_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num)
5694 {
5695     return LPUART_NonBlockingTransfer(data_out, data_in, num, &LPUART13_NonBlockingDriverState);
5696 }
5697 
LPUART13_NonBlockingGetTxCount(void)5698 static uint32_t LPUART13_NonBlockingGetTxCount(void)
5699 {
5700     return LPUART_NonBlockingGetTxCount(&LPUART13_NonBlockingDriverState);
5701 }
5702 
LPUART13_NonBlockingGetRxCount(void)5703 static uint32_t LPUART13_NonBlockingGetRxCount(void)
5704 {
5705     return LPUART_NonBlockingGetRxCount(&LPUART13_NonBlockingDriverState);
5706 }
5707 
LPUART13_NonBlockingControl(uint32_t control,uint32_t arg)5708 static int32_t LPUART13_NonBlockingControl(uint32_t control, uint32_t arg)
5709 {
5710     int32_t result;
5711 
5712     result = LPUART_NonBlockingControl(control, arg, &LPUART13_NonBlockingDriverState);
5713     if (ARM_DRIVER_OK != result)
5714     {
5715         return result;
5716     }
5717 
5718     /* Enable the receive interrupts if ring buffer is used */
5719     if (LPUART13_NonBlockingDriverState.handle->rxRingBuffer != NULL)
5720     {
5721         LPUART_EnableInterrupts(
5722             LPUART13_NonBlockingDriverState.resource->base,
5723             (uint32_t)kLPUART_RxDataRegFullInterruptEnable | (uint32_t)kLPUART_RxOverrunInterruptEnable);
5724     }
5725 
5726     return ARM_DRIVER_OK;
5727 }
5728 
LPUART13_NonBlockingGetStatus(void)5729 static ARM_USART_STATUS LPUART13_NonBlockingGetStatus(void)
5730 {
5731     return LPUART_NonBlockingGetStatus(&LPUART13_NonBlockingDriverState);
5732 }
5733 
5734 #endif
5735 
5736 ARM_DRIVER_USART Driver_USART13 = {LPUARTx_GetVersion,      LPUARTx_GetCapabilities,
5737 #if defined(RTE_USART13_DMA_EN) && RTE_USART13_DMA_EN
5738 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
5739                                    LPUART13_EdmaInitialize, LPUART13_EdmaUninitialize, LPUART13_EdmaPowerControl,
5740                                    LPUART13_EdmaSend,       LPUART13_EdmaReceive,      LPUART13_EdmaTransfer,
5741                                    LPUART13_EdmaGetTxCount, LPUART13_EdmaGetRxCount,   LPUART13_EdmaControl,
5742                                    LPUART13_EdmaGetStatus,
5743 #else
5744                                    LPUART13_DmaInitialize,  LPUART13_DmaUninitialize, LPUART13_DmaPowerControl,
5745                                    LPUART13_DmaSend,        LPUART13_DmaReceive,      LPUART13_DmaTransfer,
5746                                    LPUART13_DmaGetTxCount,  LPUART13_DmaGetRxCount,   LPUART13_DmaControl,
5747                                    LPUART13_DmaGetStatus,
5748 #endif /* FSL_FEATURE_SOC_EDMA_COUNT */
5749 #else
5750                                   LPUART13_NonBlockingInitialize,
5751                                   LPUART13_NonBlockingUninitialize,
5752                                   LPUART13_NonBlockingPowerControl,
5753                                   LPUART13_NonBlockingSend,
5754                                   LPUART13_NonBlockingReceive,
5755                                   LPUART13_NonBlockingTransfer,
5756                                   LPUART13_NonBlockingGetTxCount,
5757                                   LPUART13_NonBlockingGetRxCount,
5758                                   LPUART13_NonBlockingControl,
5759                                   LPUART13_NonBlockingGetStatus,
5760 #endif /* RTE_USART13_DMA_EN */
5761                                    LPUARTx_SetModemControl, LPUARTx_GetModemStatus};
5762 
5763 #endif /* LPUART13 */
5764 
5765 #if defined(LPUART14) && defined(RTE_USART14) && RTE_USART14
5766 
5767 /* User needs to provide the implementation for LPUART14_GetFreq/InitPins/DeinitPins
5768 in the application for enabling according instance. */
5769 extern uint32_t LPUART14_GetFreq(void);
5770 
5771 static cmsis_lpuart_resource_t LPUART14_Resource = {LPUART14, LPUART14_GetFreq};
5772 
5773 #if defined(RTE_USART14_DMA_EN) && RTE_USART14_DMA_EN
5774 
5775 #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT)
5776 
5777 static cmsis_lpuart_dma_resource_t LPUART14_DmaResource = {
5778     RTE_USART14_DMA_TX_DMA_BASE,    RTE_USART14_DMA_TX_CH,          RTE_USART14_DMA_TX_PERI_SEL,
5779     RTE_USART14_DMA_RX_DMA_BASE,    RTE_USART14_DMA_RX_CH,          RTE_USART14_DMA_RX_PERI_SEL,
5780 
5781 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
5782     RTE_USART14_DMA_TX_DMAMUX_BASE, RTE_USART14_DMA_RX_DMAMUX_BASE,
5783 #endif
5784 #if FSL_FEATURE_DMA_MODULE_CHANNEL != FSL_FEATURE_DMAMUX_MODULE_CHANNEL
5785     RTE_USART14_DMAMUX_TX_CH,       RTE_USART14_DMAMUX_RX_CH
5786 #endif
5787 };
5788 
5789 static lpuart_dma_handle_t LPUART14_DmaHandle;
5790 static dma_handle_t LPUART14_DmaRxHandle;
5791 static dma_handle_t LPUART14_DmaTxHandle;
5792 
5793 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
5794 ARMCC_SECTION("lpuart14_dma_driver_state")
5795 static cmsis_lpuart_dma_driver_state_t LPUART14_DmaDriverState = {
5796 #else
5797 static cmsis_lpuart_dma_driver_state_t LPUART14_DmaDriverState = {
5798 #endif
5799     &LPUART14_Resource, &LPUART14_DmaResource, &LPUART14_DmaHandle, &LPUART14_DmaRxHandle, &LPUART14_DmaTxHandle,
5800 };
5801 
LPUART14_DmaInitialize(ARM_USART_SignalEvent_t cb_event)5802 static int32_t LPUART14_DmaInitialize(ARM_USART_SignalEvent_t cb_event)
5803 {
5804 #ifdef RTE_USART14_PIN_INIT
5805     RTE_USART14_PIN_INIT();
5806 #endif
5807     return LPUART_DmaInitialize(cb_event, &LPUART14_DmaDriverState);
5808 }
5809 
LPUART14_DmaUninitialize(void)5810 static int32_t LPUART14_DmaUninitialize(void)
5811 {
5812 #ifdef RTE_USART14_PIN_DEINIT
5813     RTE_USART14_PIN_DEINIT();
5814 #endif
5815     return LPUART_DmaUninitialize(&LPUART14_DmaDriverState);
5816 }
5817 
LPUART14_DmaPowerControl(ARM_POWER_STATE state)5818 static int32_t LPUART14_DmaPowerControl(ARM_POWER_STATE state)
5819 {
5820     return LPUART_DmaPowerControl(state, &LPUART14_DmaDriverState);
5821 }
5822 
LPUART14_DmaSend(const void * data,uint32_t num)5823 static int32_t LPUART14_DmaSend(const void *data, uint32_t num)
5824 {
5825     return LPUART_DmaSend(data, num, &LPUART14_DmaDriverState);
5826 }
5827 
LPUART14_DmaReceive(void * data,uint32_t num)5828 static int32_t LPUART14_DmaReceive(void *data, uint32_t num)
5829 {
5830     return LPUART_DmaReceive(data, num, &LPUART14_DmaDriverState);
5831 }
5832 
LPUART14_DmaTransfer(const void * data_out,void * data_in,uint32_t num)5833 static int32_t LPUART14_DmaTransfer(const void *data_out, void *data_in, uint32_t num)
5834 {
5835     return LPUART_DmaTransfer(data_out, data_in, num, &LPUART14_DmaDriverState);
5836 }
5837 
LPUART14_DmaGetTxCount(void)5838 static uint32_t LPUART14_DmaGetTxCount(void)
5839 {
5840     return LPUART_DmaGetTxCount(&LPUART14_DmaDriverState);
5841 }
5842 
LPUART14_DmaGetRxCount(void)5843 static uint32_t LPUART14_DmaGetRxCount(void)
5844 {
5845     return LPUART_DmaGetRxCount(&LPUART14_DmaDriverState);
5846 }
5847 
LPUART14_DmaControl(uint32_t control,uint32_t arg)5848 static int32_t LPUART14_DmaControl(uint32_t control, uint32_t arg)
5849 {
5850     return LPUART_DmaControl(control, arg, &LPUART14_DmaDriverState);
5851 }
5852 
LPUART14_DmaGetStatus(void)5853 static ARM_USART_STATUS LPUART14_DmaGetStatus(void)
5854 {
5855     return LPUART_DmaGetStatus(&LPUART14_DmaDriverState);
5856 }
5857 
5858 /* LPUART14 Driver Control Block */
5859 
5860 #endif
5861 
5862 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
5863 
5864 static cmsis_lpuart_edma_resource_t LPUART14_EdmaResource = {
5865     RTE_USART14_DMA_TX_DMA_BASE,    RTE_USART14_DMA_TX_CH,          RTE_USART14_DMA_TX_PERI_SEL,
5866     RTE_USART14_DMA_RX_DMA_BASE,    RTE_USART14_DMA_RX_CH,          RTE_USART14_DMA_RX_PERI_SEL,
5867 
5868 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
5869     RTE_USART14_DMA_TX_DMAMUX_BASE, RTE_USART14_DMA_RX_DMAMUX_BASE,
5870 #endif
5871 };
5872 
5873 static lpuart_edma_handle_t LPUART14_EdmaHandle;
5874 static edma_handle_t LPUART14_EdmaRxHandle;
5875 static edma_handle_t LPUART14_EdmaTxHandle;
5876 
5877 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
5878 ARMCC_SECTION("lpuart14_edma_driver_state")
5879 static cmsis_lpuart_edma_driver_state_t LPUART14_EdmaDriverState = {
5880 #else
5881 static cmsis_lpuart_edma_driver_state_t LPUART14_EdmaDriverState = {
5882 #endif
5883     &LPUART14_Resource, &LPUART14_EdmaResource, &LPUART14_EdmaHandle, &LPUART14_EdmaRxHandle, &LPUART14_EdmaTxHandle,
5884 };
5885 
LPUART14_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)5886 static int32_t LPUART14_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)
5887 {
5888 #ifdef RTE_USART14_PIN_INIT
5889     RTE_USART14_PIN_INIT();
5890 #endif
5891     return LPUART_EdmaInitialize(cb_event, &LPUART14_EdmaDriverState);
5892 }
5893 
LPUART14_EdmaUninitialize(void)5894 static int32_t LPUART14_EdmaUninitialize(void)
5895 {
5896 #ifdef RTE_USART14_PIN_DEINIT
5897     RTE_USART14_PIN_DEINIT();
5898 #endif
5899     return LPUART_EdmaUninitialize(&LPUART14_EdmaDriverState);
5900 }
5901 
LPUART14_EdmaPowerControl(ARM_POWER_STATE state)5902 static int32_t LPUART14_EdmaPowerControl(ARM_POWER_STATE state)
5903 {
5904     return LPUART_EdmaPowerControl(state, &LPUART14_EdmaDriverState);
5905 }
5906 
LPUART14_EdmaSend(const void * data,uint32_t num)5907 static int32_t LPUART14_EdmaSend(const void *data, uint32_t num)
5908 {
5909     return LPUART_EdmaSend(data, num, &LPUART14_EdmaDriverState);
5910 }
5911 
LPUART14_EdmaReceive(void * data,uint32_t num)5912 static int32_t LPUART14_EdmaReceive(void *data, uint32_t num)
5913 {
5914     return LPUART_EdmaReceive(data, num, &LPUART14_EdmaDriverState);
5915 }
5916 
LPUART14_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)5917 static int32_t LPUART14_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
5918 {
5919     return LPUART_EdmaTransfer(data_out, data_in, num, &LPUART14_EdmaDriverState);
5920 }
5921 
LPUART14_EdmaGetTxCount(void)5922 static uint32_t LPUART14_EdmaGetTxCount(void)
5923 {
5924     return LPUART_EdmaGetTxCount(&LPUART14_EdmaDriverState);
5925 }
5926 
LPUART14_EdmaGetRxCount(void)5927 static uint32_t LPUART14_EdmaGetRxCount(void)
5928 {
5929     return LPUART_EdmaGetRxCount(&LPUART14_EdmaDriverState);
5930 }
5931 
LPUART14_EdmaControl(uint32_t control,uint32_t arg)5932 static int32_t LPUART14_EdmaControl(uint32_t control, uint32_t arg)
5933 {
5934     return LPUART_EdmaControl(control, arg, &LPUART14_EdmaDriverState);
5935 }
5936 
LPUART14_EdmaGetStatus(void)5937 static ARM_USART_STATUS LPUART14_EdmaGetStatus(void)
5938 {
5939     return LPUART_EdmaGetStatus(&LPUART14_EdmaDriverState);
5940 }
5941 
5942 #endif
5943 
5944 #else
5945 
5946 static lpuart_handle_t LPUART14_Handle;
5947 
5948 #if defined(USART14_RX_BUFFER_ENABLE) && (USART14_RX_BUFFER_ENABLE == 1)
5949 static uint8_t lpuart14_rxRingBuffer[USART_RX_BUFFER_LEN];
5950 #endif
5951 
5952 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
5953 ARMCC_SECTION("lpuart14_non_blocking_driver_state")
5954 static cmsis_lpuart_non_blocking_driver_state_t LPUART14_NonBlockingDriverState = {
5955 #else
5956 static cmsis_lpuart_non_blocking_driver_state_t LPUART14_NonBlockingDriverState = {
5957 #endif
5958     &LPUART14_Resource,
5959     &LPUART14_Handle,
5960 };
5961 
LPUART14_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)5962 static int32_t LPUART14_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)
5963 {
5964 #ifdef RTE_USART14_PIN_INIT
5965     RTE_USART14_PIN_INIT();
5966 #endif
5967     return LPUART_NonBlockingInitialize(cb_event, &LPUART14_NonBlockingDriverState);
5968 }
5969 
LPUART14_NonBlockingUninitialize(void)5970 static int32_t LPUART14_NonBlockingUninitialize(void)
5971 {
5972 #ifdef RTE_USART14_PIN_DEINIT
5973     RTE_USART14_PIN_DEINIT();
5974 #endif
5975     return LPUART_NonBlockingUninitialize(&LPUART14_NonBlockingDriverState);
5976 }
5977 
LPUART14_NonBlockingPowerControl(ARM_POWER_STATE state)5978 static int32_t LPUART14_NonBlockingPowerControl(ARM_POWER_STATE state)
5979 {
5980     int32_t result;
5981 
5982     result = LPUART_NonBlockingPowerControl(state, &LPUART14_NonBlockingDriverState);
5983 
5984 #if defined(USART14_RX_BUFFER_ENABLE) && (USART14_RX_BUFFER_ENABLE == 1)
5985     if ((state == ARM_POWER_FULL) && (LPUART14_NonBlockingDriverState.handle->rxRingBuffer == NULL))
5986     {
5987         LPUART_TransferStartRingBuffer(LPUART14_NonBlockingDriverState.resource->base,
5988                                        LPUART14_NonBlockingDriverState.handle, lpuart14_rxRingBuffer,
5989                                        USART_RX_BUFFER_LEN);
5990     }
5991 #endif
5992 
5993     return result;
5994 }
5995 
LPUART14_NonBlockingSend(const void * data,uint32_t num)5996 static int32_t LPUART14_NonBlockingSend(const void *data, uint32_t num)
5997 {
5998     return LPUART_NonBlockingSend(data, num, &LPUART14_NonBlockingDriverState);
5999 }
6000 
LPUART14_NonBlockingReceive(void * data,uint32_t num)6001 static int32_t LPUART14_NonBlockingReceive(void *data, uint32_t num)
6002 {
6003     return LPUART_NonBlockingReceive(data, num, &LPUART14_NonBlockingDriverState);
6004 }
6005 
LPUART14_NonBlockingTransfer(const void * data_out,void * data_in,uint32_t num)6006 static int32_t LPUART14_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num)
6007 {
6008     return LPUART_NonBlockingTransfer(data_out, data_in, num, &LPUART14_NonBlockingDriverState);
6009 }
6010 
LPUART14_NonBlockingGetTxCount(void)6011 static uint32_t LPUART14_NonBlockingGetTxCount(void)
6012 {
6013     return LPUART_NonBlockingGetTxCount(&LPUART14_NonBlockingDriverState);
6014 }
6015 
LPUART14_NonBlockingGetRxCount(void)6016 static uint32_t LPUART14_NonBlockingGetRxCount(void)
6017 {
6018     return LPUART_NonBlockingGetRxCount(&LPUART14_NonBlockingDriverState);
6019 }
6020 
LPUART14_NonBlockingControl(uint32_t control,uint32_t arg)6021 static int32_t LPUART14_NonBlockingControl(uint32_t control, uint32_t arg)
6022 {
6023     int32_t result;
6024 
6025     result = LPUART_NonBlockingControl(control, arg, &LPUART14_NonBlockingDriverState);
6026     if (ARM_DRIVER_OK != result)
6027     {
6028         return result;
6029     }
6030 
6031     /* Enable the receive interrupts if ring buffer is used */
6032     if (LPUART14_NonBlockingDriverState.handle->rxRingBuffer != NULL)
6033     {
6034         LPUART_EnableInterrupts(
6035             LPUART14_NonBlockingDriverState.resource->base,
6036             (uint32_t)kLPUART_RxDataRegFullInterruptEnable | (uint32_t)kLPUART_RxOverrunInterruptEnable);
6037     }
6038 
6039     return ARM_DRIVER_OK;
6040 }
6041 
LPUART14_NonBlockingGetStatus(void)6042 static ARM_USART_STATUS LPUART14_NonBlockingGetStatus(void)
6043 {
6044     return LPUART_NonBlockingGetStatus(&LPUART14_NonBlockingDriverState);
6045 }
6046 
6047 #endif
6048 
6049 ARM_DRIVER_USART Driver_USART14 = {LPUARTx_GetVersion,      LPUARTx_GetCapabilities,
6050 #if defined(RTE_USART14_DMA_EN) && RTE_USART14_DMA_EN
6051 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
6052                                    LPUART14_EdmaInitialize, LPUART14_EdmaUninitialize, LPUART14_EdmaPowerControl,
6053                                    LPUART14_EdmaSend,       LPUART14_EdmaReceive,      LPUART14_EdmaTransfer,
6054                                    LPUART14_EdmaGetTxCount, LPUART14_EdmaGetRxCount,   LPUART14_EdmaControl,
6055                                    LPUART14_EdmaGetStatus,
6056 #else
6057                                    LPUART14_DmaInitialize,  LPUART14_DmaUninitialize, LPUART14_DmaPowerControl,
6058                                    LPUART14_DmaSend,        LPUART14_DmaReceive,      LPUART14_DmaTransfer,
6059                                    LPUART14_DmaGetTxCount,  LPUART14_DmaGetRxCount,   LPUART14_DmaControl,
6060                                    LPUART14_DmaGetStatus,
6061 #endif /* FSL_FEATURE_SOC_EDMA_COUNT */
6062 #else
6063                                   LPUART14_NonBlockingInitialize,
6064                                   LPUART14_NonBlockingUninitialize,
6065                                   LPUART14_NonBlockingPowerControl,
6066                                   LPUART14_NonBlockingSend,
6067                                   LPUART14_NonBlockingReceive,
6068                                   LPUART14_NonBlockingTransfer,
6069                                   LPUART14_NonBlockingGetTxCount,
6070                                   LPUART14_NonBlockingGetRxCount,
6071                                   LPUART14_NonBlockingControl,
6072                                   LPUART14_NonBlockingGetStatus,
6073 #endif /* RTE_USART14_DMA_EN */
6074                                    LPUARTx_SetModemControl, LPUARTx_GetModemStatus};
6075 
6076 #endif /* LPUART14 */
6077 
6078 #if defined(LPUART15) && defined(RTE_USART15) && RTE_USART15
6079 
6080 /* User needs to provide the implementation for LPUART15_GetFreq/InitPins/DeinitPins
6081 in the application for enabling according instance. */
6082 extern uint32_t LPUART15_GetFreq(void);
6083 
6084 static cmsis_lpuart_resource_t LPUART15_Resource = {LPUART15, LPUART15_GetFreq};
6085 
6086 #if defined(RTE_USART15_DMA_EN) && RTE_USART15_DMA_EN
6087 
6088 #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT)
6089 
6090 static cmsis_lpuart_dma_resource_t LPUART15_DmaResource = {
6091     RTE_USART15_DMA_TX_DMA_BASE,    RTE_USART15_DMA_TX_CH,          RTE_USART15_DMA_TX_PERI_SEL,
6092     RTE_USART15_DMA_RX_DMA_BASE,    RTE_USART15_DMA_RX_CH,          RTE_USART15_DMA_RX_PERI_SEL,
6093 
6094 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
6095     RTE_USART15_DMA_TX_DMAMUX_BASE, RTE_USART15_DMA_RX_DMAMUX_BASE,
6096 #endif
6097 #if FSL_FEATURE_DMA_MODULE_CHANNEL != FSL_FEATURE_DMAMUX_MODULE_CHANNEL
6098     RTE_USART15_DMAMUX_TX_CH,       RTE_USART15_DMAMUX_RX_CH
6099 #endif
6100 };
6101 
6102 static lpuart_dma_handle_t LPUART15_DmaHandle;
6103 static dma_handle_t LPUART15_DmaRxHandle;
6104 static dma_handle_t LPUART15_DmaTxHandle;
6105 
6106 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
6107 ARMCC_SECTION("lpuart15_dma_driver_state")
6108 static cmsis_lpuart_dma_driver_state_t LPUART15_DmaDriverState = {
6109 #else
6110 static cmsis_lpuart_dma_driver_state_t LPUART15_DmaDriverState = {
6111 #endif
6112     &LPUART15_Resource, &LPUART15_DmaResource, &LPUART15_DmaHandle, &LPUART15_DmaRxHandle, &LPUART15_DmaTxHandle,
6113 };
6114 
LPUART15_DmaInitialize(ARM_USART_SignalEvent_t cb_event)6115 static int32_t LPUART15_DmaInitialize(ARM_USART_SignalEvent_t cb_event)
6116 {
6117 #ifdef RTE_USART15_PIN_INIT
6118     RTE_USART15_PIN_INIT();
6119 #endif
6120     return LPUART_DmaInitialize(cb_event, &LPUART15_DmaDriverState);
6121 }
6122 
LPUART15_DmaUninitialize(void)6123 static int32_t LPUART15_DmaUninitialize(void)
6124 {
6125 #ifdef RTE_USART15_PIN_DEINIT
6126     RTE_USART15_PIN_DEINIT();
6127 #endif
6128     return LPUART_DmaUninitialize(&LPUART15_DmaDriverState);
6129 }
6130 
LPUART15_DmaPowerControl(ARM_POWER_STATE state)6131 static int32_t LPUART15_DmaPowerControl(ARM_POWER_STATE state)
6132 {
6133     return LPUART_DmaPowerControl(state, &LPUART15_DmaDriverState);
6134 }
6135 
LPUART15_DmaSend(const void * data,uint32_t num)6136 static int32_t LPUART15_DmaSend(const void *data, uint32_t num)
6137 {
6138     return LPUART_DmaSend(data, num, &LPUART15_DmaDriverState);
6139 }
6140 
LPUART15_DmaReceive(void * data,uint32_t num)6141 static int32_t LPUART15_DmaReceive(void *data, uint32_t num)
6142 {
6143     return LPUART_DmaReceive(data, num, &LPUART15_DmaDriverState);
6144 }
6145 
LPUART15_DmaTransfer(const void * data_out,void * data_in,uint32_t num)6146 static int32_t LPUART15_DmaTransfer(const void *data_out, void *data_in, uint32_t num)
6147 {
6148     return LPUART_DmaTransfer(data_out, data_in, num, &LPUART15_DmaDriverState);
6149 }
6150 
LPUART15_DmaGetTxCount(void)6151 static uint32_t LPUART15_DmaGetTxCount(void)
6152 {
6153     return LPUART_DmaGetTxCount(&LPUART15_DmaDriverState);
6154 }
6155 
LPUART15_DmaGetRxCount(void)6156 static uint32_t LPUART15_DmaGetRxCount(void)
6157 {
6158     return LPUART_DmaGetRxCount(&LPUART15_DmaDriverState);
6159 }
6160 
LPUART15_DmaControl(uint32_t control,uint32_t arg)6161 static int32_t LPUART15_DmaControl(uint32_t control, uint32_t arg)
6162 {
6163     return LPUART_DmaControl(control, arg, &LPUART15_DmaDriverState);
6164 }
6165 
LPUART15_DmaGetStatus(void)6166 static ARM_USART_STATUS LPUART15_DmaGetStatus(void)
6167 {
6168     return LPUART_DmaGetStatus(&LPUART15_DmaDriverState);
6169 }
6170 
6171 /* LPUART15 Driver Control Block */
6172 
6173 #endif
6174 
6175 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
6176 
6177 static cmsis_lpuart_edma_resource_t LPUART15_EdmaResource = {
6178     RTE_USART15_DMA_TX_DMA_BASE,    RTE_USART15_DMA_TX_CH,          RTE_USART15_DMA_TX_PERI_SEL,
6179     RTE_USART15_DMA_RX_DMA_BASE,    RTE_USART15_DMA_RX_CH,          RTE_USART15_DMA_RX_PERI_SEL,
6180 
6181 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
6182     RTE_USART15_DMA_TX_DMAMUX_BASE, RTE_USART15_DMA_RX_DMAMUX_BASE,
6183 #endif
6184 };
6185 
6186 static lpuart_edma_handle_t LPUART15_EdmaHandle;
6187 static edma_handle_t LPUART15_EdmaRxHandle;
6188 static edma_handle_t LPUART15_EdmaTxHandle;
6189 
6190 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
6191 ARMCC_SECTION("lpuart15_edma_driver_state")
6192 static cmsis_lpuart_edma_driver_state_t LPUART15_EdmaDriverState = {
6193 #else
6194 static cmsis_lpuart_edma_driver_state_t LPUART15_EdmaDriverState = {
6195 #endif
6196     &LPUART15_Resource, &LPUART15_EdmaResource, &LPUART15_EdmaHandle, &LPUART15_EdmaRxHandle, &LPUART15_EdmaTxHandle,
6197 };
6198 
LPUART15_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)6199 static int32_t LPUART15_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)
6200 {
6201 #ifdef RTE_USART15_PIN_INIT
6202     RTE_USART15_PIN_INIT();
6203 #endif
6204     return LPUART_EdmaInitialize(cb_event, &LPUART15_EdmaDriverState);
6205 }
6206 
LPUART15_EdmaUninitialize(void)6207 static int32_t LPUART15_EdmaUninitialize(void)
6208 {
6209 #ifdef RTE_USART15_PIN_DEINIT
6210     RTE_USART15_PIN_DEINIT();
6211 #endif
6212     return LPUART_EdmaUninitialize(&LPUART15_EdmaDriverState);
6213 }
6214 
LPUART15_EdmaPowerControl(ARM_POWER_STATE state)6215 static int32_t LPUART15_EdmaPowerControl(ARM_POWER_STATE state)
6216 {
6217     return LPUART_EdmaPowerControl(state, &LPUART15_EdmaDriverState);
6218 }
6219 
LPUART15_EdmaSend(const void * data,uint32_t num)6220 static int32_t LPUART15_EdmaSend(const void *data, uint32_t num)
6221 {
6222     return LPUART_EdmaSend(data, num, &LPUART15_EdmaDriverState);
6223 }
6224 
LPUART15_EdmaReceive(void * data,uint32_t num)6225 static int32_t LPUART15_EdmaReceive(void *data, uint32_t num)
6226 {
6227     return LPUART_EdmaReceive(data, num, &LPUART15_EdmaDriverState);
6228 }
6229 
LPUART15_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)6230 static int32_t LPUART15_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
6231 {
6232     return LPUART_EdmaTransfer(data_out, data_in, num, &LPUART15_EdmaDriverState);
6233 }
6234 
LPUART15_EdmaGetTxCount(void)6235 static uint32_t LPUART15_EdmaGetTxCount(void)
6236 {
6237     return LPUART_EdmaGetTxCount(&LPUART15_EdmaDriverState);
6238 }
6239 
LPUART15_EdmaGetRxCount(void)6240 static uint32_t LPUART15_EdmaGetRxCount(void)
6241 {
6242     return LPUART_EdmaGetRxCount(&LPUART15_EdmaDriverState);
6243 }
6244 
LPUART15_EdmaControl(uint32_t control,uint32_t arg)6245 static int32_t LPUART15_EdmaControl(uint32_t control, uint32_t arg)
6246 {
6247     return LPUART_EdmaControl(control, arg, &LPUART15_EdmaDriverState);
6248 }
6249 
LPUART15_EdmaGetStatus(void)6250 static ARM_USART_STATUS LPUART15_EdmaGetStatus(void)
6251 {
6252     return LPUART_EdmaGetStatus(&LPUART15_EdmaDriverState);
6253 }
6254 
6255 #endif
6256 
6257 #else
6258 
6259 static lpuart_handle_t LPUART15_Handle;
6260 
6261 #if defined(USART15_RX_BUFFER_ENABLE) && (USART15_RX_BUFFER_ENABLE == 1)
6262 static uint8_t lpuart15_rxRingBuffer[USART_RX_BUFFER_LEN];
6263 #endif
6264 
6265 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
6266 ARMCC_SECTION("lpuart15_non_blocking_driver_state")
6267 static cmsis_lpuart_non_blocking_driver_state_t LPUART15_NonBlockingDriverState = {
6268 #else
6269 static cmsis_lpuart_non_blocking_driver_state_t LPUART15_NonBlockingDriverState = {
6270 #endif
6271     &LPUART15_Resource,
6272     &LPUART15_Handle,
6273 };
6274 
LPUART15_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)6275 static int32_t LPUART15_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)
6276 {
6277 #ifdef RTE_USART15_PIN_INIT
6278     RTE_USART15_PIN_INIT();
6279 #endif
6280     return LPUART_NonBlockingInitialize(cb_event, &LPUART15_NonBlockingDriverState);
6281 }
6282 
LPUART15_NonBlockingUninitialize(void)6283 static int32_t LPUART15_NonBlockingUninitialize(void)
6284 {
6285 #ifdef RTE_USART15_PIN_DEINIT
6286     RTE_USART15_PIN_DEINIT();
6287 #endif
6288     return LPUART_NonBlockingUninitialize(&LPUART15_NonBlockingDriverState);
6289 }
6290 
LPUART15_NonBlockingPowerControl(ARM_POWER_STATE state)6291 static int32_t LPUART15_NonBlockingPowerControl(ARM_POWER_STATE state)
6292 {
6293     int32_t result;
6294 
6295     result = LPUART_NonBlockingPowerControl(state, &LPUART15_NonBlockingDriverState);
6296 
6297 #if defined(USART15_RX_BUFFER_ENABLE) && (USART15_RX_BUFFER_ENABLE == 1)
6298     if ((state == ARM_POWER_FULL) && (LPUART15_NonBlockingDriverState.handle->rxRingBuffer == NULL))
6299     {
6300         LPUART_TransferStartRingBuffer(LPUART15_NonBlockingDriverState.resource->base,
6301                                        LPUART15_NonBlockingDriverState.handle, lpuart15_rxRingBuffer,
6302                                        USART_RX_BUFFER_LEN);
6303     }
6304 #endif
6305 
6306     return result;
6307 }
6308 
LPUART15_NonBlockingSend(const void * data,uint32_t num)6309 static int32_t LPUART15_NonBlockingSend(const void *data, uint32_t num)
6310 {
6311     return LPUART_NonBlockingSend(data, num, &LPUART15_NonBlockingDriverState);
6312 }
6313 
LPUART15_NonBlockingReceive(void * data,uint32_t num)6314 static int32_t LPUART15_NonBlockingReceive(void *data, uint32_t num)
6315 {
6316     return LPUART_NonBlockingReceive(data, num, &LPUART15_NonBlockingDriverState);
6317 }
6318 
LPUART15_NonBlockingTransfer(const void * data_out,void * data_in,uint32_t num)6319 static int32_t LPUART15_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num)
6320 {
6321     return LPUART_NonBlockingTransfer(data_out, data_in, num, &LPUART15_NonBlockingDriverState);
6322 }
6323 
LPUART15_NonBlockingGetTxCount(void)6324 static uint32_t LPUART15_NonBlockingGetTxCount(void)
6325 {
6326     return LPUART_NonBlockingGetTxCount(&LPUART15_NonBlockingDriverState);
6327 }
6328 
LPUART15_NonBlockingGetRxCount(void)6329 static uint32_t LPUART15_NonBlockingGetRxCount(void)
6330 {
6331     return LPUART_NonBlockingGetRxCount(&LPUART15_NonBlockingDriverState);
6332 }
6333 
LPUART15_NonBlockingControl(uint32_t control,uint32_t arg)6334 static int32_t LPUART15_NonBlockingControl(uint32_t control, uint32_t arg)
6335 {
6336     int32_t result;
6337 
6338     result = LPUART_NonBlockingControl(control, arg, &LPUART15_NonBlockingDriverState);
6339     if (ARM_DRIVER_OK != result)
6340     {
6341         return result;
6342     }
6343 
6344     /* Enable the receive interrupts if ring buffer is used */
6345     if (LPUART15_NonBlockingDriverState.handle->rxRingBuffer != NULL)
6346     {
6347         LPUART_EnableInterrupts(
6348             LPUART15_NonBlockingDriverState.resource->base,
6349             (uint32_t)kLPUART_RxDataRegFullInterruptEnable | (uint32_t)kLPUART_RxOverrunInterruptEnable);
6350     }
6351 
6352     return ARM_DRIVER_OK;
6353 }
6354 
LPUART15_NonBlockingGetStatus(void)6355 static ARM_USART_STATUS LPUART15_NonBlockingGetStatus(void)
6356 {
6357     return LPUART_NonBlockingGetStatus(&LPUART15_NonBlockingDriverState);
6358 }
6359 
6360 #endif
6361 
6362 ARM_DRIVER_USART Driver_USART15 = {LPUARTx_GetVersion,      LPUARTx_GetCapabilities,
6363 #if defined(RTE_USART15_DMA_EN) && RTE_USART15_DMA_EN
6364 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
6365                                    LPUART15_EdmaInitialize, LPUART15_EdmaUninitialize, LPUART15_EdmaPowerControl,
6366                                    LPUART15_EdmaSend,       LPUART15_EdmaReceive,      LPUART15_EdmaTransfer,
6367                                    LPUART15_EdmaGetTxCount, LPUART15_EdmaGetRxCount,   LPUART15_EdmaControl,
6368                                    LPUART15_EdmaGetStatus,
6369 #else
6370                                    LPUART15_DmaInitialize,  LPUART15_DmaUninitialize, LPUART15_DmaPowerControl,
6371                                    LPUART15_DmaSend,        LPUART15_DmaReceive,      LPUART15_DmaTransfer,
6372                                    LPUART15_DmaGetTxCount,  LPUART15_DmaGetRxCount,   LPUART15_DmaControl,
6373                                    LPUART15_DmaGetStatus,
6374 #endif /* FSL_FEATURE_SOC_EDMA_COUNT */
6375 #else
6376                                   LPUART15_NonBlockingInitialize,
6377                                   LPUART15_NonBlockingUninitialize,
6378                                   LPUART15_NonBlockingPowerControl,
6379                                   LPUART15_NonBlockingSend,
6380                                   LPUART15_NonBlockingReceive,
6381                                   LPUART15_NonBlockingTransfer,
6382                                   LPUART15_NonBlockingGetTxCount,
6383                                   LPUART15_NonBlockingGetRxCount,
6384                                   LPUART15_NonBlockingControl,
6385                                   LPUART15_NonBlockingGetStatus,
6386 #endif /* RTE_USART15_DMA_EN */
6387                                    LPUARTx_SetModemControl, LPUARTx_GetModemStatus};
6388 
6389 #endif /* LPUART15 */
6390 
6391 #if defined(LPUART16) && defined(RTE_USART16) && RTE_USART16
6392 
6393 /* User needs to provide the implementation for LPUART16_GetFreq/InitPins/DeinitPins
6394 in the application for enabling according instance. */
6395 extern uint32_t LPUART16_GetFreq(void);
6396 
6397 static cmsis_lpuart_resource_t LPUART16_Resource = {LPUART16, LPUART16_GetFreq};
6398 
6399 #if defined(RTE_USART16_DMA_EN) && RTE_USART16_DMA_EN
6400 
6401 #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT)
6402 
6403 static cmsis_lpuart_dma_resource_t LPUART16_DmaResource = {
6404     RTE_USART16_DMA_TX_DMA_BASE,    RTE_USART16_DMA_TX_CH,          RTE_USART16_DMA_TX_PERI_SEL,
6405     RTE_USART16_DMA_RX_DMA_BASE,    RTE_USART16_DMA_RX_CH,          RTE_USART16_DMA_RX_PERI_SEL,
6406 
6407 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
6408     RTE_USART16_DMA_TX_DMAMUX_BASE, RTE_USART16_DMA_RX_DMAMUX_BASE,
6409 #endif
6410 #if FSL_FEATURE_DMA_MODULE_CHANNEL != FSL_FEATURE_DMAMUX_MODULE_CHANNEL
6411     RTE_USART16_DMAMUX_TX_CH,       RTE_USART16_DMAMUX_RX_CH
6412 #endif
6413 };
6414 
6415 static lpuart_dma_handle_t LPUART16_DmaHandle;
6416 static dma_handle_t LPUART16_DmaRxHandle;
6417 static dma_handle_t LPUART16_DmaTxHandle;
6418 
6419 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
6420 ARMCC_SECTION("lpuart16_dma_driver_state")
6421 static cmsis_lpuart_dma_driver_state_t LPUART16_DmaDriverState = {
6422 #else
6423 static cmsis_lpuart_dma_driver_state_t LPUART16_DmaDriverState = {
6424 #endif
6425     &LPUART16_Resource, &LPUART16_DmaResource, &LPUART16_DmaHandle, &LPUART16_DmaRxHandle, &LPUART16_DmaTxHandle,
6426 };
6427 
LPUART16_DmaInitialize(ARM_USART_SignalEvent_t cb_event)6428 static int32_t LPUART16_DmaInitialize(ARM_USART_SignalEvent_t cb_event)
6429 {
6430 #ifdef RTE_USART16_PIN_INIT
6431     RTE_USART16_PIN_INIT();
6432 #endif
6433     return LPUART_DmaInitialize(cb_event, &LPUART16_DmaDriverState);
6434 }
6435 
LPUART16_DmaUninitialize(void)6436 static int32_t LPUART16_DmaUninitialize(void)
6437 {
6438 #ifdef RTE_USART16_PIN_DEINIT
6439     RTE_USART16_PIN_DEINIT();
6440 #endif
6441     return LPUART_DmaUninitialize(&LPUART16_DmaDriverState);
6442 }
6443 
LPUART16_DmaPowerControl(ARM_POWER_STATE state)6444 static int32_t LPUART16_DmaPowerControl(ARM_POWER_STATE state)
6445 {
6446     return LPUART_DmaPowerControl(state, &LPUART16_DmaDriverState);
6447 }
6448 
LPUART16_DmaSend(const void * data,uint32_t num)6449 static int32_t LPUART16_DmaSend(const void *data, uint32_t num)
6450 {
6451     return LPUART_DmaSend(data, num, &LPUART16_DmaDriverState);
6452 }
6453 
LPUART16_DmaReceive(void * data,uint32_t num)6454 static int32_t LPUART16_DmaReceive(void *data, uint32_t num)
6455 {
6456     return LPUART_DmaReceive(data, num, &LPUART16_DmaDriverState);
6457 }
6458 
LPUART16_DmaTransfer(const void * data_out,void * data_in,uint32_t num)6459 static int32_t LPUART16_DmaTransfer(const void *data_out, void *data_in, uint32_t num)
6460 {
6461     return LPUART_DmaTransfer(data_out, data_in, num, &LPUART16_DmaDriverState);
6462 }
6463 
LPUART16_DmaGetTxCount(void)6464 static uint32_t LPUART16_DmaGetTxCount(void)
6465 {
6466     return LPUART_DmaGetTxCount(&LPUART16_DmaDriverState);
6467 }
6468 
LPUART16_DmaGetRxCount(void)6469 static uint32_t LPUART16_DmaGetRxCount(void)
6470 {
6471     return LPUART_DmaGetRxCount(&LPUART16_DmaDriverState);
6472 }
6473 
LPUART16_DmaControl(uint32_t control,uint32_t arg)6474 static int32_t LPUART16_DmaControl(uint32_t control, uint32_t arg)
6475 {
6476     return LPUART_DmaControl(control, arg, &LPUART16_DmaDriverState);
6477 }
6478 
LPUART16_DmaGetStatus(void)6479 static ARM_USART_STATUS LPUART16_DmaGetStatus(void)
6480 {
6481     return LPUART_DmaGetStatus(&LPUART16_DmaDriverState);
6482 }
6483 
6484 /* LPUART16 Driver Control Block */
6485 
6486 #endif
6487 
6488 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
6489 
6490 static cmsis_lpuart_edma_resource_t LPUART16_EdmaResource = {
6491     RTE_USART16_DMA_TX_DMA_BASE,    RTE_USART16_DMA_TX_CH,          RTE_USART16_DMA_TX_PERI_SEL,
6492     RTE_USART16_DMA_RX_DMA_BASE,    RTE_USART16_DMA_RX_CH,          RTE_USART16_DMA_RX_PERI_SEL,
6493 
6494 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
6495     RTE_USART16_DMA_TX_DMAMUX_BASE, RTE_USART16_DMA_RX_DMAMUX_BASE,
6496 #endif
6497 };
6498 
6499 static lpuart_edma_handle_t LPUART16_EdmaHandle;
6500 static edma_handle_t LPUART16_EdmaRxHandle;
6501 static edma_handle_t LPUART16_EdmaTxHandle;
6502 
6503 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
6504 ARMCC_SECTION("lpuart16_edma_driver_state")
6505 static cmsis_lpuart_edma_driver_state_t LPUART16_EdmaDriverState = {
6506 #else
6507 static cmsis_lpuart_edma_driver_state_t LPUART16_EdmaDriverState = {
6508 #endif
6509     &LPUART16_Resource, &LPUART16_EdmaResource, &LPUART16_EdmaHandle, &LPUART16_EdmaRxHandle, &LPUART16_EdmaTxHandle,
6510 };
6511 
LPUART16_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)6512 static int32_t LPUART16_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)
6513 {
6514 #ifdef RTE_USART16_PIN_INIT
6515     RTE_USART16_PIN_INIT();
6516 #endif
6517     return LPUART_EdmaInitialize(cb_event, &LPUART16_EdmaDriverState);
6518 }
6519 
LPUART16_EdmaUninitialize(void)6520 static int32_t LPUART16_EdmaUninitialize(void)
6521 {
6522 #ifdef RTE_USART16_PIN_DEINIT
6523     RTE_USART16_PIN_DEINIT();
6524 #endif
6525     return LPUART_EdmaUninitialize(&LPUART16_EdmaDriverState);
6526 }
6527 
LPUART16_EdmaPowerControl(ARM_POWER_STATE state)6528 static int32_t LPUART16_EdmaPowerControl(ARM_POWER_STATE state)
6529 {
6530     return LPUART_EdmaPowerControl(state, &LPUART16_EdmaDriverState);
6531 }
6532 
LPUART16_EdmaSend(const void * data,uint32_t num)6533 static int32_t LPUART16_EdmaSend(const void *data, uint32_t num)
6534 {
6535     return LPUART_EdmaSend(data, num, &LPUART16_EdmaDriverState);
6536 }
6537 
LPUART16_EdmaReceive(void * data,uint32_t num)6538 static int32_t LPUART16_EdmaReceive(void *data, uint32_t num)
6539 {
6540     return LPUART_EdmaReceive(data, num, &LPUART16_EdmaDriverState);
6541 }
6542 
LPUART16_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)6543 static int32_t LPUART16_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
6544 {
6545     return LPUART_EdmaTransfer(data_out, data_in, num, &LPUART16_EdmaDriverState);
6546 }
6547 
LPUART16_EdmaGetTxCount(void)6548 static uint32_t LPUART16_EdmaGetTxCount(void)
6549 {
6550     return LPUART_EdmaGetTxCount(&LPUART16_EdmaDriverState);
6551 }
6552 
LPUART16_EdmaGetRxCount(void)6553 static uint32_t LPUART16_EdmaGetRxCount(void)
6554 {
6555     return LPUART_EdmaGetRxCount(&LPUART16_EdmaDriverState);
6556 }
6557 
LPUART16_EdmaControl(uint32_t control,uint32_t arg)6558 static int32_t LPUART16_EdmaControl(uint32_t control, uint32_t arg)
6559 {
6560     return LPUART_EdmaControl(control, arg, &LPUART16_EdmaDriverState);
6561 }
6562 
LPUART16_EdmaGetStatus(void)6563 static ARM_USART_STATUS LPUART16_EdmaGetStatus(void)
6564 {
6565     return LPUART_EdmaGetStatus(&LPUART16_EdmaDriverState);
6566 }
6567 
6568 #endif
6569 
6570 #else
6571 
6572 static lpuart_handle_t LPUART16_Handle;
6573 
6574 #if defined(USART16_RX_BUFFER_ENABLE) && (USART16_RX_BUFFER_ENABLE == 1)
6575 static uint8_t lpuart16_rxRingBuffer[USART_RX_BUFFER_LEN];
6576 #endif
6577 
6578 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
6579 ARMCC_SECTION("lpuart16_non_blocking_driver_state")
6580 static cmsis_lpuart_non_blocking_driver_state_t LPUART16_NonBlockingDriverState = {
6581 #else
6582 static cmsis_lpuart_non_blocking_driver_state_t LPUART16_NonBlockingDriverState = {
6583 #endif
6584     &LPUART16_Resource,
6585     &LPUART16_Handle,
6586 };
6587 
LPUART16_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)6588 static int32_t LPUART16_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)
6589 {
6590 #ifdef RTE_USART16_PIN_INIT
6591     RTE_USART16_PIN_INIT();
6592 #endif
6593     return LPUART_NonBlockingInitialize(cb_event, &LPUART16_NonBlockingDriverState);
6594 }
6595 
LPUART16_NonBlockingUninitialize(void)6596 static int32_t LPUART16_NonBlockingUninitialize(void)
6597 {
6598 #ifdef RTE_USART16_PIN_DEINIT
6599     RTE_USART16_PIN_DEINIT();
6600 #endif
6601     return LPUART_NonBlockingUninitialize(&LPUART16_NonBlockingDriverState);
6602 }
6603 
LPUART16_NonBlockingPowerControl(ARM_POWER_STATE state)6604 static int32_t LPUART16_NonBlockingPowerControl(ARM_POWER_STATE state)
6605 {
6606     int32_t result;
6607 
6608     result = LPUART_NonBlockingPowerControl(state, &LPUART16_NonBlockingDriverState);
6609 
6610 #if defined(USART16_RX_BUFFER_ENABLE) && (USART16_RX_BUFFER_ENABLE == 1)
6611     if ((state == ARM_POWER_FULL) && (LPUART16_NonBlockingDriverState.handle->rxRingBuffer == NULL))
6612     {
6613         LPUART_TransferStartRingBuffer(LPUART16_NonBlockingDriverState.resource->base,
6614                                        LPUART16_NonBlockingDriverState.handle, lpuart16_rxRingBuffer,
6615                                        USART_RX_BUFFER_LEN);
6616     }
6617 #endif
6618 
6619     return result;
6620 }
6621 
LPUART16_NonBlockingSend(const void * data,uint32_t num)6622 static int32_t LPUART16_NonBlockingSend(const void *data, uint32_t num)
6623 {
6624     return LPUART_NonBlockingSend(data, num, &LPUART16_NonBlockingDriverState);
6625 }
6626 
LPUART16_NonBlockingReceive(void * data,uint32_t num)6627 static int32_t LPUART16_NonBlockingReceive(void *data, uint32_t num)
6628 {
6629     return LPUART_NonBlockingReceive(data, num, &LPUART16_NonBlockingDriverState);
6630 }
6631 
LPUART16_NonBlockingTransfer(const void * data_out,void * data_in,uint32_t num)6632 static int32_t LPUART16_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num)
6633 {
6634     return LPUART_NonBlockingTransfer(data_out, data_in, num, &LPUART16_NonBlockingDriverState);
6635 }
6636 
LPUART16_NonBlockingGetTxCount(void)6637 static uint32_t LPUART16_NonBlockingGetTxCount(void)
6638 {
6639     return LPUART_NonBlockingGetTxCount(&LPUART16_NonBlockingDriverState);
6640 }
6641 
LPUART16_NonBlockingGetRxCount(void)6642 static uint32_t LPUART16_NonBlockingGetRxCount(void)
6643 {
6644     return LPUART_NonBlockingGetRxCount(&LPUART16_NonBlockingDriverState);
6645 }
6646 
LPUART16_NonBlockingControl(uint32_t control,uint32_t arg)6647 static int32_t LPUART16_NonBlockingControl(uint32_t control, uint32_t arg)
6648 {
6649     int32_t result;
6650 
6651     result = LPUART_NonBlockingControl(control, arg, &LPUART16_NonBlockingDriverState);
6652     if (ARM_DRIVER_OK != result)
6653     {
6654         return result;
6655     }
6656 
6657     /* Enable the receive interrupts if ring buffer is used */
6658     if (LPUART16_NonBlockingDriverState.handle->rxRingBuffer != NULL)
6659     {
6660         LPUART_EnableInterrupts(
6661             LPUART16_NonBlockingDriverState.resource->base,
6662             (uint32_t)kLPUART_RxDataRegFullInterruptEnable | (uint32_t)kLPUART_RxOverrunInterruptEnable);
6663     }
6664 
6665     return ARM_DRIVER_OK;
6666 }
6667 
LPUART16_NonBlockingGetStatus(void)6668 static ARM_USART_STATUS LPUART16_NonBlockingGetStatus(void)
6669 {
6670     return LPUART_NonBlockingGetStatus(&LPUART16_NonBlockingDriverState);
6671 }
6672 
6673 #endif
6674 
6675 ARM_DRIVER_USART Driver_USART16 = {LPUARTx_GetVersion,      LPUARTx_GetCapabilities,
6676 #if defined(RTE_USART16_DMA_EN) && RTE_USART16_DMA_EN
6677 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
6678                                    LPUART16_EdmaInitialize, LPUART16_EdmaUninitialize, LPUART16_EdmaPowerControl,
6679                                    LPUART16_EdmaSend,       LPUART16_EdmaReceive,      LPUART16_EdmaTransfer,
6680                                    LPUART16_EdmaGetTxCount, LPUART16_EdmaGetRxCount,   LPUART16_EdmaControl,
6681                                    LPUART16_EdmaGetStatus,
6682 #else
6683                                    LPUART16_DmaInitialize,  LPUART16_DmaUninitialize, LPUART16_DmaPowerControl,
6684                                    LPUART16_DmaSend,        LPUART16_DmaReceive,      LPUART16_DmaTransfer,
6685                                    LPUART16_DmaGetTxCount,  LPUART16_DmaGetRxCount,   LPUART16_DmaControl,
6686                                    LPUART16_DmaGetStatus,
6687 #endif /* FSL_FEATURE_SOC_EDMA_COUNT */
6688 #else
6689                                   LPUART16_NonBlockingInitialize,
6690                                   LPUART16_NonBlockingUninitialize,
6691                                   LPUART16_NonBlockingPowerControl,
6692                                   LPUART16_NonBlockingSend,
6693                                   LPUART16_NonBlockingReceive,
6694                                   LPUART16_NonBlockingTransfer,
6695                                   LPUART16_NonBlockingGetTxCount,
6696                                   LPUART16_NonBlockingGetRxCount,
6697                                   LPUART16_NonBlockingControl,
6698                                   LPUART16_NonBlockingGetStatus,
6699 #endif /* RTE_USART16_DMA_EN */
6700                                    LPUARTx_SetModemControl, LPUARTx_GetModemStatus};
6701 
6702 #endif /* LPUART16 */
6703 
6704 #if defined(LPUART17) && defined(RTE_USART17) && RTE_USART17
6705 
6706 /* User needs to provide the implementation for LPUART17_GetFreq/InitPins/DeinitPins
6707 in the application for enabling according instance. */
6708 extern uint32_t LPUART17_GetFreq(void);
6709 
6710 static cmsis_lpuart_resource_t LPUART17_Resource = {LPUART17, LPUART17_GetFreq};
6711 
6712 #if defined(RTE_USART17_DMA_EN) && RTE_USART17_DMA_EN
6713 
6714 #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT)
6715 
6716 static cmsis_lpuart_dma_resource_t LPUART17_DmaResource = {
6717     RTE_USART17_DMA_TX_DMA_BASE,    RTE_USART17_DMA_TX_CH,          RTE_USART17_DMA_TX_PERI_SEL,
6718     RTE_USART17_DMA_RX_DMA_BASE,    RTE_USART17_DMA_RX_CH,          RTE_USART17_DMA_RX_PERI_SEL,
6719 
6720 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
6721     RTE_USART17_DMA_TX_DMAMUX_BASE, RTE_USART17_DMA_RX_DMAMUX_BASE,
6722 #endif
6723 #if FSL_FEATURE_DMA_MODULE_CHANNEL != FSL_FEATURE_DMAMUX_MODULE_CHANNEL
6724     RTE_USART17_DMAMUX_TX_CH,       RTE_USART17_DMAMUX_RX_CH
6725 #endif
6726 };
6727 
6728 static lpuart_dma_handle_t LPUART17_DmaHandle;
6729 static dma_handle_t LPUART17_DmaRxHandle;
6730 static dma_handle_t LPUART17_DmaTxHandle;
6731 
6732 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
6733 ARMCC_SECTION("lpuart17_dma_driver_state")
6734 static cmsis_lpuart_dma_driver_state_t LPUART17_DmaDriverState = {
6735 #else
6736 static cmsis_lpuart_dma_driver_state_t LPUART17_DmaDriverState = {
6737 #endif
6738     &LPUART17_Resource, &LPUART17_DmaResource, &LPUART17_DmaHandle, &LPUART17_DmaRxHandle, &LPUART17_DmaTxHandle,
6739 };
6740 
LPUART17_DmaInitialize(ARM_USART_SignalEvent_t cb_event)6741 static int32_t LPUART17_DmaInitialize(ARM_USART_SignalEvent_t cb_event)
6742 {
6743 #ifdef RTE_USART17_PIN_INIT
6744     RTE_USART17_PIN_INIT();
6745 #endif
6746     return LPUART_DmaInitialize(cb_event, &LPUART17_DmaDriverState);
6747 }
6748 
LPUART17_DmaUninitialize(void)6749 static int32_t LPUART17_DmaUninitialize(void)
6750 {
6751 #ifdef RTE_USART17_PIN_DEINIT
6752     RTE_USART17_PIN_DEINIT();
6753 #endif
6754     return LPUART_DmaUninitialize(&LPUART17_DmaDriverState);
6755 }
6756 
LPUART17_DmaPowerControl(ARM_POWER_STATE state)6757 static int32_t LPUART17_DmaPowerControl(ARM_POWER_STATE state)
6758 {
6759     return LPUART_DmaPowerControl(state, &LPUART17_DmaDriverState);
6760 }
6761 
LPUART17_DmaSend(const void * data,uint32_t num)6762 static int32_t LPUART17_DmaSend(const void *data, uint32_t num)
6763 {
6764     return LPUART_DmaSend(data, num, &LPUART17_DmaDriverState);
6765 }
6766 
LPUART17_DmaReceive(void * data,uint32_t num)6767 static int32_t LPUART17_DmaReceive(void *data, uint32_t num)
6768 {
6769     return LPUART_DmaReceive(data, num, &LPUART17_DmaDriverState);
6770 }
6771 
LPUART17_DmaTransfer(const void * data_out,void * data_in,uint32_t num)6772 static int32_t LPUART17_DmaTransfer(const void *data_out, void *data_in, uint32_t num)
6773 {
6774     return LPUART_DmaTransfer(data_out, data_in, num, &LPUART17_DmaDriverState);
6775 }
6776 
LPUART17_DmaGetTxCount(void)6777 static uint32_t LPUART17_DmaGetTxCount(void)
6778 {
6779     return LPUART_DmaGetTxCount(&LPUART17_DmaDriverState);
6780 }
6781 
LPUART17_DmaGetRxCount(void)6782 static uint32_t LPUART17_DmaGetRxCount(void)
6783 {
6784     return LPUART_DmaGetRxCount(&LPUART17_DmaDriverState);
6785 }
6786 
LPUART17_DmaControl(uint32_t control,uint32_t arg)6787 static int32_t LPUART17_DmaControl(uint32_t control, uint32_t arg)
6788 {
6789     return LPUART_DmaControl(control, arg, &LPUART17_DmaDriverState);
6790 }
6791 
LPUART17_DmaGetStatus(void)6792 static ARM_USART_STATUS LPUART17_DmaGetStatus(void)
6793 {
6794     return LPUART_DmaGetStatus(&LPUART17_DmaDriverState);
6795 }
6796 
6797 /* LPUART17 Driver Control Block */
6798 
6799 #endif
6800 
6801 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
6802 
6803 static cmsis_lpuart_edma_resource_t LPUART17_EdmaResource = {
6804     RTE_USART17_DMA_TX_DMA_BASE,    RTE_USART17_DMA_TX_CH,          RTE_USART17_DMA_TX_PERI_SEL,
6805     RTE_USART17_DMA_RX_DMA_BASE,    RTE_USART17_DMA_RX_CH,          RTE_USART17_DMA_RX_PERI_SEL,
6806 
6807 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
6808     RTE_USART17_DMA_TX_DMAMUX_BASE, RTE_USART17_DMA_RX_DMAMUX_BASE,
6809 #endif
6810 };
6811 
6812 static lpuart_edma_handle_t LPUART17_EdmaHandle;
6813 static edma_handle_t LPUART17_EdmaRxHandle;
6814 static edma_handle_t LPUART17_EdmaTxHandle;
6815 
6816 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
6817 ARMCC_SECTION("lpuart17_edma_driver_state")
6818 static cmsis_lpuart_edma_driver_state_t LPUART17_EdmaDriverState = {
6819 #else
6820 static cmsis_lpuart_edma_driver_state_t LPUART17_EdmaDriverState = {
6821 #endif
6822     &LPUART17_Resource, &LPUART17_EdmaResource, &LPUART17_EdmaHandle, &LPUART17_EdmaRxHandle, &LPUART17_EdmaTxHandle,
6823 };
6824 
LPUART17_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)6825 static int32_t LPUART17_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)
6826 {
6827 #ifdef RTE_USART17_PIN_INIT
6828     RTE_USART17_PIN_INIT();
6829 #endif
6830     return LPUART_EdmaInitialize(cb_event, &LPUART17_EdmaDriverState);
6831 }
6832 
LPUART17_EdmaUninitialize(void)6833 static int32_t LPUART17_EdmaUninitialize(void)
6834 {
6835 #ifdef RTE_USART17_PIN_DEINIT
6836     RTE_USART17_PIN_DEINIT();
6837 #endif
6838     return LPUART_EdmaUninitialize(&LPUART17_EdmaDriverState);
6839 }
6840 
LPUART17_EdmaPowerControl(ARM_POWER_STATE state)6841 static int32_t LPUART17_EdmaPowerControl(ARM_POWER_STATE state)
6842 {
6843     return LPUART_EdmaPowerControl(state, &LPUART17_EdmaDriverState);
6844 }
6845 
LPUART17_EdmaSend(const void * data,uint32_t num)6846 static int32_t LPUART17_EdmaSend(const void *data, uint32_t num)
6847 {
6848     return LPUART_EdmaSend(data, num, &LPUART17_EdmaDriverState);
6849 }
6850 
LPUART17_EdmaReceive(void * data,uint32_t num)6851 static int32_t LPUART17_EdmaReceive(void *data, uint32_t num)
6852 {
6853     return LPUART_EdmaReceive(data, num, &LPUART17_EdmaDriverState);
6854 }
6855 
LPUART17_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)6856 static int32_t LPUART17_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
6857 {
6858     return LPUART_EdmaTransfer(data_out, data_in, num, &LPUART17_EdmaDriverState);
6859 }
6860 
LPUART17_EdmaGetTxCount(void)6861 static uint32_t LPUART17_EdmaGetTxCount(void)
6862 {
6863     return LPUART_EdmaGetTxCount(&LPUART17_EdmaDriverState);
6864 }
6865 
LPUART17_EdmaGetRxCount(void)6866 static uint32_t LPUART17_EdmaGetRxCount(void)
6867 {
6868     return LPUART_EdmaGetRxCount(&LPUART17_EdmaDriverState);
6869 }
6870 
LPUART17_EdmaControl(uint32_t control,uint32_t arg)6871 static int32_t LPUART17_EdmaControl(uint32_t control, uint32_t arg)
6872 {
6873     return LPUART_EdmaControl(control, arg, &LPUART17_EdmaDriverState);
6874 }
6875 
LPUART17_EdmaGetStatus(void)6876 static ARM_USART_STATUS LPUART17_EdmaGetStatus(void)
6877 {
6878     return LPUART_EdmaGetStatus(&LPUART17_EdmaDriverState);
6879 }
6880 
6881 #endif
6882 
6883 #else
6884 
6885 static lpuart_handle_t LPUART17_Handle;
6886 
6887 #if defined(USART17_RX_BUFFER_ENABLE) && (USART17_RX_BUFFER_ENABLE == 1)
6888 static uint8_t lpuart17_rxRingBuffer[USART_RX_BUFFER_LEN];
6889 #endif
6890 
6891 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
6892 ARMCC_SECTION("lpuart17_non_blocking_driver_state")
6893 static cmsis_lpuart_non_blocking_driver_state_t LPUART17_NonBlockingDriverState = {
6894 #else
6895 static cmsis_lpuart_non_blocking_driver_state_t LPUART17_NonBlockingDriverState = {
6896 #endif
6897     &LPUART17_Resource,
6898     &LPUART17_Handle,
6899 };
6900 
LPUART17_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)6901 static int32_t LPUART17_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)
6902 {
6903 #ifdef RTE_USART17_PIN_INIT
6904     RTE_USART17_PIN_INIT();
6905 #endif
6906     return LPUART_NonBlockingInitialize(cb_event, &LPUART17_NonBlockingDriverState);
6907 }
6908 
LPUART17_NonBlockingUninitialize(void)6909 static int32_t LPUART17_NonBlockingUninitialize(void)
6910 {
6911 #ifdef RTE_USART17_PIN_DEINIT
6912     RTE_USART17_PIN_DEINIT();
6913 #endif
6914     return LPUART_NonBlockingUninitialize(&LPUART17_NonBlockingDriverState);
6915 }
6916 
LPUART17_NonBlockingPowerControl(ARM_POWER_STATE state)6917 static int32_t LPUART17_NonBlockingPowerControl(ARM_POWER_STATE state)
6918 {
6919     int32_t result;
6920 
6921     result = LPUART_NonBlockingPowerControl(state, &LPUART17_NonBlockingDriverState);
6922 
6923 #if defined(USART17_RX_BUFFER_ENABLE) && (USART17_RX_BUFFER_ENABLE == 1)
6924     if ((state == ARM_POWER_FULL) && (LPUART17_NonBlockingDriverState.handle->rxRingBuffer == NULL))
6925     {
6926         LPUART_TransferStartRingBuffer(LPUART17_NonBlockingDriverState.resource->base,
6927                                        LPUART17_NonBlockingDriverState.handle, lpuart17_rxRingBuffer,
6928                                        USART_RX_BUFFER_LEN);
6929     }
6930 #endif
6931 
6932     return result;
6933 }
6934 
LPUART17_NonBlockingSend(const void * data,uint32_t num)6935 static int32_t LPUART17_NonBlockingSend(const void *data, uint32_t num)
6936 {
6937     return LPUART_NonBlockingSend(data, num, &LPUART17_NonBlockingDriverState);
6938 }
6939 
LPUART17_NonBlockingReceive(void * data,uint32_t num)6940 static int32_t LPUART17_NonBlockingReceive(void *data, uint32_t num)
6941 {
6942     return LPUART_NonBlockingReceive(data, num, &LPUART17_NonBlockingDriverState);
6943 }
6944 
LPUART17_NonBlockingTransfer(const void * data_out,void * data_in,uint32_t num)6945 static int32_t LPUART17_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num)
6946 {
6947     return LPUART_NonBlockingTransfer(data_out, data_in, num, &LPUART17_NonBlockingDriverState);
6948 }
6949 
LPUART17_NonBlockingGetTxCount(void)6950 static uint32_t LPUART17_NonBlockingGetTxCount(void)
6951 {
6952     return LPUART_NonBlockingGetTxCount(&LPUART17_NonBlockingDriverState);
6953 }
6954 
LPUART17_NonBlockingGetRxCount(void)6955 static uint32_t LPUART17_NonBlockingGetRxCount(void)
6956 {
6957     return LPUART_NonBlockingGetRxCount(&LPUART17_NonBlockingDriverState);
6958 }
6959 
LPUART17_NonBlockingControl(uint32_t control,uint32_t arg)6960 static int32_t LPUART17_NonBlockingControl(uint32_t control, uint32_t arg)
6961 {
6962     int32_t result;
6963 
6964     result = LPUART_NonBlockingControl(control, arg, &LPUART17_NonBlockingDriverState);
6965     if (ARM_DRIVER_OK != result)
6966     {
6967         return result;
6968     }
6969 
6970     /* Enable the receive interrupts if ring buffer is used */
6971     if (LPUART17_NonBlockingDriverState.handle->rxRingBuffer != NULL)
6972     {
6973         LPUART_EnableInterrupts(
6974             LPUART17_NonBlockingDriverState.resource->base,
6975             (uint32_t)kLPUART_RxDataRegFullInterruptEnable | (uint32_t)kLPUART_RxOverrunInterruptEnable);
6976     }
6977 
6978     return ARM_DRIVER_OK;
6979 }
6980 
LPUART17_NonBlockingGetStatus(void)6981 static ARM_USART_STATUS LPUART17_NonBlockingGetStatus(void)
6982 {
6983     return LPUART_NonBlockingGetStatus(&LPUART17_NonBlockingDriverState);
6984 }
6985 
6986 #endif
6987 
6988 ARM_DRIVER_USART Driver_USART17 = {LPUARTx_GetVersion,      LPUARTx_GetCapabilities,
6989 #if defined(RTE_USART17_DMA_EN) && RTE_USART17_DMA_EN
6990 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
6991                                    LPUART17_EdmaInitialize, LPUART17_EdmaUninitialize, LPUART17_EdmaPowerControl,
6992                                    LPUART17_EdmaSend,       LPUART17_EdmaReceive,      LPUART17_EdmaTransfer,
6993                                    LPUART17_EdmaGetTxCount, LPUART17_EdmaGetRxCount,   LPUART17_EdmaControl,
6994                                    LPUART17_EdmaGetStatus,
6995 #else
6996                                    LPUART17_DmaInitialize,  LPUART17_DmaUninitialize, LPUART17_DmaPowerControl,
6997                                    LPUART17_DmaSend,        LPUART17_DmaReceive,      LPUART17_DmaTransfer,
6998                                    LPUART17_DmaGetTxCount,  LPUART17_DmaGetRxCount,   LPUART17_DmaControl,
6999                                    LPUART17_DmaGetStatus,
7000 #endif /* FSL_FEATURE_SOC_EDMA_COUNT */
7001 #else
7002                                   LPUART17_NonBlockingInitialize,
7003                                   LPUART17_NonBlockingUninitialize,
7004                                   LPUART17_NonBlockingPowerControl,
7005                                   LPUART17_NonBlockingSend,
7006                                   LPUART17_NonBlockingReceive,
7007                                   LPUART17_NonBlockingTransfer,
7008                                   LPUART17_NonBlockingGetTxCount,
7009                                   LPUART17_NonBlockingGetRxCount,
7010                                   LPUART17_NonBlockingControl,
7011                                   LPUART17_NonBlockingGetStatus,
7012 #endif /* RTE_USART17_DMA_EN */
7013                                    LPUARTx_SetModemControl, LPUARTx_GetModemStatus};
7014 
7015 #endif /* LPUART17 */
7016 
7017 #if defined(LPUART18) && defined(RTE_USART18) && RTE_USART18
7018 
7019 /* User needs to provide the implementation for LPUART18_GetFreq/InitPins/DeinitPins
7020 in the application for enabling according instance. */
7021 extern uint32_t LPUART18_GetFreq(void);
7022 
7023 static cmsis_lpuart_resource_t LPUART18_Resource = {LPUART18, LPUART18_GetFreq};
7024 
7025 #if defined(RTE_USART18_DMA_EN) && RTE_USART18_DMA_EN
7026 
7027 #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT)
7028 
7029 static cmsis_lpuart_dma_resource_t LPUART18_DmaResource = {
7030     RTE_USART18_DMA_TX_DMA_BASE,    RTE_USART18_DMA_TX_CH,          RTE_USART18_DMA_TX_PERI_SEL,
7031     RTE_USART18_DMA_RX_DMA_BASE,    RTE_USART18_DMA_RX_CH,          RTE_USART18_DMA_RX_PERI_SEL,
7032 
7033 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
7034     RTE_USART18_DMA_TX_DMAMUX_BASE, RTE_USART18_DMA_RX_DMAMUX_BASE,
7035 #endif
7036 #if FSL_FEATURE_DMA_MODULE_CHANNEL != FSL_FEATURE_DMAMUX_MODULE_CHANNEL
7037     RTE_USART18_DMAMUX_TX_CH,       RTE_USART18_DMAMUX_RX_CH
7038 #endif
7039 };
7040 
7041 static lpuart_dma_handle_t LPUART18_DmaHandle;
7042 static dma_handle_t LPUART18_DmaRxHandle;
7043 static dma_handle_t LPUART18_DmaTxHandle;
7044 
7045 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
7046 ARMCC_SECTION("lpuart18_dma_driver_state")
7047 static cmsis_lpuart_dma_driver_state_t LPUART18_DmaDriverState = {
7048 #else
7049 static cmsis_lpuart_dma_driver_state_t LPUART18_DmaDriverState = {
7050 #endif
7051     &LPUART18_Resource, &LPUART18_DmaResource, &LPUART18_DmaHandle, &LPUART18_DmaRxHandle, &LPUART18_DmaTxHandle,
7052 };
7053 
LPUART18_DmaInitialize(ARM_USART_SignalEvent_t cb_event)7054 static int32_t LPUART18_DmaInitialize(ARM_USART_SignalEvent_t cb_event)
7055 {
7056 #ifdef RTE_USART18_PIN_INIT
7057     RTE_USART18_PIN_INIT();
7058 #endif
7059     return LPUART_DmaInitialize(cb_event, &LPUART18_DmaDriverState);
7060 }
7061 
LPUART18_DmaUninitialize(void)7062 static int32_t LPUART18_DmaUninitialize(void)
7063 {
7064 #ifdef RTE_USART18_PIN_DEINIT
7065     RTE_USART18_PIN_DEINIT();
7066 #endif
7067     return LPUART_DmaUninitialize(&LPUART18_DmaDriverState);
7068 }
7069 
LPUART18_DmaPowerControl(ARM_POWER_STATE state)7070 static int32_t LPUART18_DmaPowerControl(ARM_POWER_STATE state)
7071 {
7072     return LPUART_DmaPowerControl(state, &LPUART18_DmaDriverState);
7073 }
7074 
LPUART18_DmaSend(const void * data,uint32_t num)7075 static int32_t LPUART18_DmaSend(const void *data, uint32_t num)
7076 {
7077     return LPUART_DmaSend(data, num, &LPUART18_DmaDriverState);
7078 }
7079 
LPUART18_DmaReceive(void * data,uint32_t num)7080 static int32_t LPUART18_DmaReceive(void *data, uint32_t num)
7081 {
7082     return LPUART_DmaReceive(data, num, &LPUART18_DmaDriverState);
7083 }
7084 
LPUART18_DmaTransfer(const void * data_out,void * data_in,uint32_t num)7085 static int32_t LPUART18_DmaTransfer(const void *data_out, void *data_in, uint32_t num)
7086 {
7087     return LPUART_DmaTransfer(data_out, data_in, num, &LPUART18_DmaDriverState);
7088 }
7089 
LPUART18_DmaGetTxCount(void)7090 static uint32_t LPUART18_DmaGetTxCount(void)
7091 {
7092     return LPUART_DmaGetTxCount(&LPUART18_DmaDriverState);
7093 }
7094 
LPUART18_DmaGetRxCount(void)7095 static uint32_t LPUART18_DmaGetRxCount(void)
7096 {
7097     return LPUART_DmaGetRxCount(&LPUART18_DmaDriverState);
7098 }
7099 
LPUART18_DmaControl(uint32_t control,uint32_t arg)7100 static int32_t LPUART18_DmaControl(uint32_t control, uint32_t arg)
7101 {
7102     return LPUART_DmaControl(control, arg, &LPUART18_DmaDriverState);
7103 }
7104 
LPUART18_DmaGetStatus(void)7105 static ARM_USART_STATUS LPUART18_DmaGetStatus(void)
7106 {
7107     return LPUART_DmaGetStatus(&LPUART18_DmaDriverState);
7108 }
7109 
7110 /* LPUART18 Driver Control Block */
7111 
7112 #endif
7113 
7114 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
7115 
7116 static cmsis_lpuart_edma_resource_t LPUART18_EdmaResource = {
7117     RTE_USART18_DMA_TX_DMA_BASE,    RTE_USART18_DMA_TX_CH,          RTE_USART18_DMA_TX_PERI_SEL,
7118     RTE_USART18_DMA_RX_DMA_BASE,    RTE_USART18_DMA_RX_CH,          RTE_USART18_DMA_RX_PERI_SEL,
7119 
7120 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
7121     RTE_USART18_DMA_TX_DMAMUX_BASE, RTE_USART18_DMA_RX_DMAMUX_BASE,
7122 #endif
7123 };
7124 
7125 static lpuart_edma_handle_t LPUART18_EdmaHandle;
7126 static edma_handle_t LPUART18_EdmaRxHandle;
7127 static edma_handle_t LPUART18_EdmaTxHandle;
7128 
7129 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
7130 ARMCC_SECTION("lpuart18_edma_driver_state")
7131 static cmsis_lpuart_edma_driver_state_t LPUART18_EdmaDriverState = {
7132 #else
7133 static cmsis_lpuart_edma_driver_state_t LPUART18_EdmaDriverState = {
7134 #endif
7135     &LPUART18_Resource, &LPUART18_EdmaResource, &LPUART18_EdmaHandle, &LPUART18_EdmaRxHandle, &LPUART18_EdmaTxHandle,
7136 };
7137 
LPUART18_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)7138 static int32_t LPUART18_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)
7139 {
7140 #ifdef RTE_USART18_PIN_INIT
7141     RTE_USART18_PIN_INIT();
7142 #endif
7143     return LPUART_EdmaInitialize(cb_event, &LPUART18_EdmaDriverState);
7144 }
7145 
LPUART18_EdmaUninitialize(void)7146 static int32_t LPUART18_EdmaUninitialize(void)
7147 {
7148 #ifdef RTE_USART18_PIN_DEINIT
7149     RTE_USART18_PIN_DEINIT();
7150 #endif
7151     return LPUART_EdmaUninitialize(&LPUART18_EdmaDriverState);
7152 }
7153 
LPUART18_EdmaPowerControl(ARM_POWER_STATE state)7154 static int32_t LPUART18_EdmaPowerControl(ARM_POWER_STATE state)
7155 {
7156     return LPUART_EdmaPowerControl(state, &LPUART18_EdmaDriverState);
7157 }
7158 
LPUART18_EdmaSend(const void * data,uint32_t num)7159 static int32_t LPUART18_EdmaSend(const void *data, uint32_t num)
7160 {
7161     return LPUART_EdmaSend(data, num, &LPUART18_EdmaDriverState);
7162 }
7163 
LPUART18_EdmaReceive(void * data,uint32_t num)7164 static int32_t LPUART18_EdmaReceive(void *data, uint32_t num)
7165 {
7166     return LPUART_EdmaReceive(data, num, &LPUART18_EdmaDriverState);
7167 }
7168 
LPUART18_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)7169 static int32_t LPUART18_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
7170 {
7171     return LPUART_EdmaTransfer(data_out, data_in, num, &LPUART18_EdmaDriverState);
7172 }
7173 
LPUART18_EdmaGetTxCount(void)7174 static uint32_t LPUART18_EdmaGetTxCount(void)
7175 {
7176     return LPUART_EdmaGetTxCount(&LPUART18_EdmaDriverState);
7177 }
7178 
LPUART18_EdmaGetRxCount(void)7179 static uint32_t LPUART18_EdmaGetRxCount(void)
7180 {
7181     return LPUART_EdmaGetRxCount(&LPUART18_EdmaDriverState);
7182 }
7183 
LPUART18_EdmaControl(uint32_t control,uint32_t arg)7184 static int32_t LPUART18_EdmaControl(uint32_t control, uint32_t arg)
7185 {
7186     return LPUART_EdmaControl(control, arg, &LPUART18_EdmaDriverState);
7187 }
7188 
LPUART18_EdmaGetStatus(void)7189 static ARM_USART_STATUS LPUART18_EdmaGetStatus(void)
7190 {
7191     return LPUART_EdmaGetStatus(&LPUART18_EdmaDriverState);
7192 }
7193 
7194 #endif
7195 
7196 #else
7197 
7198 static lpuart_handle_t LPUART18_Handle;
7199 
7200 #if defined(USART18_RX_BUFFER_ENABLE) && (USART18_RX_BUFFER_ENABLE == 1)
7201 static uint8_t lpuart18_rxRingBuffer[USART_RX_BUFFER_LEN];
7202 #endif
7203 
7204 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
7205 ARMCC_SECTION("lpuart18_non_blocking_driver_state")
7206 static cmsis_lpuart_non_blocking_driver_state_t LPUART18_NonBlockingDriverState = {
7207 #else
7208 static cmsis_lpuart_non_blocking_driver_state_t LPUART18_NonBlockingDriverState = {
7209 #endif
7210     &LPUART18_Resource,
7211     &LPUART18_Handle,
7212 };
7213 
LPUART18_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)7214 static int32_t LPUART18_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)
7215 {
7216 #ifdef RTE_USART18_PIN_INIT
7217     RTE_USART18_PIN_INIT();
7218 #endif
7219     return LPUART_NonBlockingInitialize(cb_event, &LPUART18_NonBlockingDriverState);
7220 }
7221 
LPUART18_NonBlockingUninitialize(void)7222 static int32_t LPUART18_NonBlockingUninitialize(void)
7223 {
7224 #ifdef RTE_USART18_PIN_DEINIT
7225     RTE_USART18_PIN_DEINIT();
7226 #endif
7227     return LPUART_NonBlockingUninitialize(&LPUART18_NonBlockingDriverState);
7228 }
7229 
LPUART18_NonBlockingPowerControl(ARM_POWER_STATE state)7230 static int32_t LPUART18_NonBlockingPowerControl(ARM_POWER_STATE state)
7231 {
7232     int32_t result;
7233 
7234     result = LPUART_NonBlockingPowerControl(state, &LPUART18_NonBlockingDriverState);
7235 
7236 #if defined(USART18_RX_BUFFER_ENABLE) && (USART18_RX_BUFFER_ENABLE == 1)
7237     if ((state == ARM_POWER_FULL) && (LPUART18_NonBlockingDriverState.handle->rxRingBuffer == NULL))
7238     {
7239         LPUART_TransferStartRingBuffer(LPUART18_NonBlockingDriverState.resource->base,
7240                                        LPUART18_NonBlockingDriverState.handle, lpuart18_rxRingBuffer,
7241                                        USART_RX_BUFFER_LEN);
7242     }
7243 #endif
7244 
7245     return result;
7246 }
7247 
LPUART18_NonBlockingSend(const void * data,uint32_t num)7248 static int32_t LPUART18_NonBlockingSend(const void *data, uint32_t num)
7249 {
7250     return LPUART_NonBlockingSend(data, num, &LPUART18_NonBlockingDriverState);
7251 }
7252 
LPUART18_NonBlockingReceive(void * data,uint32_t num)7253 static int32_t LPUART18_NonBlockingReceive(void *data, uint32_t num)
7254 {
7255     return LPUART_NonBlockingReceive(data, num, &LPUART18_NonBlockingDriverState);
7256 }
7257 
LPUART18_NonBlockingTransfer(const void * data_out,void * data_in,uint32_t num)7258 static int32_t LPUART18_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num)
7259 {
7260     return LPUART_NonBlockingTransfer(data_out, data_in, num, &LPUART18_NonBlockingDriverState);
7261 }
7262 
LPUART18_NonBlockingGetTxCount(void)7263 static uint32_t LPUART18_NonBlockingGetTxCount(void)
7264 {
7265     return LPUART_NonBlockingGetTxCount(&LPUART18_NonBlockingDriverState);
7266 }
7267 
LPUART18_NonBlockingGetRxCount(void)7268 static uint32_t LPUART18_NonBlockingGetRxCount(void)
7269 {
7270     return LPUART_NonBlockingGetRxCount(&LPUART18_NonBlockingDriverState);
7271 }
7272 
LPUART18_NonBlockingControl(uint32_t control,uint32_t arg)7273 static int32_t LPUART18_NonBlockingControl(uint32_t control, uint32_t arg)
7274 {
7275     int32_t result;
7276 
7277     result = LPUART_NonBlockingControl(control, arg, &LPUART18_NonBlockingDriverState);
7278     if (ARM_DRIVER_OK != result)
7279     {
7280         return result;
7281     }
7282 
7283     /* Enable the receive interrupts if ring buffer is used */
7284     if (LPUART18_NonBlockingDriverState.handle->rxRingBuffer != NULL)
7285     {
7286         LPUART_EnableInterrupts(
7287             LPUART18_NonBlockingDriverState.resource->base,
7288             (uint32_t)kLPUART_RxDataRegFullInterruptEnable | (uint32_t)kLPUART_RxOverrunInterruptEnable);
7289     }
7290 
7291     return ARM_DRIVER_OK;
7292 }
7293 
LPUART18_NonBlockingGetStatus(void)7294 static ARM_USART_STATUS LPUART18_NonBlockingGetStatus(void)
7295 {
7296     return LPUART_NonBlockingGetStatus(&LPUART18_NonBlockingDriverState);
7297 }
7298 
7299 #endif
7300 
7301 ARM_DRIVER_USART Driver_USART18 = {LPUARTx_GetVersion,      LPUARTx_GetCapabilities,
7302 #if defined(RTE_USART18_DMA_EN) && RTE_USART18_DMA_EN
7303 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
7304                                    LPUART18_EdmaInitialize, LPUART18_EdmaUninitialize, LPUART18_EdmaPowerControl,
7305                                    LPUART18_EdmaSend,       LPUART18_EdmaReceive,      LPUART18_EdmaTransfer,
7306                                    LPUART18_EdmaGetTxCount, LPUART18_EdmaGetRxCount,   LPUART18_EdmaControl,
7307                                    LPUART18_EdmaGetStatus,
7308 #else
7309                                    LPUART18_DmaInitialize,  LPUART18_DmaUninitialize, LPUART18_DmaPowerControl,
7310                                    LPUART18_DmaSend,        LPUART18_DmaReceive,      LPUART18_DmaTransfer,
7311                                    LPUART18_DmaGetTxCount,  LPUART18_DmaGetRxCount,   LPUART18_DmaControl,
7312                                    LPUART18_DmaGetStatus,
7313 #endif /* FSL_FEATURE_SOC_EDMA_COUNT */
7314 #else
7315                                   LPUART18_NonBlockingInitialize,
7316                                   LPUART18_NonBlockingUninitialize,
7317                                   LPUART18_NonBlockingPowerControl,
7318                                   LPUART18_NonBlockingSend,
7319                                   LPUART18_NonBlockingReceive,
7320                                   LPUART18_NonBlockingTransfer,
7321                                   LPUART18_NonBlockingGetTxCount,
7322                                   LPUART18_NonBlockingGetRxCount,
7323                                   LPUART18_NonBlockingControl,
7324                                   LPUART18_NonBlockingGetStatus,
7325 #endif /* RTE_USART18_DMA_EN */
7326                                    LPUARTx_SetModemControl, LPUARTx_GetModemStatus};
7327 
7328 #endif /* LPUART18 */
7329 
7330 #if defined(LPUART19) && defined(RTE_USART19) && RTE_USART19
7331 
7332 /* User needs to provide the implementation for LPUART19_GetFreq/InitPins/DeinitPins
7333 in the application for enabling according instance. */
7334 extern uint32_t LPUART19_GetFreq(void);
7335 
7336 static cmsis_lpuart_resource_t LPUART19_Resource = {LPUART19, LPUART19_GetFreq};
7337 
7338 #if defined(RTE_USART19_DMA_EN) && RTE_USART19_DMA_EN
7339 
7340 #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT)
7341 
7342 static cmsis_lpuart_dma_resource_t LPUART19_DmaResource = {
7343     RTE_USART19_DMA_TX_DMA_BASE,    RTE_USART19_DMA_TX_CH,          RTE_USART19_DMA_TX_PERI_SEL,
7344     RTE_USART19_DMA_RX_DMA_BASE,    RTE_USART19_DMA_RX_CH,          RTE_USART19_DMA_RX_PERI_SEL,
7345 
7346 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
7347     RTE_USART19_DMA_TX_DMAMUX_BASE, RTE_USART19_DMA_RX_DMAMUX_BASE,
7348 #endif
7349 #if FSL_FEATURE_DMA_MODULE_CHANNEL != FSL_FEATURE_DMAMUX_MODULE_CHANNEL
7350     RTE_USART19_DMAMUX_TX_CH,       RTE_USART19_DMAMUX_RX_CH
7351 #endif
7352 };
7353 
7354 static lpuart_dma_handle_t LPUART19_DmaHandle;
7355 static dma_handle_t LPUART19_DmaRxHandle;
7356 static dma_handle_t LPUART19_DmaTxHandle;
7357 
7358 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
7359 ARMCC_SECTION("lpuart19_dma_driver_state")
7360 static cmsis_lpuart_dma_driver_state_t LPUART19_DmaDriverState = {
7361 #else
7362 static cmsis_lpuart_dma_driver_state_t LPUART19_DmaDriverState = {
7363 #endif
7364     &LPUART19_Resource, &LPUART19_DmaResource, &LPUART19_DmaHandle, &LPUART19_DmaRxHandle, &LPUART19_DmaTxHandle,
7365 };
7366 
LPUART19_DmaInitialize(ARM_USART_SignalEvent_t cb_event)7367 static int32_t LPUART19_DmaInitialize(ARM_USART_SignalEvent_t cb_event)
7368 {
7369 #ifdef RTE_USART19_PIN_INIT
7370     RTE_USART19_PIN_INIT();
7371 #endif
7372     return LPUART_DmaInitialize(cb_event, &LPUART19_DmaDriverState);
7373 }
7374 
LPUART19_DmaUninitialize(void)7375 static int32_t LPUART19_DmaUninitialize(void)
7376 {
7377 #ifdef RTE_USART19_PIN_DEINIT
7378     RTE_USART19_PIN_DEINIT();
7379 #endif
7380     return LPUART_DmaUninitialize(&LPUART19_DmaDriverState);
7381 }
7382 
LPUART19_DmaPowerControl(ARM_POWER_STATE state)7383 static int32_t LPUART19_DmaPowerControl(ARM_POWER_STATE state)
7384 {
7385     return LPUART_DmaPowerControl(state, &LPUART19_DmaDriverState);
7386 }
7387 
LPUART19_DmaSend(const void * data,uint32_t num)7388 static int32_t LPUART19_DmaSend(const void *data, uint32_t num)
7389 {
7390     return LPUART_DmaSend(data, num, &LPUART19_DmaDriverState);
7391 }
7392 
LPUART19_DmaReceive(void * data,uint32_t num)7393 static int32_t LPUART19_DmaReceive(void *data, uint32_t num)
7394 {
7395     return LPUART_DmaReceive(data, num, &LPUART19_DmaDriverState);
7396 }
7397 
LPUART19_DmaTransfer(const void * data_out,void * data_in,uint32_t num)7398 static int32_t LPUART19_DmaTransfer(const void *data_out, void *data_in, uint32_t num)
7399 {
7400     return LPUART_DmaTransfer(data_out, data_in, num, &LPUART19_DmaDriverState);
7401 }
7402 
LPUART19_DmaGetTxCount(void)7403 static uint32_t LPUART19_DmaGetTxCount(void)
7404 {
7405     return LPUART_DmaGetTxCount(&LPUART19_DmaDriverState);
7406 }
7407 
LPUART19_DmaGetRxCount(void)7408 static uint32_t LPUART19_DmaGetRxCount(void)
7409 {
7410     return LPUART_DmaGetRxCount(&LPUART19_DmaDriverState);
7411 }
7412 
LPUART19_DmaControl(uint32_t control,uint32_t arg)7413 static int32_t LPUART19_DmaControl(uint32_t control, uint32_t arg)
7414 {
7415     return LPUART_DmaControl(control, arg, &LPUART19_DmaDriverState);
7416 }
7417 
LPUART19_DmaGetStatus(void)7418 static ARM_USART_STATUS LPUART19_DmaGetStatus(void)
7419 {
7420     return LPUART_DmaGetStatus(&LPUART19_DmaDriverState);
7421 }
7422 
7423 /* LPUART19 Driver Control Block */
7424 
7425 #endif
7426 
7427 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
7428 
7429 static cmsis_lpuart_edma_resource_t LPUART19_EdmaResource = {
7430     RTE_USART19_DMA_TX_DMA_BASE,    RTE_USART19_DMA_TX_CH,          RTE_USART19_DMA_TX_PERI_SEL,
7431     RTE_USART19_DMA_RX_DMA_BASE,    RTE_USART19_DMA_RX_CH,          RTE_USART19_DMA_RX_PERI_SEL,
7432 
7433 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
7434     RTE_USART19_DMA_TX_DMAMUX_BASE, RTE_USART19_DMA_RX_DMAMUX_BASE,
7435 #endif
7436 };
7437 
7438 static lpuart_edma_handle_t LPUART19_EdmaHandle;
7439 static edma_handle_t LPUART19_EdmaRxHandle;
7440 static edma_handle_t LPUART19_EdmaTxHandle;
7441 
7442 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
7443 ARMCC_SECTION("lpuart19_edma_driver_state")
7444 static cmsis_lpuart_edma_driver_state_t LPUART19_EdmaDriverState = {
7445 #else
7446 static cmsis_lpuart_edma_driver_state_t LPUART19_EdmaDriverState = {
7447 #endif
7448     &LPUART19_Resource, &LPUART19_EdmaResource, &LPUART19_EdmaHandle, &LPUART19_EdmaRxHandle, &LPUART19_EdmaTxHandle,
7449 };
7450 
LPUART19_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)7451 static int32_t LPUART19_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)
7452 {
7453 #ifdef RTE_USART19_PIN_INIT
7454     RTE_USART19_PIN_INIT();
7455 #endif
7456     return LPUART_EdmaInitialize(cb_event, &LPUART19_EdmaDriverState);
7457 }
7458 
LPUART19_EdmaUninitialize(void)7459 static int32_t LPUART19_EdmaUninitialize(void)
7460 {
7461 #ifdef RTE_USART19_PIN_DEINIT
7462     RTE_USART19_PIN_DEINIT();
7463 #endif
7464     return LPUART_EdmaUninitialize(&LPUART19_EdmaDriverState);
7465 }
7466 
LPUART19_EdmaPowerControl(ARM_POWER_STATE state)7467 static int32_t LPUART19_EdmaPowerControl(ARM_POWER_STATE state)
7468 {
7469     return LPUART_EdmaPowerControl(state, &LPUART19_EdmaDriverState);
7470 }
7471 
LPUART19_EdmaSend(const void * data,uint32_t num)7472 static int32_t LPUART19_EdmaSend(const void *data, uint32_t num)
7473 {
7474     return LPUART_EdmaSend(data, num, &LPUART19_EdmaDriverState);
7475 }
7476 
LPUART19_EdmaReceive(void * data,uint32_t num)7477 static int32_t LPUART19_EdmaReceive(void *data, uint32_t num)
7478 {
7479     return LPUART_EdmaReceive(data, num, &LPUART19_EdmaDriverState);
7480 }
7481 
LPUART19_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)7482 static int32_t LPUART19_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
7483 {
7484     return LPUART_EdmaTransfer(data_out, data_in, num, &LPUART19_EdmaDriverState);
7485 }
7486 
LPUART19_EdmaGetTxCount(void)7487 static uint32_t LPUART19_EdmaGetTxCount(void)
7488 {
7489     return LPUART_EdmaGetTxCount(&LPUART19_EdmaDriverState);
7490 }
7491 
LPUART19_EdmaGetRxCount(void)7492 static uint32_t LPUART19_EdmaGetRxCount(void)
7493 {
7494     return LPUART_EdmaGetRxCount(&LPUART19_EdmaDriverState);
7495 }
7496 
LPUART19_EdmaControl(uint32_t control,uint32_t arg)7497 static int32_t LPUART19_EdmaControl(uint32_t control, uint32_t arg)
7498 {
7499     return LPUART_EdmaControl(control, arg, &LPUART19_EdmaDriverState);
7500 }
7501 
LPUART19_EdmaGetStatus(void)7502 static ARM_USART_STATUS LPUART19_EdmaGetStatus(void)
7503 {
7504     return LPUART_EdmaGetStatus(&LPUART19_EdmaDriverState);
7505 }
7506 
7507 #endif
7508 
7509 #else
7510 
7511 static lpuart_handle_t LPUART19_Handle;
7512 
7513 #if defined(USART19_RX_BUFFER_ENABLE) && (USART19_RX_BUFFER_ENABLE == 1)
7514 static uint8_t lpuart19_rxRingBuffer[USART_RX_BUFFER_LEN];
7515 #endif
7516 
7517 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
7518 ARMCC_SECTION("lpuart19_non_blocking_driver_state")
7519 static cmsis_lpuart_non_blocking_driver_state_t LPUART19_NonBlockingDriverState = {
7520 #else
7521 static cmsis_lpuart_non_blocking_driver_state_t LPUART19_NonBlockingDriverState = {
7522 #endif
7523     &LPUART19_Resource,
7524     &LPUART19_Handle,
7525 };
7526 
LPUART19_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)7527 static int32_t LPUART19_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)
7528 {
7529 #ifdef RTE_USART19_PIN_INIT
7530     RTE_USART19_PIN_INIT();
7531 #endif
7532     return LPUART_NonBlockingInitialize(cb_event, &LPUART19_NonBlockingDriverState);
7533 }
7534 
LPUART19_NonBlockingUninitialize(void)7535 static int32_t LPUART19_NonBlockingUninitialize(void)
7536 {
7537 #ifdef RTE_USART19_PIN_DEINIT
7538     RTE_USART19_PIN_DEINIT();
7539 #endif
7540     return LPUART_NonBlockingUninitialize(&LPUART19_NonBlockingDriverState);
7541 }
7542 
LPUART19_NonBlockingPowerControl(ARM_POWER_STATE state)7543 static int32_t LPUART19_NonBlockingPowerControl(ARM_POWER_STATE state)
7544 {
7545     int32_t result;
7546 
7547     result = LPUART_NonBlockingPowerControl(state, &LPUART19_NonBlockingDriverState);
7548 
7549 #if defined(USART19_RX_BUFFER_ENABLE) && (USART19_RX_BUFFER_ENABLE == 1)
7550     if ((state == ARM_POWER_FULL) && (LPUART19_NonBlockingDriverState.handle->rxRingBuffer == NULL))
7551     {
7552         LPUART_TransferStartRingBuffer(LPUART19_NonBlockingDriverState.resource->base,
7553                                        LPUART19_NonBlockingDriverState.handle, lpuart19_rxRingBuffer,
7554                                        USART_RX_BUFFER_LEN);
7555     }
7556 #endif
7557 
7558     return result;
7559 }
7560 
LPUART19_NonBlockingSend(const void * data,uint32_t num)7561 static int32_t LPUART19_NonBlockingSend(const void *data, uint32_t num)
7562 {
7563     return LPUART_NonBlockingSend(data, num, &LPUART19_NonBlockingDriverState);
7564 }
7565 
LPUART19_NonBlockingReceive(void * data,uint32_t num)7566 static int32_t LPUART19_NonBlockingReceive(void *data, uint32_t num)
7567 {
7568     return LPUART_NonBlockingReceive(data, num, &LPUART19_NonBlockingDriverState);
7569 }
7570 
LPUART19_NonBlockingTransfer(const void * data_out,void * data_in,uint32_t num)7571 static int32_t LPUART19_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num)
7572 {
7573     return LPUART_NonBlockingTransfer(data_out, data_in, num, &LPUART19_NonBlockingDriverState);
7574 }
7575 
LPUART19_NonBlockingGetTxCount(void)7576 static uint32_t LPUART19_NonBlockingGetTxCount(void)
7577 {
7578     return LPUART_NonBlockingGetTxCount(&LPUART19_NonBlockingDriverState);
7579 }
7580 
LPUART19_NonBlockingGetRxCount(void)7581 static uint32_t LPUART19_NonBlockingGetRxCount(void)
7582 {
7583     return LPUART_NonBlockingGetRxCount(&LPUART19_NonBlockingDriverState);
7584 }
7585 
LPUART19_NonBlockingControl(uint32_t control,uint32_t arg)7586 static int32_t LPUART19_NonBlockingControl(uint32_t control, uint32_t arg)
7587 {
7588     int32_t result;
7589 
7590     result = LPUART_NonBlockingControl(control, arg, &LPUART19_NonBlockingDriverState);
7591     if (ARM_DRIVER_OK != result)
7592     {
7593         return result;
7594     }
7595 
7596     /* Enable the receive interrupts if ring buffer is used */
7597     if (LPUART19_NonBlockingDriverState.handle->rxRingBuffer != NULL)
7598     {
7599         LPUART_EnableInterrupts(
7600             LPUART19_NonBlockingDriverState.resource->base,
7601             (uint32_t)kLPUART_RxDataRegFullInterruptEnable | (uint32_t)kLPUART_RxOverrunInterruptEnable);
7602     }
7603 
7604     return ARM_DRIVER_OK;
7605 }
7606 
LPUART19_NonBlockingGetStatus(void)7607 static ARM_USART_STATUS LPUART19_NonBlockingGetStatus(void)
7608 {
7609     return LPUART_NonBlockingGetStatus(&LPUART19_NonBlockingDriverState);
7610 }
7611 
7612 #endif
7613 
7614 ARM_DRIVER_USART Driver_USART19 = {LPUARTx_GetVersion,      LPUARTx_GetCapabilities,
7615 #if defined(RTE_USART19_DMA_EN) && RTE_USART19_DMA_EN
7616 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
7617                                    LPUART19_EdmaInitialize, LPUART19_EdmaUninitialize, LPUART19_EdmaPowerControl,
7618                                    LPUART19_EdmaSend,       LPUART19_EdmaReceive,      LPUART19_EdmaTransfer,
7619                                    LPUART19_EdmaGetTxCount, LPUART19_EdmaGetRxCount,   LPUART19_EdmaControl,
7620                                    LPUART19_EdmaGetStatus,
7621 #else
7622                                    LPUART19_DmaInitialize,  LPUART19_DmaUninitialize, LPUART19_DmaPowerControl,
7623                                    LPUART19_DmaSend,        LPUART19_DmaReceive,      LPUART19_DmaTransfer,
7624                                    LPUART19_DmaGetTxCount,  LPUART19_DmaGetRxCount,   LPUART19_DmaControl,
7625                                    LPUART19_DmaGetStatus,
7626 #endif /* FSL_FEATURE_SOC_EDMA_COUNT */
7627 #else
7628                                   LPUART19_NonBlockingInitialize,
7629                                   LPUART19_NonBlockingUninitialize,
7630                                   LPUART19_NonBlockingPowerControl,
7631                                   LPUART19_NonBlockingSend,
7632                                   LPUART19_NonBlockingReceive,
7633                                   LPUART19_NonBlockingTransfer,
7634                                   LPUART19_NonBlockingGetTxCount,
7635                                   LPUART19_NonBlockingGetRxCount,
7636                                   LPUART19_NonBlockingControl,
7637                                   LPUART19_NonBlockingGetStatus,
7638 #endif /* RTE_USART19_DMA_EN */
7639                                    LPUARTx_SetModemControl, LPUARTx_GetModemStatus};
7640 
7641 #endif /* LPUART19 */
7642 
7643 #if defined(LPUART20) && defined(RTE_USART20) && RTE_USART20
7644 
7645 /* User needs to provide the implementation for LPUART20_GetFreq/InitPins/DeinitPins
7646 in the application for enabling according instance. */
7647 extern uint32_t LPUART20_GetFreq(void);
7648 
7649 static cmsis_lpuart_resource_t LPUART20_Resource = {LPUART20, LPUART20_GetFreq};
7650 
7651 #if defined(RTE_USART20_DMA_EN) && RTE_USART20_DMA_EN
7652 
7653 #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT)
7654 
7655 static cmsis_lpuart_dma_resource_t LPUART20_DmaResource = {
7656     RTE_USART20_DMA_TX_DMA_BASE,    RTE_USART20_DMA_TX_CH,          RTE_USART20_DMA_TX_PERI_SEL,
7657     RTE_USART20_DMA_RX_DMA_BASE,    RTE_USART20_DMA_RX_CH,          RTE_USART20_DMA_RX_PERI_SEL,
7658 
7659 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
7660     RTE_USART20_DMA_TX_DMAMUX_BASE, RTE_USART20_DMA_RX_DMAMUX_BASE,
7661 #endif
7662 #if FSL_FEATURE_DMA_MODULE_CHANNEL != FSL_FEATURE_DMAMUX_MODULE_CHANNEL
7663     RTE_USART20_DMAMUX_TX_CH,       RTE_USART20_DMAMUX_RX_CH
7664 #endif
7665 };
7666 
7667 static lpuart_dma_handle_t LPUART20_DmaHandle;
7668 static dma_handle_t LPUART20_DmaRxHandle;
7669 static dma_handle_t LPUART20_DmaTxHandle;
7670 
7671 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
7672 ARMCC_SECTION("lpuart20_dma_driver_state")
7673 static cmsis_lpuart_dma_driver_state_t LPUART20_DmaDriverState = {
7674 #else
7675 static cmsis_lpuart_dma_driver_state_t LPUART20_DmaDriverState = {
7676 #endif
7677     &LPUART20_Resource, &LPUART20_DmaResource, &LPUART20_DmaHandle, &LPUART20_DmaRxHandle, &LPUART20_DmaTxHandle,
7678 };
7679 
LPUART20_DmaInitialize(ARM_USART_SignalEvent_t cb_event)7680 static int32_t LPUART20_DmaInitialize(ARM_USART_SignalEvent_t cb_event)
7681 {
7682 #ifdef RTE_USART20_PIN_INIT
7683     RTE_USART20_PIN_INIT();
7684 #endif
7685     return LPUART_DmaInitialize(cb_event, &LPUART20_DmaDriverState);
7686 }
7687 
LPUART20_DmaUninitialize(void)7688 static int32_t LPUART20_DmaUninitialize(void)
7689 {
7690 #ifdef RTE_USART20_PIN_DEINIT
7691     RTE_USART20_PIN_DEINIT();
7692 #endif
7693     return LPUART_DmaUninitialize(&LPUART20_DmaDriverState);
7694 }
7695 
LPUART20_DmaPowerControl(ARM_POWER_STATE state)7696 static int32_t LPUART20_DmaPowerControl(ARM_POWER_STATE state)
7697 {
7698     return LPUART_DmaPowerControl(state, &LPUART20_DmaDriverState);
7699 }
7700 
LPUART20_DmaSend(const void * data,uint32_t num)7701 static int32_t LPUART20_DmaSend(const void *data, uint32_t num)
7702 {
7703     return LPUART_DmaSend(data, num, &LPUART20_DmaDriverState);
7704 }
7705 
LPUART20_DmaReceive(void * data,uint32_t num)7706 static int32_t LPUART20_DmaReceive(void *data, uint32_t num)
7707 {
7708     return LPUART_DmaReceive(data, num, &LPUART20_DmaDriverState);
7709 }
7710 
LPUART20_DmaTransfer(const void * data_out,void * data_in,uint32_t num)7711 static int32_t LPUART20_DmaTransfer(const void *data_out, void *data_in, uint32_t num)
7712 {
7713     return LPUART_DmaTransfer(data_out, data_in, num, &LPUART20_DmaDriverState);
7714 }
7715 
LPUART20_DmaGetTxCount(void)7716 static uint32_t LPUART20_DmaGetTxCount(void)
7717 {
7718     return LPUART_DmaGetTxCount(&LPUART20_DmaDriverState);
7719 }
7720 
LPUART20_DmaGetRxCount(void)7721 static uint32_t LPUART20_DmaGetRxCount(void)
7722 {
7723     return LPUART_DmaGetRxCount(&LPUART20_DmaDriverState);
7724 }
7725 
LPUART20_DmaControl(uint32_t control,uint32_t arg)7726 static int32_t LPUART20_DmaControl(uint32_t control, uint32_t arg)
7727 {
7728     return LPUART_DmaControl(control, arg, &LPUART20_DmaDriverState);
7729 }
7730 
LPUART20_DmaGetStatus(void)7731 static ARM_USART_STATUS LPUART20_DmaGetStatus(void)
7732 {
7733     return LPUART_DmaGetStatus(&LPUART20_DmaDriverState);
7734 }
7735 
7736 /* LPUART20 Driver Control Block */
7737 
7738 #endif
7739 
7740 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
7741 
7742 static cmsis_lpuart_edma_resource_t LPUART20_EdmaResource = {
7743     RTE_USART20_DMA_TX_DMA_BASE,    RTE_USART20_DMA_TX_CH,          RTE_USART20_DMA_TX_PERI_SEL,
7744     RTE_USART20_DMA_RX_DMA_BASE,    RTE_USART20_DMA_RX_CH,          RTE_USART20_DMA_RX_PERI_SEL,
7745 
7746 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
7747     RTE_USART20_DMA_TX_DMAMUX_BASE, RTE_USART20_DMA_RX_DMAMUX_BASE,
7748 #endif
7749 };
7750 
7751 static lpuart_edma_handle_t LPUART20_EdmaHandle;
7752 static edma_handle_t LPUART20_EdmaRxHandle;
7753 static edma_handle_t LPUART20_EdmaTxHandle;
7754 
7755 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
7756 ARMCC_SECTION("lpuart20_edma_driver_state")
7757 static cmsis_lpuart_edma_driver_state_t LPUART20_EdmaDriverState = {
7758 #else
7759 static cmsis_lpuart_edma_driver_state_t LPUART20_EdmaDriverState = {
7760 #endif
7761     &LPUART20_Resource, &LPUART20_EdmaResource, &LPUART20_EdmaHandle, &LPUART20_EdmaRxHandle, &LPUART20_EdmaTxHandle,
7762 };
7763 
LPUART20_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)7764 static int32_t LPUART20_EdmaInitialize(ARM_USART_SignalEvent_t cb_event)
7765 {
7766 #ifdef RTE_USART20_PIN_INIT
7767     RTE_USART20_PIN_INIT();
7768 #endif
7769     return LPUART_EdmaInitialize(cb_event, &LPUART20_EdmaDriverState);
7770 }
7771 
LPUART20_EdmaUninitialize(void)7772 static int32_t LPUART20_EdmaUninitialize(void)
7773 {
7774 #ifdef RTE_USART20_PIN_DEINIT
7775     RTE_USART20_PIN_DEINIT();
7776 #endif
7777     return LPUART_EdmaUninitialize(&LPUART20_EdmaDriverState);
7778 }
7779 
LPUART20_EdmaPowerControl(ARM_POWER_STATE state)7780 static int32_t LPUART20_EdmaPowerControl(ARM_POWER_STATE state)
7781 {
7782     return LPUART_EdmaPowerControl(state, &LPUART20_EdmaDriverState);
7783 }
7784 
LPUART20_EdmaSend(const void * data,uint32_t num)7785 static int32_t LPUART20_EdmaSend(const void *data, uint32_t num)
7786 {
7787     return LPUART_EdmaSend(data, num, &LPUART20_EdmaDriverState);
7788 }
7789 
LPUART20_EdmaReceive(void * data,uint32_t num)7790 static int32_t LPUART20_EdmaReceive(void *data, uint32_t num)
7791 {
7792     return LPUART_EdmaReceive(data, num, &LPUART20_EdmaDriverState);
7793 }
7794 
LPUART20_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)7795 static int32_t LPUART20_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
7796 {
7797     return LPUART_EdmaTransfer(data_out, data_in, num, &LPUART20_EdmaDriverState);
7798 }
7799 
LPUART20_EdmaGetTxCount(void)7800 static uint32_t LPUART20_EdmaGetTxCount(void)
7801 {
7802     return LPUART_EdmaGetTxCount(&LPUART20_EdmaDriverState);
7803 }
7804 
LPUART20_EdmaGetRxCount(void)7805 static uint32_t LPUART20_EdmaGetRxCount(void)
7806 {
7807     return LPUART_EdmaGetRxCount(&LPUART20_EdmaDriverState);
7808 }
7809 
LPUART20_EdmaControl(uint32_t control,uint32_t arg)7810 static int32_t LPUART20_EdmaControl(uint32_t control, uint32_t arg)
7811 {
7812     return LPUART_EdmaControl(control, arg, &LPUART20_EdmaDriverState);
7813 }
7814 
LPUART20_EdmaGetStatus(void)7815 static ARM_USART_STATUS LPUART20_EdmaGetStatus(void)
7816 {
7817     return LPUART_EdmaGetStatus(&LPUART20_EdmaDriverState);
7818 }
7819 
7820 #endif
7821 
7822 #else
7823 
7824 static lpuart_handle_t LPUART20_Handle;
7825 
7826 #if defined(USART20_RX_BUFFER_ENABLE) && (USART20_RX_BUFFER_ENABLE == 1)
7827 static uint8_t lpuart20_rxRingBuffer[USART_RX_BUFFER_LEN];
7828 #endif
7829 
7830 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
7831 ARMCC_SECTION("lpuart20_non_blocking_driver_state")
7832 static cmsis_lpuart_non_blocking_driver_state_t LPUART20_NonBlockingDriverState = {
7833 #else
7834 static cmsis_lpuart_non_blocking_driver_state_t LPUART20_NonBlockingDriverState = {
7835 #endif
7836     &LPUART20_Resource,
7837     &LPUART20_Handle,
7838 };
7839 
LPUART20_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)7840 static int32_t LPUART20_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event)
7841 {
7842 #ifdef RTE_USART20_PIN_INIT
7843     RTE_USART20_PIN_INIT();
7844 #endif
7845     return LPUART_NonBlockingInitialize(cb_event, &LPUART20_NonBlockingDriverState);
7846 }
7847 
LPUART20_NonBlockingUninitialize(void)7848 static int32_t LPUART20_NonBlockingUninitialize(void)
7849 {
7850 #ifdef RTE_USART20_PIN_DEINIT
7851     RTE_USART20_PIN_DEINIT();
7852 #endif
7853     return LPUART_NonBlockingUninitialize(&LPUART20_NonBlockingDriverState);
7854 }
7855 
LPUART20_NonBlockingPowerControl(ARM_POWER_STATE state)7856 static int32_t LPUART20_NonBlockingPowerControl(ARM_POWER_STATE state)
7857 {
7858     int32_t result;
7859 
7860     result = LPUART_NonBlockingPowerControl(state, &LPUART20_NonBlockingDriverState);
7861 
7862 #if defined(USART20_RX_BUFFER_ENABLE) && (USART20_RX_BUFFER_ENABLE == 1)
7863     if ((state == ARM_POWER_FULL) && (LPUART20_NonBlockingDriverState.handle->rxRingBuffer == NULL))
7864     {
7865         LPUART_TransferStartRingBuffer(LPUART20_NonBlockingDriverState.resource->base,
7866                                        LPUART20_NonBlockingDriverState.handle, lpuart20_rxRingBuffer,
7867                                        USART_RX_BUFFER_LEN);
7868     }
7869 #endif
7870 
7871     return result;
7872 }
7873 
LPUART20_NonBlockingSend(const void * data,uint32_t num)7874 static int32_t LPUART20_NonBlockingSend(const void *data, uint32_t num)
7875 {
7876     return LPUART_NonBlockingSend(data, num, &LPUART20_NonBlockingDriverState);
7877 }
7878 
LPUART20_NonBlockingReceive(void * data,uint32_t num)7879 static int32_t LPUART20_NonBlockingReceive(void *data, uint32_t num)
7880 {
7881     return LPUART_NonBlockingReceive(data, num, &LPUART20_NonBlockingDriverState);
7882 }
7883 
LPUART20_NonBlockingTransfer(const void * data_out,void * data_in,uint32_t num)7884 static int32_t LPUART20_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num)
7885 {
7886     return LPUART_NonBlockingTransfer(data_out, data_in, num, &LPUART20_NonBlockingDriverState);
7887 }
7888 
LPUART20_NonBlockingGetTxCount(void)7889 static uint32_t LPUART20_NonBlockingGetTxCount(void)
7890 {
7891     return LPUART_NonBlockingGetTxCount(&LPUART20_NonBlockingDriverState);
7892 }
7893 
LPUART20_NonBlockingGetRxCount(void)7894 static uint32_t LPUART20_NonBlockingGetRxCount(void)
7895 {
7896     return LPUART_NonBlockingGetRxCount(&LPUART20_NonBlockingDriverState);
7897 }
7898 
LPUART20_NonBlockingControl(uint32_t control,uint32_t arg)7899 static int32_t LPUART20_NonBlockingControl(uint32_t control, uint32_t arg)
7900 {
7901     int32_t result;
7902 
7903     result = LPUART_NonBlockingControl(control, arg, &LPUART20_NonBlockingDriverState);
7904     if (ARM_DRIVER_OK != result)
7905     {
7906         return result;
7907     }
7908 
7909     /* Enable the receive interrupts if ring buffer is used */
7910     if (LPUART20_NonBlockingDriverState.handle->rxRingBuffer != NULL)
7911     {
7912         LPUART_EnableInterrupts(
7913             LPUART20_NonBlockingDriverState.resource->base,
7914             (uint32_t)kLPUART_RxDataRegFullInterruptEnable | (uint32_t)kLPUART_RxOverrunInterruptEnable);
7915     }
7916 
7917     return ARM_DRIVER_OK;
7918 }
7919 
LPUART20_NonBlockingGetStatus(void)7920 static ARM_USART_STATUS LPUART20_NonBlockingGetStatus(void)
7921 {
7922     return LPUART_NonBlockingGetStatus(&LPUART20_NonBlockingDriverState);
7923 }
7924 
7925 #endif
7926 
7927 ARM_DRIVER_USART Driver_USART20 = {LPUARTx_GetVersion,      LPUARTx_GetCapabilities,
7928 #if defined(RTE_USART20_DMA_EN) && RTE_USART20_DMA_EN
7929 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
7930                                    LPUART20_EdmaInitialize, LPUART20_EdmaUninitialize, LPUART20_EdmaPowerControl,
7931                                    LPUART20_EdmaSend,       LPUART20_EdmaReceive,      LPUART20_EdmaTransfer,
7932                                    LPUART20_EdmaGetTxCount, LPUART20_EdmaGetRxCount,   LPUART20_EdmaControl,
7933                                    LPUART20_EdmaGetStatus,
7934 #else
7935                                    LPUART20_DmaInitialize,  LPUART20_DmaUninitialize, LPUART20_DmaPowerControl,
7936                                    LPUART20_DmaSend,        LPUART20_DmaReceive,      LPUART20_DmaTransfer,
7937                                    LPUART20_DmaGetTxCount,  LPUART20_DmaGetRxCount,   LPUART20_DmaControl,
7938                                    LPUART20_DmaGetStatus,
7939 #endif /* FSL_FEATURE_SOC_EDMA_COUNT */
7940 #else
7941                                   LPUART20_NonBlockingInitialize,
7942                                   LPUART20_NonBlockingUninitialize,
7943                                   LPUART20_NonBlockingPowerControl,
7944                                   LPUART20_NonBlockingSend,
7945                                   LPUART20_NonBlockingReceive,
7946                                   LPUART20_NonBlockingTransfer,
7947                                   LPUART20_NonBlockingGetTxCount,
7948                                   LPUART20_NonBlockingGetRxCount,
7949                                   LPUART20_NonBlockingControl,
7950                                   LPUART20_NonBlockingGetStatus,
7951 #endif /* RTE_USART20_DMA_EN */
7952                                    LPUARTx_SetModemControl, LPUARTx_GetModemStatus};
7953 
7954 #endif /* LPUART20 */
7955