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_lpspi_cmsis.h"
22 
23 /* Component ID definition, used by tools. */
24 #ifndef FSL_COMPONENT_ID
25 #define FSL_COMPONENT_ID "platform.drivers.lpspi_cmsis"
26 #endif
27 
28 #if ((defined(RTE_SPI0) && RTE_SPI0 && defined(LPSPI0)) || (defined(RTE_SPI1) && RTE_SPI1 && defined(LPSPI1)) ||       \
29      (defined(RTE_SPI2) && RTE_SPI2 && defined(LPSPI2)) || (defined(RTE_SPI3) && RTE_SPI3 && defined(LPSPI3)) ||       \
30      (defined(RTE_SPI4) && RTE_SPI4 && defined(LPSPI4)) || (defined(RTE_SPI5) && RTE_SPI5 && defined(LPSPI5)) ||       \
31      (defined(RTE_SPI6) && RTE_SPI6 && defined(LPSPI6)) || (defined(RTE_SPI7) && RTE_SPI7 && defined(LPSPI7)) ||       \
32      (defined(RTE_SPI8) && RTE_SPI8 && defined(LPSPI8)) || (defined(RTE_SPI9) && RTE_SPI9 && defined(LPSPI9)) ||       \
33      (defined(RTE_SPI10) && RTE_SPI10 && defined(LPSPI10)) || (defined(RTE_SPI11) && RTE_SPI11 && defined(LPSPI11)) || \
34      (defined(RTE_SPI12) && RTE_SPI12 && defined(LPSPI12)) || (defined(RTE_SPI13) && RTE_SPI13 && defined(LPSPI13)) || \
35      (defined(RTE_SPI14) && RTE_SPI14 && defined(LPSPI14)) || (defined(RTE_SPI15) && RTE_SPI15 && defined(LPSPI15)) || \
36      (defined(RTE_SPI16) && RTE_SPI16 && defined(LPSPI16)) || (defined(RTE_SPI17) && RTE_SPI17 && defined(LPSPI17)) || \
37      (defined(RTE_SPI18) && RTE_SPI18 && defined(LPSPI18)) || (defined(RTE_SPI19) && RTE_SPI19 && defined(LPSPI19)) || \
38      (defined(RTE_SPI20) && RTE_SPI20 && defined(LPSPI20)))
39 
40 #define ARM_LPSPI_DRV_VERSION ARM_DRIVER_VERSION_MAJOR_MINOR((2), (9)) /* driver version */
41 
42 /*
43  * ARMCC does not support split the data section automatically, so the driver
44  * needs to split the data to separate sections explicitly, to reduce codesize.
45  */
46 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
47 #define ARMCC_SECTION(section_name) __attribute__((section(section_name)))
48 #endif
49 
50 static clock_ip_name_t const s_lpspiClock[] = LPSPI_CLOCKS;
51 
52 typedef const struct _cmsis_lpspi_resource
53 {
54     LPSPI_Type *base;
55     uint32_t instance;
56     uint32_t (*GetFreq)(void);
57 } cmsis_lpspi_resource_t;
58 
59 typedef union _cmsis_lpspi_handle
60 {
61     lpspi_master_handle_t masterHandle;
62     lpspi_slave_handle_t slaveHandle;
63 } cmsis_lpspi_handle_t;
64 
65 typedef struct _cmsis_lpspi_interrupt_driver_state
66 {
67     cmsis_lpspi_resource_t *resource;
68     cmsis_lpspi_handle_t *handle;
69     ARM_SPI_SignalEvent_t cb_event;
70     uint32_t baudRate_Bps;
71     uint8_t flags; /*!< Control and state flags. */
72 } cmsis_lpspi_interrupt_driver_state_t;
73 
74 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
75 typedef const struct _cmsis_lpspi_edma_resource
76 {
77     void *txEdmaBase;
78     uint32_t txEdmaChannel;
79     uint16_t txDmaRequest;
80 
81     void *rxEdmaBase;
82     uint32_t rxEdmaChannel;
83     uint16_t rxDmaRequest;
84 
85 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
86     DMAMUX_Type *txDmamuxBase;
87     DMAMUX_Type *rxDmamuxBase;
88 #endif
89 } cmsis_lpspi_edma_resource_t;
90 
91 typedef union _cmsis_lpspi_edma_handle
92 {
93     lpspi_master_edma_handle_t masterHandle;
94     lpspi_slave_edma_handle_t slaveHandle;
95 } cmsis_lpspi_edma_handle_t;
96 
97 typedef struct _cmsis_lpspi_edma_driver_state
98 {
99     cmsis_lpspi_resource_t *resource;
100     cmsis_lpspi_edma_resource_t *dmaResource;
101     cmsis_lpspi_edma_handle_t *handle;
102     edma_handle_t *edmaRxRegToRxDataHandle;
103     edma_handle_t *edmaTxDataToTxRegHandle;
104     ARM_SPI_SignalEvent_t cb_event;
105     uint32_t baudRate_Bps;
106     uint8_t flags; /*!< Control and state flags. */
107 } cmsis_lpspi_edma_driver_state_t;
108 #endif
109 
110 /* Driver Version */
111 static const ARM_DRIVER_VERSION s_lpspiDriverVersion = {ARM_SPI_API_VERSION, ARM_LPSPI_DRV_VERSION};
112 
113 /* Driver Capabilities */
114 static const ARM_SPI_CAPABILITIES s_lpspiDriverCapabilities = {
115     1, /* Simplex Mode (Master and Slave) */
116     0, /* TI Synchronous Serial Interface */
117     0, /* Microwire Interface  */
118     0  /* Signal Mode Fault event: \ref ARM_SPI_EVENT_MODE_FAULT */
119 };
120 
121 /*
122  *Common Control function used by LPSPI_InterruptControl / LPSPI_EdmaControl.
123  */
LPSPI_CommonControl(uint32_t control,uint32_t arg,cmsis_lpspi_resource_t * resource,uint8_t * isConfigured)124 static int32_t LPSPI_CommonControl(uint32_t control,
125                                    uint32_t arg,
126                                    cmsis_lpspi_resource_t *resource,
127                                    uint8_t *isConfigured)
128 {
129     lpspi_master_config_t masterConfig;
130     LPSPI_MasterGetDefaultConfig(&masterConfig);
131     lpspi_slave_config_t slaveConfig;
132     LPSPI_SlaveGetDefaultConfig(&slaveConfig);
133     bool isMaster = ((control & ARM_SPI_CONTROL_Msk) == ARM_SPI_MODE_MASTER) ||
134                     ((control & ARM_SPI_CONTROL_Msk) == ARM_SPI_MODE_MASTER_SIMPLEX);
135     masterConfig.baudRate = arg;
136 
137     if (ARM_SPI_MODE_MASTER_SIMPLEX == (control & (uint32_t)ARM_SPI_CONTROL_Msk))
138     {
139         masterConfig.pinCfg = kLPSPI_SdoInSdoOut;
140     }
141     if (ARM_SPI_MODE_SLAVE_SIMPLEX == (control & (uint32_t)ARM_SPI_CONTROL_Msk))
142     {
143         slaveConfig.pinCfg = kLPSPI_SdiInSdiOut;
144     }
145 
146 #if (defined(RTE_SPI0_PCS_TO_SCK_DELAY) && defined(RTE_SPI0_SCK_TO_PSC_DELAY) && \
147      defined(RTE_SPI0_BETWEEN_TRANSFER_DELAY))
148     if (0U == resource->instance)
149     {
150         masterConfig.pcsToSckDelayInNanoSec        = (uint32_t)RTE_SPI0_PCS_TO_SCK_DELAY;
151         masterConfig.lastSckToPcsDelayInNanoSec    = (uint32_t)RTE_SPI0_SCK_TO_PSC_DELAY;
152         masterConfig.betweenTransferDelayInNanoSec = (uint32_t)RTE_SPI0_BETWEEN_TRANSFER_DELAY;
153     }
154 #endif /*RTE LPSPI0 trnafer delay time configure */
155 
156 #if (defined(RTE_SPI1_PCS_TO_SCK_DELAY) && defined(RTE_SPI1_SCK_TO_PSC_DELAY) && \
157      defined(RTE_SPI1_BETWEEN_TRANSFER_DELAY))
158     if (1U == resource->instance)
159     {
160         masterConfig.pcsToSckDelayInNanoSec        = (uint32_t)RTE_SPI1_PCS_TO_SCK_DELAY;
161         masterConfig.lastSckToPcsDelayInNanoSec    = (uint32_t)RTE_SPI1_SCK_TO_PSC_DELAY;
162         masterConfig.betweenTransferDelayInNanoSec = (uint32_t)RTE_SPI1_BETWEEN_TRANSFER_DELAY;
163     }
164 #endif /*RTE LPSPI1 trnafer delay time configure */
165 
166 #if (defined(RTE_SPI2_PCS_TO_SCK_DELAY) && defined(RTE_SPI2_SCK_TO_PSC_DELAY) && \
167      defined(RTE_SPI2_BETWEEN_TRANSFER_DELAY))
168     if (2U == resource->instance)
169     {
170         masterConfig.pcsToSckDelayInNanoSec        = (uint32_t)RTE_SPI2_PCS_TO_SCK_DELAY;
171         masterConfig.lastSckToPcsDelayInNanoSec    = (uint32_t)RTE_SPI2_SCK_TO_PSC_DELAY;
172         masterConfig.betweenTransferDelayInNanoSec = (uint32_t)RTE_SPI2_BETWEEN_TRANSFER_DELAY;
173     }
174 #endif /*RTE LPSPI2 trnafer delay time configure */
175 #if (defined(RTE_SPI3_PCS_TO_SCK_DELAY) && defined(RTE_SPI3_SCK_TO_PSC_DELAY) && \
176      defined(RTE_SPI3_BETWEEN_TRANSFER_DELAY))
177     if (3U == resource->instance)
178     {
179         masterConfig.pcsToSckDelayInNanoSec        = (uint32_t)RTE_SPI3_PCS_TO_SCK_DELAY;
180         masterConfig.lastSckToPcsDelayInNanoSec    = (uint32_t)RTE_SPI3_SCK_TO_PSC_DELAY;
181         masterConfig.betweenTransferDelayInNanoSec = (uint32_t)RTE_SPI3_BETWEEN_TRANSFER_DELAY;
182     }
183 #endif /*RTE LPSPI3 trnafer delay time configure */
184 
185 #if (defined(RTE_SPI4_PCS_TO_SCK_DELAY) && defined(RTE_SPI4_SCK_TO_PSC_DELAY) && \
186      defined(RTE_SPI4_BETWEEN_TRANSFER_DELAY))
187     if (4U == resource->instance)
188     {
189         masterConfig.pcsToSckDelayInNanoSec        = (uint32_t)RTE_SPI4_PCS_TO_SCK_DELAY;
190         masterConfig.lastSckToPcsDelayInNanoSec    = (uint32_t)RTE_SPI4_SCK_TO_PSC_DELAY;
191         masterConfig.betweenTransferDelayInNanoSec = (uint32_t)RTE_SPI4_BETWEEN_TRANSFER_DELAY;
192     }
193 #endif /*RTE LPSPI4 trnafer delay time configure */
194 
195 #if (defined(RTE_SPI5_PCS_TO_SCK_DELAY) && defined(RTE_SPI5_SCK_TO_PSC_DELAY) && \
196      defined(RTE_SPI5_BETWEEN_TRANSFER_DELAY))
197     if (5U == resource->instance)
198     {
199         masterConfig.pcsToSckDelayInNanoSec        = (uint32_t)RTE_SPI5_PCS_TO_SCK_DELAY;
200         masterConfig.lastSckToPcsDelayInNanoSec    = (uint32_t)RTE_SPI5_SCK_TO_PSC_DELAY;
201         masterConfig.betweenTransferDelayInNanoSec = (uint32_t)RTE_SPI5_BETWEEN_TRANSFER_DELAY;
202     }
203 #endif /*RTE LPSPI5 trnafer delay time configure */
204 
205     switch (control & (uint32_t)ARM_SPI_FRAME_FORMAT_Msk)
206     {
207         case ARM_SPI_CPOL0_CPHA0: /* Clock Polarity 0, Clock Phase 0*/
208             if (isMaster)
209             {
210                 masterConfig.cpol = kLPSPI_ClockPolarityActiveHigh;
211                 masterConfig.cpha = kLPSPI_ClockPhaseFirstEdge;
212             }
213             else
214             {
215                 slaveConfig.cpol = kLPSPI_ClockPolarityActiveHigh;
216                 slaveConfig.cpha = kLPSPI_ClockPhaseFirstEdge;
217             }
218             break;
219         case ARM_SPI_CPOL0_CPHA1: /* Clock Polarity 0, Clock Phase 1*/
220             if (isMaster)
221             {
222                 masterConfig.cpol = kLPSPI_ClockPolarityActiveHigh;
223                 masterConfig.cpha = kLPSPI_ClockPhaseSecondEdge;
224             }
225             else
226             {
227                 slaveConfig.cpol = kLPSPI_ClockPolarityActiveHigh;
228                 slaveConfig.cpha = kLPSPI_ClockPhaseSecondEdge;
229             }
230             break;
231         case ARM_SPI_CPOL1_CPHA0: /* Clock Polarity 1, Clock Phase 0*/
232             if (isMaster)
233             {
234                 masterConfig.cpol = kLPSPI_ClockPolarityActiveLow;
235                 masterConfig.cpha = kLPSPI_ClockPhaseFirstEdge;
236             }
237             else
238             {
239                 slaveConfig.cpol = kLPSPI_ClockPolarityActiveLow;
240                 slaveConfig.cpha = kLPSPI_ClockPhaseFirstEdge;
241             }
242             break;
243         case ARM_SPI_CPOL1_CPHA1: /* Clock Polarity 1, Clock Phase 1*/
244             if (isMaster)
245             {
246                 masterConfig.cpol = kLPSPI_ClockPolarityActiveLow;
247                 masterConfig.cpha = kLPSPI_ClockPhaseSecondEdge;
248             }
249             else
250             {
251                 slaveConfig.cpol = kLPSPI_ClockPolarityActiveLow;
252                 slaveConfig.cpha = kLPSPI_ClockPhaseSecondEdge;
253             }
254             break;
255         default:
256             /* Avoid MISRA 16.4 violations. */
257             break;
258     }
259 
260     if ((control & (uint32_t)ARM_SPI_DATA_BITS_Msk) != 0U) /* Number of Data bits */
261     {
262         if ((((control & (uint32_t)ARM_SPI_DATA_BITS_Msk) >> ARM_SPI_DATA_BITS_Pos) >= 8UL))
263         {
264             if (isMaster)
265             {
266                 masterConfig.bitsPerFrame = ((control & ARM_SPI_DATA_BITS_Msk) >> ARM_SPI_DATA_BITS_Pos);
267             }
268             else
269             {
270                 slaveConfig.bitsPerFrame = ((control & ARM_SPI_DATA_BITS_Msk) >> ARM_SPI_DATA_BITS_Pos);
271             }
272         }
273         else
274         {
275             return ARM_SPI_ERROR_DATA_BITS;
276         }
277     }
278 
279     switch (control & (uint32_t)ARM_SPI_BIT_ORDER_Msk)
280     {
281         case ARM_SPI_LSB_MSB: /* SPI Bit order from LSB to MSB */
282             if (isMaster)
283             {
284                 masterConfig.direction = kLPSPI_LsbFirst;
285             }
286             else
287             {
288                 slaveConfig.direction = kLPSPI_LsbFirst;
289             }
290             break;
291         case ARM_SPI_MSB_LSB: /* SPI Bit order from MSB to LSB */
292             if (isMaster)
293             {
294                 masterConfig.direction = kLPSPI_MsbFirst;
295             }
296             else
297             {
298                 slaveConfig.direction = kLPSPI_MsbFirst;
299             }
300             break;
301         default:
302             /* Avoid MISRA 16.4 violations. */
303             break;
304     }
305 
306     if (isMaster)
307     {
308         /* The SPI slave select is controlled by hardware, the other mode is not supported by current driver. */
309         switch (control & (uint32_t)ARM_SPI_SS_MASTER_MODE_Msk)
310         {
311             case ARM_SPI_SS_MASTER_UNUSED:
312                 break;
313             case ARM_SPI_SS_MASTER_SW:
314                 break;
315             case ARM_SPI_SS_MASTER_HW_OUTPUT:
316                 break;
317             case ARM_SPI_SS_MASTER_HW_INPUT:
318                 break;
319             default:
320                 /* Avoid MISRA 16.4 violations. */
321                 break;
322         }
323     }
324     else
325     {
326         /* The SPI slave select is controlled by hardware, the other mode is not supported by current driver. */
327         switch (control & (uint32_t)ARM_SPI_SS_SLAVE_MODE_Msk)
328         {
329             case ARM_SPI_SS_SLAVE_HW:
330                 break;
331             case ARM_SPI_SS_SLAVE_SW:
332                 break;
333             default:
334                 /* Avoid MISRA 16.4 violations. */
335                 break;
336         }
337     }
338 
339     /* LPSPI Init*/
340     if (isMaster)
341     {
342         if (((*isConfigured) & (uint8_t)SPI_FLAG_CONFIGURED) != 0U)
343         {
344             LPSPI_Deinit(resource->base);
345         }
346         LPSPI_MasterInit(resource->base, &masterConfig, resource->GetFreq());
347         *isConfigured |= (uint8_t)SPI_FLAG_CONFIGURED;
348     }
349     else
350     {
351         if (((*isConfigured) & (uint8_t)SPI_FLAG_CONFIGURED) != 0U)
352         {
353             LPSPI_Deinit(resource->base);
354         }
355         LPSPI_SlaveInit(resource->base, &slaveConfig);
356         *isConfigured |= (uint8_t)SPI_FLAG_CONFIGURED;
357     }
358 
359     return ARM_DRIVER_OK;
360 }
361 
LPSPI_SetTransferConfigFlags(bool isMaster,uint32_t instance,lpspi_transfer_t * xfer)362 static void LPSPI_SetTransferConfigFlags(bool isMaster, uint32_t instance, lpspi_transfer_t *xfer)
363 {
364     if (isMaster)
365     {
366         /* Set default config flag */
367         xfer->configFlags = (uint32_t)kLPSPI_MasterPcs0 | (uint32_t)kLPSPI_MasterPcsContinuous;
368 #if (defined(RTE_SPI0_MASTER_PCS_PIN_SEL))
369         if (0U == instance)
370         {
371             xfer->configFlags = (uint32_t)RTE_SPI0_MASTER_PCS_PIN_SEL | (uint32_t)kLPSPI_MasterPcsContinuous;
372         }
373 #endif /* LPSPI0 PCS pin configuration */
374 #if (defined(RTE_SPI1_MASTER_PCS_PIN_SEL))
375         if (1U == instance)
376         {
377             xfer->configFlags = (uint32_t)RTE_SPI1_MASTER_PCS_PIN_SEL | (uint32_t)kLPSPI_MasterPcsContinuous;
378         }
379 #endif /* LPSPI1 PCS pin configuration */
380 #if (defined(RTE_SPI2_MASTER_PCS_PIN_SEL))
381         if (2U == instance)
382         {
383             xfer->configFlags = (uint32_t)RTE_SPI2_MASTER_PCS_PIN_SEL | (uint32_t)kLPSPI_MasterPcsContinuous;
384         }
385 #endif /* LPSPI2 PCS pin configuration */
386 #if (defined(RTE_SPI3_MASTER_PCS_PIN_SEL))
387         if (3U == instance)
388         {
389             xfer->configFlags = (uint32_t)RTE_SPI3_MASTER_PCS_PIN_SEL | (uint32_t)kLPSPI_MasterPcsContinuous;
390         }
391 #endif /* LPSPI3 PCS pin configuration */
392 #if (defined(RTE_SPI4_MASTER_PCS_PIN_SEL))
393         if (4U == instance)
394         {
395             xfer->configFlags = (uint32_t)RTE_SPI4_MASTER_PCS_PIN_SEL | (uint32_t)kLPSPI_MasterPcsContinuous;
396         }
397 #endif /* LPSPI4 PCS pin configuration */
398 #if (defined(RTE_SPI5_MASTER_PCS_PIN_SEL))
399         if (5U == instance)
400         {
401             xfer->configFlags = (uint32_t)RTE_SPI5_MASTER_PCS_PIN_SEL | (uint32_t)kLPSPI_MasterPcsContinuous;
402         }
403 #endif /* LPSPI5 PCS pin configuration */
404     }
405     else
406     {
407         /* Set default config flag */
408         xfer->configFlags = (uint32_t)kLPSPI_SlavePcs0;
409 #if (defined(RTE_SPI0_SLAVE_PCS_PIN_SEL))
410         if (0U == instance)
411         {
412             xfer->configFlags = (uint32_t)RTE_SPI0_SLAVE_PCS_PIN_SEL;
413         }
414 #endif /* LPSPI0 PCS pin configuration */
415 #if (defined(RTE_SPI1_SLAVE_PCS_PIN_SEL))
416         if (1U == instance)
417         {
418             xfer->configFlags = (uint32_t)RTE_SPI1_SLAVE_PCS_PIN_SEL;
419         }
420 #endif /* LPSPI1 PCS pin configuration */
421 #if (defined(RTE_SPI2_SLAVE_PCS_PIN_SEL))
422         if (2U == instance)
423         {
424             xfer->configFlags = (uint32_t)RTE_SPI2_SLAVE_PCS_PIN_SEL;
425         }
426 #endif /* LPSPI2 PCS pin configuration */
427 #if (defined(RTE_SPI3_SLAVE_PCS_PIN_SEL))
428         if (3U == instance)
429         {
430             xfer->configFlags = (uint32_t)RTE_SPI3_SLAVE_PCS_PIN_SEL;
431         }
432 #endif /* LPSPI3 PCS pin configuration */
433 #if (defined(RTE_SPI4_SLAVE_PCS_PIN_SEL))
434         if (4U == instance)
435         {
436             xfer->configFlags = (uint32_t)RTE_SPI4_SLAVE_PCS_PIN_SEL;
437         }
438 #endif /* LPSPI4 PCS pin configuration */
439 #if (defined(RTE_SPI5_SLAVE_PCS_PIN_SEL))
440         if (5U == instance)
441         {
442             xfer->configFlags = (uint32_t)RTE_SPI5_SLAVE_PCS_PIN_SEL;
443         }
444 #endif /* LPSPI5 PCS pin configuration */
445     }
446 }
447 
LPSPIx_GetVersion(void)448 static ARM_DRIVER_VERSION LPSPIx_GetVersion(void)
449 {
450     return s_lpspiDriverVersion;
451 }
452 
LPSPIx_GetCapabilities(void)453 static ARM_SPI_CAPABILITIES LPSPIx_GetCapabilities(void)
454 {
455     return s_lpspiDriverCapabilities;
456 }
457 
458 #endif
459 
460 #if ((defined(RTE_SPI0_DMA_EN) && RTE_SPI0_DMA_EN) || (defined(RTE_SPI1_DMA_EN) && RTE_SPI1_DMA_EN) ||     \
461      (defined(RTE_SPI2_DMA_EN) && RTE_SPI2_DMA_EN) || (defined(RTE_SPI3_DMA_EN) && RTE_SPI3_DMA_EN) ||     \
462      (defined(RTE_SPI4_DMA_EN) && RTE_SPI4_DMA_EN) || (defined(RTE_SPI5_DMA_EN) && RTE_SPI5_DMA_EN) ||     \
463      (defined(RTE_SPI6_DMA_EN) && RTE_SPI6_DMA_EN) || (defined(RTE_SPI7_DMA_EN) && RTE_SPI7_DMA_EN) ||     \
464      (defined(RTE_SPI8_DMA_EN) && RTE_SPI8_DMA_EN) || (defined(RTE_SPI9_DMA_EN) && RTE_SPI9_DMA_EN) ||     \
465      (defined(RTE_SPI10_DMA_EN) && RTE_SPI10_DMA_EN) || (defined(RTE_SPI11_DMA_EN) && RTE_SPI11_DMA_EN) || \
466      (defined(RTE_SPI12_DMA_EN) && RTE_SPI12_DMA_EN) || (defined(RTE_SPI13_DMA_EN) && RTE_SPI13_DMA_EN) || \
467      (defined(RTE_SPI14_DMA_EN) && RTE_SPI14_DMA_EN) || (defined(RTE_SPI15_DMA_EN) && RTE_SPI15_DMA_EN) || \
468      (defined(RTE_SPI16_DMA_EN) && RTE_SPI16_DMA_EN) || (defined(RTE_SPI17_DMA_EN) && RTE_SPI17_DMA_EN) || \
469      (defined(RTE_SPI18_DMA_EN) && RTE_SPI18_DMA_EN) || (defined(RTE_SPI19_DMA_EN) && RTE_SPI19_DMA_EN) || \
470      (defined(RTE_SPI20_DMA_EN) && RTE_SPI20_DMA_EN))
471 
472 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
473 
KSDK_LPSPI_MasterEdmaCallback(LPSPI_Type * base,lpspi_master_edma_handle_t * handle,status_t status,void * userData)474 static void KSDK_LPSPI_MasterEdmaCallback(LPSPI_Type *base,
475                                           lpspi_master_edma_handle_t *handle,
476                                           status_t status,
477                                           void *userData)
478 {
479     uint32_t event = 0U;
480 
481     if (kStatus_Success == status)
482     {
483         event = ARM_SPI_EVENT_TRANSFER_COMPLETE;
484     }
485     else if (kStatus_LPSPI_OutOfRange == status)
486     {
487         event = ARM_SPI_EVENT_DATA_LOST;
488     }
489     else
490     {
491         /* Avoid MISRA 15.7 violations. */
492     }
493     /* User data is actually CMSIS driver callback. */
494     if ((0U != event) && (userData != NULL))
495     {
496         ((ARM_SPI_SignalEvent_t)userData)(event);
497     }
498 }
KSDK_LPSPI_SlaveEdmaCallback(LPSPI_Type * base,lpspi_slave_edma_handle_t * handle,status_t status,void * userData)499 static void KSDK_LPSPI_SlaveEdmaCallback(LPSPI_Type *base,
500                                          lpspi_slave_edma_handle_t *handle,
501                                          status_t status,
502                                          void *userData)
503 {
504     uint32_t event = 0U;
505 
506     if (kStatus_Success == status)
507     {
508         event = ARM_SPI_EVENT_TRANSFER_COMPLETE;
509     }
510     else if (kStatus_LPSPI_OutOfRange == status)
511     {
512         event = ARM_SPI_EVENT_DATA_LOST;
513     }
514     else
515     {
516         /* Avoid MISRA 15.7 violations. */
517     }
518     /* User data is actually CMSIS driver callback. */
519     if ((0U != event) && (userData != NULL))
520     {
521         ((ARM_SPI_SignalEvent_t)userData)(event);
522     }
523 }
524 
LPSPI_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event,cmsis_lpspi_edma_driver_state_t * lpspi)525 static int32_t LPSPI_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event, cmsis_lpspi_edma_driver_state_t *lpspi)
526 {
527     if (0U == (lpspi->flags & (uint8_t)SPI_FLAG_INIT))
528     {
529         lpspi->cb_event = cb_event;
530         lpspi->flags    = (uint8_t)SPI_FLAG_INIT;
531     }
532     return ARM_DRIVER_OK;
533 }
534 
LPSPI_EdmaUninitialize(cmsis_lpspi_edma_driver_state_t * lpspi)535 static int32_t LPSPI_EdmaUninitialize(cmsis_lpspi_edma_driver_state_t *lpspi)
536 {
537     lpspi->flags = (uint8_t)SPI_FLAG_UNINIT;
538     return ARM_DRIVER_OK;
539 }
540 
LPSPI_EdmaPowerControl(ARM_POWER_STATE state,cmsis_lpspi_edma_driver_state_t * lpspi)541 static int32_t LPSPI_EdmaPowerControl(ARM_POWER_STATE state, cmsis_lpspi_edma_driver_state_t *lpspi)
542 {
543     cmsis_lpspi_edma_resource_t *dmaResource = lpspi->dmaResource;
544     int32_t result                           = ARM_DRIVER_OK;
545 
546     switch (state)
547     {
548         case ARM_POWER_OFF:
549             if ((lpspi->flags & (uint8_t)SPI_FLAG_POWER) != 0U)
550             {
551                 LPSPI_Deinit(lpspi->resource->base);
552 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
553                 DMAMUX_DisableChannel(lpspi->dmaResource->rxDmamuxBase, lpspi->dmaResource->rxEdmaChannel);
554                 DMAMUX_DisableChannel(lpspi->dmaResource->txDmamuxBase, lpspi->dmaResource->txEdmaChannel);
555 #endif
556                 lpspi->flags = (uint8_t)SPI_FLAG_INIT;
557             }
558             break;
559         case ARM_POWER_LOW:
560             result = ARM_DRIVER_ERROR_UNSUPPORTED;
561             break;
562         case ARM_POWER_FULL:
563         {
564             if (lpspi->flags == (uint8_t)SPI_FLAG_UNINIT)
565             {
566                 result = ARM_DRIVER_ERROR;
567                 break;
568             }
569 
570             if ((lpspi->flags & (uint8_t)SPI_FLAG_POWER) != 0U)
571             {
572                 /* Driver already powered */
573                 break;
574             }
575             /* Enable Clock gate */
576             (void)CLOCK_EnableClock(s_lpspiClock[lpspi->resource->instance]);
577 
578             (void)memset(lpspi->edmaRxRegToRxDataHandle, 0, sizeof(edma_handle_t));
579             (void)memset(lpspi->edmaTxDataToTxRegHandle, 0, sizeof(edma_handle_t));
580 
581             EDMA_CreateHandle(lpspi->edmaRxRegToRxDataHandle, dmaResource->rxEdmaBase, dmaResource->rxEdmaChannel);
582             EDMA_CreateHandle(lpspi->edmaTxDataToTxRegHandle, dmaResource->txEdmaBase, dmaResource->txEdmaChannel);
583 #if defined(FSL_FEATURE_EDMA_HAS_CHANNEL_MUX) && FSL_FEATURE_EDMA_HAS_CHANNEL_MUX
584             EDMA_SetChannelMux(dmaResource->txEdmaBase, dmaResource->txEdmaChannel, (int32_t)dmaResource->txDmaRequest);
585             EDMA_SetChannelMux(dmaResource->rxEdmaBase, dmaResource->rxEdmaChannel, (int32_t)dmaResource->rxDmaRequest);
586 #endif
587 
588 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
589             DMAMUX_SetSource(dmaResource->rxDmamuxBase, dmaResource->rxEdmaChannel, (int32_t)dmaResource->rxDmaRequest);
590             DMAMUX_EnableChannel(dmaResource->rxDmamuxBase, dmaResource->rxEdmaChannel);
591 
592             DMAMUX_SetSource(dmaResource->txDmamuxBase, dmaResource->txEdmaChannel, (int32_t)dmaResource->txDmaRequest);
593             DMAMUX_EnableChannel(dmaResource->txDmamuxBase, dmaResource->txEdmaChannel);
594 #endif
595             lpspi->flags |= (uint8_t)SPI_FLAG_POWER;
596             break;
597         }
598         default:
599             result = ARM_DRIVER_ERROR_UNSUPPORTED;
600             break;
601     }
602 
603     return result;
604 }
605 
LPSPI_EdmaSend(const void * data,uint32_t num,cmsis_lpspi_edma_driver_state_t * lpspi)606 static int32_t LPSPI_EdmaSend(const void *data, uint32_t num, cmsis_lpspi_edma_driver_state_t *lpspi)
607 {
608     int32_t ret;
609     status_t status;
610     lpspi_transfer_t xfer = {0};
611     uint32_t datawidth    = (lpspi->resource->base->TCR & (uint32_t)LPSPI_TCR_FRAMESZ_MASK) >> LPSPI_TCR_FRAMESZ_SHIFT;
612 
613     xfer.rxData   = NULL;
614     xfer.txData   = (uint8_t *)data;
615     xfer.dataSize = num * ((datawidth + 8U) / 8U);
616 
617     LPSPI_SetTransferConfigFlags(LPSPI_IsMaster(lpspi->resource->base), lpspi->resource->instance, &xfer);
618 
619     if (LPSPI_IsMaster(lpspi->resource->base))
620     {
621         status = LPSPI_MasterTransferEDMA(lpspi->resource->base, &(lpspi->handle->masterHandle), &xfer);
622     }
623     else
624     {
625         status = LPSPI_SlaveTransferEDMA(lpspi->resource->base, &(lpspi->handle->slaveHandle), &xfer);
626     }
627 
628     switch (status)
629     {
630         case kStatus_Success:
631             ret = ARM_DRIVER_OK;
632             break;
633         case kStatus_InvalidArgument:
634             ret = ARM_DRIVER_ERROR_PARAMETER;
635             break;
636         case kStatus_LPSPI_Busy:
637             ret = ARM_DRIVER_ERROR_BUSY;
638             break;
639         default:
640             ret = ARM_DRIVER_ERROR;
641             break;
642     }
643 
644     return ret;
645 }
646 
LPSPI_EdmaReceive(void * data,uint32_t num,cmsis_lpspi_edma_driver_state_t * lpspi)647 static int32_t LPSPI_EdmaReceive(void *data, uint32_t num, cmsis_lpspi_edma_driver_state_t *lpspi)
648 {
649     int32_t ret;
650     status_t status;
651     lpspi_transfer_t xfer = {0};
652     uint32_t datawidth    = (lpspi->resource->base->TCR & (uint32_t)LPSPI_TCR_FRAMESZ_MASK) >> LPSPI_TCR_FRAMESZ_SHIFT;
653 
654     xfer.txData   = NULL;
655     xfer.rxData   = (uint8_t *)data;
656     xfer.dataSize = num * ((datawidth + 8U) / 8U);
657 
658     LPSPI_SetTransferConfigFlags(LPSPI_IsMaster(lpspi->resource->base), lpspi->resource->instance, &xfer);
659 
660     if (LPSPI_IsMaster(lpspi->resource->base))
661     {
662         status = LPSPI_MasterTransferEDMA(lpspi->resource->base, &(lpspi->handle->masterHandle), &xfer);
663     }
664     else
665     {
666         status = LPSPI_SlaveTransferEDMA(lpspi->resource->base, &(lpspi->handle->slaveHandle), &xfer);
667     }
668 
669     switch (status)
670     {
671         case kStatus_Success:
672             ret = ARM_DRIVER_OK;
673             break;
674         case kStatus_InvalidArgument:
675             ret = ARM_DRIVER_ERROR_PARAMETER;
676             break;
677         case kStatus_LPSPI_Busy:
678             ret = ARM_DRIVER_ERROR_BUSY;
679             break;
680         default:
681             ret = ARM_DRIVER_ERROR;
682             break;
683     }
684 
685     return ret;
686 }
687 
LPSPI_EdmaTransfer(const void * data_out,void * data_in,uint32_t num,cmsis_lpspi_edma_driver_state_t * lpspi)688 static int32_t LPSPI_EdmaTransfer(const void *data_out,
689                                   void *data_in,
690                                   uint32_t num,
691                                   cmsis_lpspi_edma_driver_state_t *lpspi)
692 {
693     int32_t ret;
694     status_t status;
695     lpspi_transfer_t xfer = {0};
696     uint32_t datawidth    = (lpspi->resource->base->TCR & (uint32_t)LPSPI_TCR_FRAMESZ_MASK) >> LPSPI_TCR_FRAMESZ_SHIFT;
697 
698     xfer.txData   = (uint8_t *)data_out;
699     xfer.rxData   = (uint8_t *)data_in;
700     xfer.dataSize = num * ((datawidth + 8U) / 8U);
701 
702     LPSPI_SetTransferConfigFlags(LPSPI_IsMaster(lpspi->resource->base), lpspi->resource->instance, &xfer);
703 
704     if (LPSPI_IsMaster(lpspi->resource->base))
705     {
706         status = LPSPI_MasterTransferEDMA(lpspi->resource->base, &(lpspi->handle->masterHandle), &xfer);
707     }
708     else
709     {
710         status = LPSPI_SlaveTransferEDMA(lpspi->resource->base, &(lpspi->handle->slaveHandle), &xfer);
711     }
712 
713     switch (status)
714     {
715         case kStatus_Success:
716             ret = ARM_DRIVER_OK;
717             break;
718         case kStatus_InvalidArgument:
719             ret = ARM_DRIVER_ERROR_PARAMETER;
720             break;
721         case kStatus_LPSPI_Busy:
722             ret = ARM_DRIVER_ERROR_BUSY;
723             break;
724         default:
725             ret = ARM_DRIVER_ERROR;
726             break;
727     }
728 
729     return ret;
730 }
LPSPI_EdmaGetCount(cmsis_lpspi_edma_driver_state_t * lpspi)731 static uint32_t LPSPI_EdmaGetCount(cmsis_lpspi_edma_driver_state_t *lpspi)
732 {
733     uint32_t cnt;
734     size_t bytes;
735     uint32_t datawidth = (lpspi->resource->base->TCR & (uint32_t)LPSPI_TCR_FRAMESZ_MASK) >> LPSPI_TCR_FRAMESZ_SHIFT;
736 
737     if (LPSPI_IsMaster(lpspi->resource->base))
738     {
739         bytes = (uint32_t)lpspi->handle->masterHandle.nbytes *
740                 EDMA_GetRemainingMajorLoopCount(lpspi->dmaResource->rxEdmaBase, lpspi->dmaResource->rxEdmaChannel);
741         cnt = lpspi->handle->masterHandle.totalByteCount - bytes;
742     }
743     else
744     {
745         bytes = (uint32_t)lpspi->handle->masterHandle.nbytes *
746                 EDMA_GetRemainingMajorLoopCount(lpspi->dmaResource->rxEdmaBase, lpspi->dmaResource->rxEdmaChannel);
747         cnt = lpspi->handle->slaveHandle.totalByteCount - bytes;
748     }
749     cnt /= ((datawidth + 8U) / 8U);
750     return cnt;
751 }
752 
LPSPI_EdmaControl(uint32_t control,uint32_t arg,cmsis_lpspi_edma_driver_state_t * lpspi)753 static int32_t LPSPI_EdmaControl(uint32_t control, uint32_t arg, cmsis_lpspi_edma_driver_state_t *lpspi)
754 {
755     int32_t result  = ARM_DRIVER_OK;
756     bool isContinue = false;
757     if (0U == (lpspi->flags & (uint8_t)SPI_FLAG_POWER))
758     {
759         return ARM_DRIVER_ERROR;
760     }
761 
762     switch (control & ARM_SPI_CONTROL_Msk)
763     {
764         case ARM_SPI_MODE_INACTIVE:
765             LPSPI_Enable(lpspi->resource->base, false);
766             break;
767         case ARM_SPI_MODE_MASTER: /* SPI Master (Output on SOUT, Input on SIN); arg = Bus Speed in bps */
768         {
769             LPSPI_MasterTransferCreateHandleEDMA(lpspi->resource->base, &(lpspi->handle->masterHandle),
770                                                  KSDK_LPSPI_MasterEdmaCallback, (void *)lpspi->cb_event,
771                                                  lpspi->edmaRxRegToRxDataHandle, lpspi->edmaTxDataToTxRegHandle);
772 
773             lpspi->baudRate_Bps = arg;
774             isContinue          = true;
775             break;
776         }
777         case ARM_SPI_MODE_SLAVE: /* SPI Slave  (Output on SOUT, Input on SIN) */
778         {
779             LPSPI_SlaveTransferCreateHandleEDMA(lpspi->resource->base, &(lpspi->handle->slaveHandle),
780                                                 KSDK_LPSPI_SlaveEdmaCallback, (void *)lpspi->cb_event,
781                                                 lpspi->edmaRxRegToRxDataHandle, lpspi->edmaTxDataToTxRegHandle);
782             isContinue = true;
783             break;
784         }
785         case ARM_SPI_SET_BUS_SPEED: /* Get Bus Speed in bps */
786         {
787             uint32_t tcrPrescaleValue = 0;
788             LPSPI_Enable(lpspi->resource->base, false);
789 
790             if (!LPSPI_IsMaster(lpspi->resource->base))
791             {
792                 result = ARM_DRIVER_ERROR_UNSUPPORTED;
793                 break;
794             }
795 
796             if (0UL ==
797                 LPSPI_MasterSetBaudRate(lpspi->resource->base, arg, lpspi->resource->GetFreq(), &tcrPrescaleValue))
798             {
799                 result = ARM_DRIVER_ERROR;
800                 break;
801             }
802 
803             LPSPI_Enable(lpspi->resource->base, true);
804             lpspi->baudRate_Bps = arg;
805             break;
806         }
807 
808         case ARM_SPI_GET_BUS_SPEED: /* Set Bus Speed in bps; arg = value */
809             if (!LPSPI_IsMaster(lpspi->resource->base))
810             {
811                 result = ARM_DRIVER_ERROR_UNSUPPORTED;
812                 break;
813             }
814             result = (int32_t)lpspi->baudRate_Bps;
815             break;
816         case ARM_SPI_CONTROL_SS: /* Control Slave Select; arg = 0:inactive, 1:active  */
817             result = ARM_DRIVER_ERROR_UNSUPPORTED;
818             break;
819 
820         case ARM_SPI_ABORT_TRANSFER: /* Abort current data transfer */
821             if (LPSPI_IsMaster(lpspi->resource->base))
822             {
823                 LPSPI_MasterTransferAbortEDMA(lpspi->resource->base, &(lpspi->handle->masterHandle));
824             }
825             else
826             {
827                 LPSPI_SlaveTransferAbortEDMA(lpspi->resource->base, &(lpspi->handle->slaveHandle));
828             }
829             result = ARM_DRIVER_OK;
830             break;
831 
832         case ARM_SPI_SET_DEFAULT_TX_VALUE: /* Set default Transmit value; arg = value */
833             LPSPI_SetDummyData(lpspi->resource->base, (uint8_t)arg);
834             result = ARM_DRIVER_OK;
835             break;
836 
837         case ARM_SPI_MODE_MASTER_SIMPLEX: /* SPI Master (Output/Input on SOUT); arg = Bus Speed in bps */
838         {
839             LPSPI_MasterTransferCreateHandleEDMA(lpspi->resource->base, &(lpspi->handle->masterHandle),
840                                                  KSDK_LPSPI_MasterEdmaCallback, (void *)lpspi->cb_event,
841                                                  lpspi->edmaRxRegToRxDataHandle, lpspi->edmaTxDataToTxRegHandle);
842 
843             lpspi->baudRate_Bps = arg;
844             isContinue          = true;
845             break;
846         }
847 
848         case ARM_SPI_MODE_SLAVE_SIMPLEX: /* SPI Slave  (Output/Input on SIN) */
849         {
850             LPSPI_SlaveTransferCreateHandleEDMA(lpspi->resource->base, &(lpspi->handle->slaveHandle),
851                                                 KSDK_LPSPI_SlaveEdmaCallback, (void *)lpspi->cb_event,
852                                                 lpspi->edmaRxRegToRxDataHandle, lpspi->edmaTxDataToTxRegHandle);
853             isContinue = true;
854             break;
855         }
856 
857         default:
858             isContinue = true;
859             break;
860     }
861     if (isContinue)
862     {
863         result = LPSPI_CommonControl(control, arg, lpspi->resource, &lpspi->flags);
864     }
865 
866     return result;
867 }
868 
LPSPI_EdmaGetStatus(cmsis_lpspi_edma_driver_state_t * lpspi)869 static ARM_SPI_STATUS LPSPI_EdmaGetStatus(cmsis_lpspi_edma_driver_state_t *lpspi)
870 {
871     ARM_SPI_STATUS stat = {0};
872 
873     if (LPSPI_IsMaster(lpspi->resource->base))
874     {
875         stat.busy      = ((uint8_t)kLPSPI_Busy == lpspi->handle->masterHandle.state) ? (1U) : (0U);
876         stat.data_lost = ((uint8_t)kLPSPI_Error == lpspi->handle->masterHandle.state) ? (1U) : (0U);
877     }
878     else
879     {
880         stat.busy      = ((uint8_t)kLPSPI_Busy == lpspi->handle->slaveHandle.state) ? (1U) : (0U);
881         stat.data_lost = ((uint8_t)kLPSPI_Error == lpspi->handle->slaveHandle.state) ? (1U) : (0U);
882     }
883     stat.mode_fault = 0U;
884     stat.reserved   = 0U;
885 
886     return stat;
887 }
888 #endif /* defined(FSL_FEATURE_SOC_EDMA_COUNT) */
889 
890 #endif
891 
892 #if ((defined(RTE_SPI0) && RTE_SPI0 && !RTE_SPI0_DMA_EN) || (defined(RTE_SPI1) && RTE_SPI1 && !RTE_SPI1_DMA_EN) || \
893      (defined(RTE_SPI2) && RTE_SPI2 && !RTE_SPI2_DMA_EN) || (defined(RTE_SPI3) && RTE_SPI3 && !RTE_SPI3_DMA_EN) || \
894      (defined(RTE_SPI4) && RTE_SPI4 && !RTE_SPI4_DMA_EN) || (defined(RTE_SPI5) && RTE_SPI5 && !RTE_SPI5_DMA_EN) || \
895      (defined(RTE_SPI6) && RTE_SPI6 && !RTE_SPI6_DMA_EN) || (defined(RTE_SPI7) && RTE_SPI7 && !RTE_SPI7_DMA_EN) || \
896      (defined(RTE_SPI8) && RTE_SPI8 && !RTE_SPI8_DMA_EN) || (defined(RTE_SPI9) && RTE_SPI9 && !RTE_SPI9_DMA_EN) || \
897      (defined(RTE_SPI10) && RTE_SPI10 && !RTE_SPI10_DMA_EN) ||                                                     \
898      (defined(RTE_SPI11) && RTE_SPI11 && !RTE_SPI11_DMA_EN) ||                                                     \
899      (defined(RTE_SPI12) && RTE_SPI12 && !RTE_SPI12_DMA_EN) ||                                                     \
900      (defined(RTE_SPI13) && RTE_SPI13 && !RTE_SPI13_DMA_EN) ||                                                     \
901      (defined(RTE_SPI14) && RTE_SPI14 && !RTE_SPI14_DMA_EN) ||                                                     \
902      (defined(RTE_SPI15) && RTE_SPI15 && !RTE_SPI15_DMA_EN) ||                                                     \
903      (defined(RTE_SPI16) && RTE_SPI16 && !RTE_SPI16_DMA_EN) ||                                                     \
904      (defined(RTE_SPI17) && RTE_SPI17 && !RTE_SPI17_DMA_EN) ||                                                     \
905      (defined(RTE_SPI18) && RTE_SPI18 && !RTE_SPI18_DMA_EN) ||                                                     \
906      (defined(RTE_SPI19) && RTE_SPI19 && !RTE_SPI19_DMA_EN) || (defined(RTE_SPI20) && RTE_SPI20 && !RTE_SPI20_DMA_EN))
907 
KSDK_LPSPI_MasterInterruptCallback(LPSPI_Type * base,lpspi_master_handle_t * handle,status_t status,void * userData)908 static void KSDK_LPSPI_MasterInterruptCallback(LPSPI_Type *base,
909                                                lpspi_master_handle_t *handle,
910                                                status_t status,
911                                                void *userData)
912 {
913     uint32_t event = 0U;
914 
915     if (kStatus_Success == status)
916     {
917         event = ARM_SPI_EVENT_TRANSFER_COMPLETE;
918     }
919     else if (kStatus_LPSPI_Error == status)
920     {
921         event = ARM_SPI_EVENT_DATA_LOST;
922     }
923     else
924     {
925         /* Avoid MISRA 15.7 violations. */
926     }
927     /* User data is actually CMSIS driver callback. */
928     if ((0U != event) && (userData != NULL))
929     {
930         ((ARM_SPI_SignalEvent_t)userData)(event);
931     }
932 }
933 
KSDK_LPSPI_SlaveInterruptCallback(LPSPI_Type * base,lpspi_slave_handle_t * handle,status_t status,void * userData)934 static void KSDK_LPSPI_SlaveInterruptCallback(LPSPI_Type *base,
935                                               lpspi_slave_handle_t *handle,
936                                               status_t status,
937                                               void *userData)
938 {
939     uint32_t event = 0U;
940 
941     if (kStatus_Success == status)
942     {
943         event = ARM_SPI_EVENT_TRANSFER_COMPLETE;
944     }
945     if (kStatus_LPSPI_Error == status)
946     {
947         event = ARM_SPI_EVENT_DATA_LOST;
948     }
949     else
950     {
951         /* Avoid MISRA 16.4 violations. */
952     }
953     /* User data is actually CMSIS driver callback. */
954     if ((0U != event) && (userData != NULL))
955     {
956         ((ARM_SPI_SignalEvent_t)userData)(event);
957     }
958 }
959 
LPSPI_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event,cmsis_lpspi_interrupt_driver_state_t * lpspi)960 static int32_t LPSPI_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event, cmsis_lpspi_interrupt_driver_state_t *lpspi)
961 {
962     if (0U == (lpspi->flags & (uint8_t)SPI_FLAG_INIT))
963     {
964         lpspi->cb_event = cb_event;
965         lpspi->flags    = (uint8_t)SPI_FLAG_INIT;
966     }
967 
968     return ARM_DRIVER_OK;
969 }
970 
LPSPI_InterruptUninitialize(cmsis_lpspi_interrupt_driver_state_t * lpspi)971 static int32_t LPSPI_InterruptUninitialize(cmsis_lpspi_interrupt_driver_state_t *lpspi)
972 {
973     lpspi->flags = (uint8_t)SPI_FLAG_UNINIT;
974     return ARM_DRIVER_OK;
975 }
976 
LPSPI_InterruptPowerControl(ARM_POWER_STATE state,cmsis_lpspi_interrupt_driver_state_t * lpspi)977 static int32_t LPSPI_InterruptPowerControl(ARM_POWER_STATE state, cmsis_lpspi_interrupt_driver_state_t *lpspi)
978 {
979     int32_t result = ARM_DRIVER_OK;
980     switch (state)
981     {
982         case ARM_POWER_OFF:
983             if ((lpspi->flags & (uint8_t)SPI_FLAG_POWER) != 0U)
984             {
985                 LPSPI_Deinit(lpspi->resource->base);
986                 lpspi->flags = (uint8_t)SPI_FLAG_INIT;
987             }
988             break;
989         case ARM_POWER_LOW:
990             result = ARM_DRIVER_ERROR_UNSUPPORTED;
991             break;
992         case ARM_POWER_FULL:
993             if (lpspi->flags == (uint8_t)SPI_FLAG_UNINIT)
994             {
995                 result = ARM_DRIVER_ERROR;
996                 break;
997             }
998 
999             if ((lpspi->flags & (uint8_t)SPI_FLAG_POWER) != 0U)
1000             {
1001                 /* Driver already powered */
1002                 break;
1003             }
1004 
1005             (void)CLOCK_EnableClock(s_lpspiClock[lpspi->resource->instance]);
1006             lpspi->flags |= (uint8_t)SPI_FLAG_POWER;
1007 
1008             break;
1009         default:
1010             result = ARM_DRIVER_ERROR_UNSUPPORTED;
1011             break;
1012     }
1013 
1014     return result;
1015 }
1016 
LPSPI_InterruptSend(const void * data,uint32_t num,cmsis_lpspi_interrupt_driver_state_t * lpspi)1017 static int32_t LPSPI_InterruptSend(const void *data, uint32_t num, cmsis_lpspi_interrupt_driver_state_t *lpspi)
1018 {
1019     int32_t ret;
1020     status_t status;
1021     lpspi_transfer_t xfer = {0};
1022     uint32_t datawidth    = (lpspi->resource->base->TCR & (uint32_t)LPSPI_TCR_FRAMESZ_MASK) >> LPSPI_TCR_FRAMESZ_SHIFT;
1023 
1024     xfer.rxData   = NULL;
1025     xfer.txData   = (uint8_t *)data;
1026     xfer.dataSize = num * ((datawidth + 8U) / 8U);
1027 
1028     LPSPI_SetTransferConfigFlags(LPSPI_IsMaster(lpspi->resource->base), lpspi->resource->instance, &xfer);
1029 
1030     if (LPSPI_IsMaster(lpspi->resource->base))
1031     {
1032         status = LPSPI_MasterTransferNonBlocking(lpspi->resource->base, &(lpspi->handle->masterHandle), &xfer);
1033     }
1034     else
1035     {
1036         status = LPSPI_SlaveTransferNonBlocking(lpspi->resource->base, &(lpspi->handle->slaveHandle), &xfer);
1037     }
1038 
1039     switch (status)
1040     {
1041         case kStatus_Success:
1042             ret = ARM_DRIVER_OK;
1043             break;
1044         case kStatus_InvalidArgument:
1045             ret = ARM_DRIVER_ERROR_PARAMETER;
1046             break;
1047         case kStatus_LPSPI_Busy:
1048             ret = ARM_DRIVER_ERROR_BUSY;
1049             break;
1050         default:
1051             ret = ARM_DRIVER_ERROR;
1052             break;
1053     }
1054 
1055     return ret;
1056 }
1057 
LPSPI_InterruptReceive(void * data,uint32_t num,cmsis_lpspi_interrupt_driver_state_t * lpspi)1058 static int32_t LPSPI_InterruptReceive(void *data, uint32_t num, cmsis_lpspi_interrupt_driver_state_t *lpspi)
1059 {
1060     int32_t ret;
1061     status_t status;
1062     lpspi_transfer_t xfer = {0};
1063     uint32_t datawidth    = (lpspi->resource->base->TCR & (uint32_t)LPSPI_TCR_FRAMESZ_MASK) >> LPSPI_TCR_FRAMESZ_SHIFT;
1064 
1065     xfer.txData   = NULL;
1066     xfer.rxData   = (uint8_t *)data;
1067     xfer.dataSize = num * ((datawidth + 8U) / 8U);
1068 
1069     LPSPI_SetTransferConfigFlags(LPSPI_IsMaster(lpspi->resource->base), lpspi->resource->instance, &xfer);
1070 
1071     if (LPSPI_IsMaster(lpspi->resource->base))
1072     {
1073         status = LPSPI_MasterTransferNonBlocking(lpspi->resource->base, &(lpspi->handle->masterHandle), &xfer);
1074     }
1075     else
1076     {
1077         status = LPSPI_SlaveTransferNonBlocking(lpspi->resource->base, &(lpspi->handle->slaveHandle), &xfer);
1078     }
1079 
1080     switch (status)
1081     {
1082         case kStatus_Success:
1083             ret = ARM_DRIVER_OK;
1084             break;
1085         case kStatus_InvalidArgument:
1086             ret = ARM_DRIVER_ERROR_PARAMETER;
1087             break;
1088         case kStatus_LPSPI_Busy:
1089             ret = ARM_DRIVER_ERROR_BUSY;
1090             break;
1091         default:
1092             ret = ARM_DRIVER_ERROR;
1093             break;
1094     }
1095 
1096     return ret;
1097 }
1098 
LPSPI_InterruptTransfer(const void * data_out,void * data_in,uint32_t num,cmsis_lpspi_interrupt_driver_state_t * lpspi)1099 static int32_t LPSPI_InterruptTransfer(const void *data_out,
1100                                        void *data_in,
1101                                        uint32_t num,
1102                                        cmsis_lpspi_interrupt_driver_state_t *lpspi)
1103 {
1104     int32_t ret;
1105     status_t status;
1106     lpspi_transfer_t xfer = {0};
1107     uint32_t datawidth    = (lpspi->resource->base->TCR & (uint32_t)LPSPI_TCR_FRAMESZ_MASK) >> LPSPI_TCR_FRAMESZ_SHIFT;
1108 
1109     xfer.txData   = (uint8_t *)data_out;
1110     xfer.rxData   = (uint8_t *)data_in;
1111     xfer.dataSize = num * ((datawidth + 8U) / 8U);
1112 
1113     LPSPI_SetTransferConfigFlags(LPSPI_IsMaster(lpspi->resource->base), lpspi->resource->instance, &xfer);
1114 
1115     if (LPSPI_IsMaster(lpspi->resource->base))
1116     {
1117         status = LPSPI_MasterTransferNonBlocking(lpspi->resource->base, &(lpspi->handle->masterHandle), &xfer);
1118     }
1119     else
1120     {
1121         status = LPSPI_SlaveTransferNonBlocking(lpspi->resource->base, &(lpspi->handle->slaveHandle), &xfer);
1122     }
1123 
1124     switch (status)
1125     {
1126         case kStatus_Success:
1127             ret = ARM_DRIVER_OK;
1128             break;
1129         case kStatus_InvalidArgument:
1130             ret = ARM_DRIVER_ERROR_PARAMETER;
1131             break;
1132         case kStatus_LPSPI_Busy:
1133             ret = ARM_DRIVER_ERROR_BUSY;
1134             break;
1135         default:
1136             ret = ARM_DRIVER_ERROR;
1137             break;
1138     }
1139 
1140     return ret;
1141 }
1142 
LPSPI_InterruptGetCount(cmsis_lpspi_interrupt_driver_state_t * lpspi)1143 static uint32_t LPSPI_InterruptGetCount(cmsis_lpspi_interrupt_driver_state_t *lpspi)
1144 {
1145     uint32_t cnt;
1146     uint32_t datawidth = (lpspi->resource->base->TCR & (uint32_t)LPSPI_TCR_FRAMESZ_MASK) >> LPSPI_TCR_FRAMESZ_SHIFT;
1147     if (LPSPI_IsMaster(lpspi->resource->base))
1148     {
1149         cnt = (uint32_t)lpspi->handle->masterHandle.totalByteCount -
1150               (uint32_t)lpspi->handle->masterHandle.rxRemainingByteCount;
1151     }
1152     else
1153     {
1154         cnt = (uint32_t)lpspi->handle->slaveHandle.totalByteCount -
1155               (uint32_t)lpspi->handle->slaveHandle.rxRemainingByteCount;
1156     }
1157     cnt /= ((datawidth + 8U) / 8U);
1158 
1159     return cnt;
1160 }
1161 
LPSPI_InterruptControl(uint32_t control,uint32_t arg,cmsis_lpspi_interrupt_driver_state_t * lpspi)1162 static int32_t LPSPI_InterruptControl(uint32_t control, uint32_t arg, cmsis_lpspi_interrupt_driver_state_t *lpspi)
1163 {
1164     int32_t result  = ARM_DRIVER_OK;
1165     bool isContinue = false;
1166     if (0U == (lpspi->flags & (uint8_t)SPI_FLAG_POWER))
1167     {
1168         return ARM_DRIVER_ERROR;
1169     }
1170 
1171     switch (control & ARM_SPI_CONTROL_Msk)
1172     {
1173         case ARM_SPI_MODE_INACTIVE:
1174             LPSPI_Enable(lpspi->resource->base, false);
1175             break;
1176         case ARM_SPI_MODE_MASTER: /* SPI Master (Output on SOUT, Input on SIN); arg = Bus Speed in bps */
1177         {
1178             LPSPI_MasterTransferCreateHandle(lpspi->resource->base, &(lpspi->handle->masterHandle),
1179                                              KSDK_LPSPI_MasterInterruptCallback, (void *)lpspi->cb_event);
1180             lpspi->baudRate_Bps = arg;
1181             isContinue          = true;
1182             break;
1183         }
1184         case ARM_SPI_MODE_SLAVE: /* SPI Slave  (Output on SOUT, Input on SIN) */
1185         {
1186             LPSPI_SlaveTransferCreateHandle(lpspi->resource->base, &(lpspi->handle->slaveHandle),
1187                                             KSDK_LPSPI_SlaveInterruptCallback, (void *)lpspi->cb_event);
1188             isContinue = true;
1189             break;
1190         }
1191         case ARM_SPI_SET_BUS_SPEED: /* Set Bus Speed in bps; */
1192         {
1193             uint32_t tcrPrescaleValue = 0;
1194             LPSPI_Enable(lpspi->resource->base, false);
1195 
1196             if (!LPSPI_IsMaster(lpspi->resource->base))
1197             {
1198                 result = ARM_DRIVER_ERROR_UNSUPPORTED;
1199                 break;
1200             }
1201             if (0UL ==
1202                 LPSPI_MasterSetBaudRate(lpspi->resource->base, arg, lpspi->resource->GetFreq(), &tcrPrescaleValue))
1203             {
1204                 result = ARM_DRIVER_ERROR;
1205                 break;
1206             }
1207 
1208             LPSPI_Enable(lpspi->resource->base, true);
1209             lpspi->baudRate_Bps = arg;
1210             break;
1211         }
1212         case ARM_SPI_GET_BUS_SPEED: /* Get Bus Speed in bps */
1213             if (!LPSPI_IsMaster(lpspi->resource->base))
1214             {
1215                 result = ARM_DRIVER_ERROR_UNSUPPORTED;
1216                 break;
1217             }
1218             result = (int32_t)(lpspi->baudRate_Bps);
1219             break;
1220         case ARM_SPI_CONTROL_SS: /* Control Slave Select; arg = 0:inactive, 1:active  */
1221             result = ARM_DRIVER_ERROR_UNSUPPORTED;
1222             break;
1223         case ARM_SPI_ABORT_TRANSFER: /* Abort current data transfer */
1224 
1225             if (LPSPI_IsMaster(lpspi->resource->base))
1226             {
1227                 LPSPI_MasterTransferAbort(lpspi->resource->base, &(lpspi->handle->masterHandle));
1228             }
1229             else
1230             {
1231                 LPSPI_SlaveTransferAbort(lpspi->resource->base, &(lpspi->handle->slaveHandle));
1232             }
1233             break;
1234 
1235         case ARM_SPI_SET_DEFAULT_TX_VALUE: /* Set default Transmit value; arg = value */
1236             if (LPSPI_IsMaster(lpspi->resource->base))
1237             {
1238                 LPSPI_SetDummyData(lpspi->resource->base, (uint8_t)arg);
1239             }
1240             else
1241             {
1242                 /* Mode is not supported by current driver.
1243                  * In slave mode, if the tx buffer is NULL, the output pin will keep tristated.
1244                  */
1245                 result = ARM_DRIVER_ERROR_UNSUPPORTED;
1246             }
1247             break;
1248 
1249         case ARM_SPI_MODE_MASTER_SIMPLEX: /* SPI Master (Output/Input on SOUT); arg = Bus Speed in bps */
1250         {
1251             LPSPI_MasterTransferCreateHandle(lpspi->resource->base, &(lpspi->handle->masterHandle),
1252                                              KSDK_LPSPI_MasterInterruptCallback, (void *)lpspi->cb_event);
1253             lpspi->baudRate_Bps = arg;
1254             isContinue          = true;
1255             break;
1256         }
1257         case ARM_SPI_MODE_SLAVE_SIMPLEX: /* SPI Slave  (Output/Input on SIN) */
1258         {
1259             LPSPI_SlaveTransferCreateHandle(lpspi->resource->base, &(lpspi->handle->slaveHandle),
1260                                             KSDK_LPSPI_SlaveInterruptCallback, (void *)lpspi->cb_event);
1261             isContinue = true;
1262             break;
1263         }
1264 
1265         default:
1266             isContinue = true;
1267             break;
1268     }
1269     if (isContinue)
1270     {
1271         result = LPSPI_CommonControl(control, lpspi->baudRate_Bps, lpspi->resource, &lpspi->flags);
1272     }
1273     return result;
1274 }
1275 
LPSPI_InterruptGetStatus(cmsis_lpspi_interrupt_driver_state_t * lpspi)1276 static ARM_SPI_STATUS LPSPI_InterruptGetStatus(cmsis_lpspi_interrupt_driver_state_t *lpspi)
1277 {
1278     ARM_SPI_STATUS stat = {0};
1279 
1280     if (LPSPI_IsMaster(lpspi->resource->base))
1281     {
1282         stat.busy      = ((uint8_t)kLPSPI_Busy == lpspi->handle->masterHandle.state) ? (1U) : (0U);
1283         stat.data_lost = ((uint8_t)kLPSPI_Error == lpspi->handle->masterHandle.state) ? (1U) : (0U);
1284     }
1285     else
1286     {
1287         stat.busy      = ((uint8_t)kLPSPI_Busy == lpspi->handle->slaveHandle.state) ? (1U) : (0U);
1288         stat.data_lost = ((uint8_t)kLPSPI_Error == lpspi->handle->slaveHandle.state) ? (1U) : (0U);
1289     }
1290     stat.mode_fault = 0U;
1291     stat.reserved   = 0U;
1292 
1293     return stat;
1294 }
1295 
1296 #endif
1297 
1298 #if defined(LPSPI0) && defined(RTE_SPI0) && RTE_SPI0
1299 
1300 /* User needs to provide the implementation for LPSPI0_GetFreq/InitPins/DeinitPins
1301 in the application for enabling according instance. */
1302 extern uint32_t LPSPI0_GetFreq(void);
1303 
1304 static cmsis_lpspi_resource_t LPSPI0_Resource = {LPSPI0, 0, LPSPI0_GetFreq};
1305 
1306 #if defined(RTE_SPI0_DMA_EN) && RTE_SPI0_DMA_EN
1307 
1308 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
1309 static cmsis_lpspi_edma_resource_t LPSPI0_EdmaResource = {
1310     RTE_SPI0_DMA_TX_DMA_BASE,    RTE_SPI0_DMA_TX_CH,          (uint16_t)RTE_SPI0_DMA_TX_PERI_SEL,
1311     RTE_SPI0_DMA_RX_DMA_BASE,    RTE_SPI0_DMA_RX_CH,          (uint16_t)RTE_SPI0_DMA_RX_PERI_SEL,
1312 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
1313     RTE_SPI0_DMA_TX_DMAMUX_BASE, RTE_SPI0_DMA_RX_DMAMUX_BASE,
1314 #endif
1315 };
1316 
1317 AT_NONCACHEABLE_SECTION(static cmsis_lpspi_edma_handle_t LPSPI0_EdmaHandle);
1318 static edma_handle_t LPSPI0_EdmaTxDataToTxRegHandle;
1319 static edma_handle_t LPSPI0_EdmaRxRegToRxDataHandle;
1320 
1321 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
1322 ARMCC_SECTION("lpspi0_edma_driver_state")
1323 static cmsis_lpspi_edma_driver_state_t LPSPI0_EdmaDriverState = {
1324 #else
1325 static cmsis_lpspi_edma_driver_state_t LPSPI0_EdmaDriverState = {
1326 #endif
1327     &LPSPI0_Resource,
1328     &LPSPI0_EdmaResource,
1329     &LPSPI0_EdmaHandle,
1330     &LPSPI0_EdmaRxRegToRxDataHandle,
1331     &LPSPI0_EdmaTxDataToTxRegHandle,
1332 };
1333 
LPSPI0_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)1334 static int32_t LPSPI0_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)
1335 {
1336 #ifdef RTE_SPI0_PIN_INIT
1337     RTE_SPI0_PIN_INIT();
1338 #endif
1339     return LPSPI_EdmaInitialize(cb_event, &LPSPI0_EdmaDriverState);
1340 }
1341 
LPSPI0_EdmaUninitialize(void)1342 static int32_t LPSPI0_EdmaUninitialize(void)
1343 {
1344 #ifdef RTE_SPI0_PIN_DEINIT
1345     RTE_SPI0_PIN_DEINIT();
1346 #endif
1347     return LPSPI_EdmaUninitialize(&LPSPI0_EdmaDriverState);
1348 }
1349 
LPSPI0_EdmaPowerControl(ARM_POWER_STATE state)1350 static int32_t LPSPI0_EdmaPowerControl(ARM_POWER_STATE state)
1351 {
1352     return LPSPI_EdmaPowerControl(state, &LPSPI0_EdmaDriverState);
1353 }
1354 
LPSPI0_EdmaSend(const void * data,uint32_t num)1355 static int32_t LPSPI0_EdmaSend(const void *data, uint32_t num)
1356 {
1357     return LPSPI_EdmaSend(data, num, &LPSPI0_EdmaDriverState);
1358 }
1359 
LPSPI0_EdmaReceive(void * data,uint32_t num)1360 static int32_t LPSPI0_EdmaReceive(void *data, uint32_t num)
1361 {
1362     return LPSPI_EdmaReceive(data, num, &LPSPI0_EdmaDriverState);
1363 }
1364 
LPSPI0_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)1365 static int32_t LPSPI0_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
1366 {
1367     return LPSPI_EdmaTransfer(data_out, data_in, num, &LPSPI0_EdmaDriverState);
1368 }
1369 
LPSPI0_EdmaGetCount(void)1370 static uint32_t LPSPI0_EdmaGetCount(void)
1371 {
1372     return LPSPI_EdmaGetCount(&LPSPI0_EdmaDriverState);
1373 }
1374 
LPSPI0_EdmaControl(uint32_t control,uint32_t arg)1375 static int32_t LPSPI0_EdmaControl(uint32_t control, uint32_t arg)
1376 {
1377     return LPSPI_EdmaControl(control, arg, &LPSPI0_EdmaDriverState);
1378 }
1379 
LPSPI0_EdmaGetStatus(void)1380 static ARM_SPI_STATUS LPSPI0_EdmaGetStatus(void)
1381 {
1382     return LPSPI_EdmaGetStatus(&LPSPI0_EdmaDriverState);
1383 }
1384 
1385 #endif
1386 
1387 #else
1388 
1389 static cmsis_lpspi_handle_t LPSPI0_Handle;
1390 
1391 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
1392 ARMCC_SECTION("lpspi0_interrupt_driver_state")
1393 static cmsis_lpspi_interrupt_driver_state_t LPSPI0_InterruptDriverState = {
1394 #else
1395 static cmsis_lpspi_interrupt_driver_state_t LPSPI0_InterruptDriverState = {
1396 #endif
1397     &LPSPI0_Resource,
1398     &LPSPI0_Handle,
1399 };
1400 
LPSPI0_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)1401 static int32_t LPSPI0_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)
1402 {
1403 #ifdef RTE_SPI0_PIN_INIT
1404     RTE_SPI0_PIN_INIT();
1405 #endif
1406     return LPSPI_InterruptInitialize(cb_event, &LPSPI0_InterruptDriverState);
1407 }
1408 
LPSPI0_InterruptUninitialize(void)1409 static int32_t LPSPI0_InterruptUninitialize(void)
1410 {
1411 #ifdef RTE_SPI0_PIN_DEINIT
1412     RTE_SPI0_PIN_DEINIT();
1413 #endif
1414     return LPSPI_InterruptUninitialize(&LPSPI0_InterruptDriverState);
1415 }
1416 
LPSPI0_InterruptPowerControl(ARM_POWER_STATE state)1417 static int32_t LPSPI0_InterruptPowerControl(ARM_POWER_STATE state)
1418 {
1419     return LPSPI_InterruptPowerControl(state, &LPSPI0_InterruptDriverState);
1420 }
1421 
LPSPI0_InterruptSend(const void * data,uint32_t num)1422 static int32_t LPSPI0_InterruptSend(const void *data, uint32_t num)
1423 {
1424     return LPSPI_InterruptSend(data, num, &LPSPI0_InterruptDriverState);
1425 }
1426 
LPSPI0_InterruptReceive(void * data,uint32_t num)1427 static int32_t LPSPI0_InterruptReceive(void *data, uint32_t num)
1428 {
1429     return LPSPI_InterruptReceive(data, num, &LPSPI0_InterruptDriverState);
1430 }
1431 
LPSPI0_InterruptTransfer(const void * data_out,void * data_in,uint32_t num)1432 static int32_t LPSPI0_InterruptTransfer(const void *data_out, void *data_in, uint32_t num)
1433 {
1434     return LPSPI_InterruptTransfer(data_out, data_in, num, &LPSPI0_InterruptDriverState);
1435 }
1436 
LPSPI0_InterruptGetCount(void)1437 static uint32_t LPSPI0_InterruptGetCount(void)
1438 {
1439     return LPSPI_InterruptGetCount(&LPSPI0_InterruptDriverState);
1440 }
1441 
LPSPI0_InterruptControl(uint32_t control,uint32_t arg)1442 static int32_t LPSPI0_InterruptControl(uint32_t control, uint32_t arg)
1443 {
1444     return LPSPI_InterruptControl(control, arg, &LPSPI0_InterruptDriverState);
1445 }
1446 
LPSPI0_InterruptGetStatus(void)1447 static ARM_SPI_STATUS LPSPI0_InterruptGetStatus(void)
1448 {
1449     return LPSPI_InterruptGetStatus(&LPSPI0_InterruptDriverState);
1450 }
1451 
1452 #endif
1453 
1454 ARM_DRIVER_SPI Driver_SPI0 = {
1455     LPSPIx_GetVersion,     LPSPIx_GetCapabilities,
1456 #if defined(RTE_SPI0_DMA_EN) && RTE_SPI0_DMA_EN
1457     LPSPI0_EdmaInitialize, LPSPI0_EdmaUninitialize, LPSPI0_EdmaPowerControl, LPSPI0_EdmaSend,     LPSPI0_EdmaReceive,
1458     LPSPI0_EdmaTransfer,   LPSPI0_EdmaGetCount,     LPSPI0_EdmaControl,      LPSPI0_EdmaGetStatus
1459 #else
1460     LPSPI0_InterruptInitialize, LPSPI0_InterruptUninitialize, LPSPI0_InterruptPowerControl, LPSPI0_InterruptSend,
1461     LPSPI0_InterruptReceive,    LPSPI0_InterruptTransfer,     LPSPI0_InterruptGetCount,     LPSPI0_InterruptControl,
1462     LPSPI0_InterruptGetStatus
1463 #endif
1464 };
1465 
1466 #endif /*  LPSPI0  */
1467 
1468 #if defined(LPSPI1) && defined(RTE_SPI1) && RTE_SPI1
1469 
1470 /* User needs to provide the implementation for LPSPI1_GetFreq/InitPins/DeinitPins
1471 in the application for enabling according instance. */
1472 extern uint32_t LPSPI1_GetFreq(void);
1473 
1474 static cmsis_lpspi_resource_t LPSPI1_Resource = {LPSPI1, 1, LPSPI1_GetFreq};
1475 
1476 #if defined(RTE_SPI1_DMA_EN) && RTE_SPI1_DMA_EN
1477 
1478 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
1479 static cmsis_lpspi_edma_resource_t LPSPI1_EdmaResource = {
1480     RTE_SPI1_DMA_TX_DMA_BASE,    RTE_SPI1_DMA_TX_CH,          (uint16_t)RTE_SPI1_DMA_TX_PERI_SEL,
1481     RTE_SPI1_DMA_RX_DMA_BASE,    RTE_SPI1_DMA_RX_CH,          (uint16_t)RTE_SPI1_DMA_RX_PERI_SEL,
1482 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
1483     RTE_SPI1_DMA_TX_DMAMUX_BASE, RTE_SPI1_DMA_RX_DMAMUX_BASE,
1484 #endif
1485 };
1486 
1487 AT_NONCACHEABLE_SECTION(static cmsis_lpspi_edma_handle_t LPSPI1_EdmaHandle);
1488 static edma_handle_t LPSPI1_EdmaTxDataToTxRegHandle;
1489 static edma_handle_t LPSPI1_EdmaRxRegToRxDataHandle;
1490 
1491 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
1492 ARMCC_SECTION("lpspi1_edma_driver_state")
1493 static cmsis_lpspi_edma_driver_state_t LPSPI1_EdmaDriverState = {
1494 #else
1495 static cmsis_lpspi_edma_driver_state_t LPSPI1_EdmaDriverState = {
1496 #endif
1497     &LPSPI1_Resource,
1498     &LPSPI1_EdmaResource,
1499     &LPSPI1_EdmaHandle,
1500     &LPSPI1_EdmaRxRegToRxDataHandle,
1501     &LPSPI1_EdmaTxDataToTxRegHandle,
1502 };
1503 
LPSPI1_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)1504 static int32_t LPSPI1_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)
1505 {
1506 #ifdef RTE_SPI1_PIN_INIT
1507     RTE_SPI1_PIN_INIT();
1508 #endif
1509     return LPSPI_EdmaInitialize(cb_event, &LPSPI1_EdmaDriverState);
1510 }
1511 
LPSPI1_EdmaUninitialize(void)1512 static int32_t LPSPI1_EdmaUninitialize(void)
1513 {
1514 #ifdef RTE_SPI1_PIN_DEINIT
1515     RTE_SPI1_PIN_DEINIT();
1516 #endif
1517     return LPSPI_EdmaUninitialize(&LPSPI1_EdmaDriverState);
1518 }
1519 
LPSPI1_EdmaPowerControl(ARM_POWER_STATE state)1520 static int32_t LPSPI1_EdmaPowerControl(ARM_POWER_STATE state)
1521 {
1522     return LPSPI_EdmaPowerControl(state, &LPSPI1_EdmaDriverState);
1523 }
1524 
LPSPI1_EdmaSend(const void * data,uint32_t num)1525 static int32_t LPSPI1_EdmaSend(const void *data, uint32_t num)
1526 {
1527     return LPSPI_EdmaSend(data, num, &LPSPI1_EdmaDriverState);
1528 }
1529 
LPSPI1_EdmaReceive(void * data,uint32_t num)1530 static int32_t LPSPI1_EdmaReceive(void *data, uint32_t num)
1531 {
1532     return LPSPI_EdmaReceive(data, num, &LPSPI1_EdmaDriverState);
1533 }
1534 
LPSPI1_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)1535 static int32_t LPSPI1_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
1536 {
1537     return LPSPI_EdmaTransfer(data_out, data_in, num, &LPSPI1_EdmaDriverState);
1538 }
1539 
LPSPI1_EdmaGetCount(void)1540 static uint32_t LPSPI1_EdmaGetCount(void)
1541 {
1542     return LPSPI_EdmaGetCount(&LPSPI1_EdmaDriverState);
1543 }
1544 
LPSPI1_EdmaControl(uint32_t control,uint32_t arg)1545 static int32_t LPSPI1_EdmaControl(uint32_t control, uint32_t arg)
1546 {
1547     return LPSPI_EdmaControl(control, arg, &LPSPI1_EdmaDriverState);
1548 }
1549 
LPSPI1_EdmaGetStatus(void)1550 static ARM_SPI_STATUS LPSPI1_EdmaGetStatus(void)
1551 {
1552     return LPSPI_EdmaGetStatus(&LPSPI1_EdmaDriverState);
1553 }
1554 
1555 #endif
1556 
1557 #else
1558 
1559 static cmsis_lpspi_handle_t LPSPI1_Handle;
1560 
1561 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
1562 ARMCC_SECTION("lpspi1_interrupt_driver_state")
1563 static cmsis_lpspi_interrupt_driver_state_t LPSPI1_InterruptDriverState = {
1564 #else
1565 static cmsis_lpspi_interrupt_driver_state_t LPSPI1_InterruptDriverState = {
1566 #endif
1567     &LPSPI1_Resource,
1568     &LPSPI1_Handle,
1569 };
1570 
LPSPI1_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)1571 static int32_t LPSPI1_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)
1572 {
1573 #ifdef RTE_SPI1_PIN_INIT
1574     RTE_SPI1_PIN_INIT();
1575 #endif
1576     return LPSPI_InterruptInitialize(cb_event, &LPSPI1_InterruptDriverState);
1577 }
1578 
LPSPI1_InterruptUninitialize(void)1579 static int32_t LPSPI1_InterruptUninitialize(void)
1580 {
1581 #ifdef RTE_SPI1_PIN_DEINIT
1582     RTE_SPI1_PIN_DEINIT();
1583 #endif
1584     return LPSPI_InterruptUninitialize(&LPSPI1_InterruptDriverState);
1585 }
1586 
LPSPI1_InterruptPowerControl(ARM_POWER_STATE state)1587 static int32_t LPSPI1_InterruptPowerControl(ARM_POWER_STATE state)
1588 {
1589     return LPSPI_InterruptPowerControl(state, &LPSPI1_InterruptDriverState);
1590 }
1591 
LPSPI1_InterruptSend(const void * data,uint32_t num)1592 static int32_t LPSPI1_InterruptSend(const void *data, uint32_t num)
1593 {
1594     return LPSPI_InterruptSend(data, num, &LPSPI1_InterruptDriverState);
1595 }
1596 
LPSPI1_InterruptReceive(void * data,uint32_t num)1597 static int32_t LPSPI1_InterruptReceive(void *data, uint32_t num)
1598 {
1599     return LPSPI_InterruptReceive(data, num, &LPSPI1_InterruptDriverState);
1600 }
1601 
LPSPI1_InterruptTransfer(const void * data_out,void * data_in,uint32_t num)1602 static int32_t LPSPI1_InterruptTransfer(const void *data_out, void *data_in, uint32_t num)
1603 {
1604     return LPSPI_InterruptTransfer(data_out, data_in, num, &LPSPI1_InterruptDriverState);
1605 }
1606 
LPSPI1_InterruptGetCount(void)1607 static uint32_t LPSPI1_InterruptGetCount(void)
1608 {
1609     return LPSPI_InterruptGetCount(&LPSPI1_InterruptDriverState);
1610 }
1611 
LPSPI1_InterruptControl(uint32_t control,uint32_t arg)1612 static int32_t LPSPI1_InterruptControl(uint32_t control, uint32_t arg)
1613 {
1614     return LPSPI_InterruptControl(control, arg, &LPSPI1_InterruptDriverState);
1615 }
1616 
LPSPI1_InterruptGetStatus(void)1617 static ARM_SPI_STATUS LPSPI1_InterruptGetStatus(void)
1618 {
1619     return LPSPI_InterruptGetStatus(&LPSPI1_InterruptDriverState);
1620 }
1621 
1622 #endif
1623 
1624 ARM_DRIVER_SPI Driver_SPI1 = {
1625     LPSPIx_GetVersion,     LPSPIx_GetCapabilities,
1626 #if defined(RTE_SPI1_DMA_EN) && RTE_SPI1_DMA_EN
1627     LPSPI1_EdmaInitialize, LPSPI1_EdmaUninitialize, LPSPI1_EdmaPowerControl, LPSPI1_EdmaSend,     LPSPI1_EdmaReceive,
1628     LPSPI1_EdmaTransfer,   LPSPI1_EdmaGetCount,     LPSPI1_EdmaControl,      LPSPI1_EdmaGetStatus
1629 #else
1630     LPSPI1_InterruptInitialize, LPSPI1_InterruptUninitialize, LPSPI1_InterruptPowerControl, LPSPI1_InterruptSend,
1631     LPSPI1_InterruptReceive,    LPSPI1_InterruptTransfer,     LPSPI1_InterruptGetCount,     LPSPI1_InterruptControl,
1632     LPSPI1_InterruptGetStatus
1633 #endif
1634 };
1635 
1636 #endif /*  LPSPI1  */
1637 
1638 #if defined(LPSPI2) && defined(RTE_SPI2) && RTE_SPI2
1639 
1640 /* User needs to provide the implementation for LPSPI2_GetFreq/InitPins/DeinitPins
1641 in the application for enabling according instance. */
1642 extern uint32_t LPSPI2_GetFreq(void);
1643 
1644 static cmsis_lpspi_resource_t LPSPI2_Resource = {LPSPI2, 2, LPSPI2_GetFreq};
1645 
1646 #if defined(RTE_SPI2_DMA_EN) && RTE_SPI2_DMA_EN
1647 
1648 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
1649 static cmsis_lpspi_edma_resource_t LPSPI2_EdmaResource = {
1650     RTE_SPI2_DMA_TX_DMA_BASE,    RTE_SPI2_DMA_TX_CH,          (uint16_t)RTE_SPI2_DMA_TX_PERI_SEL,
1651     RTE_SPI2_DMA_RX_DMA_BASE,    RTE_SPI2_DMA_RX_CH,          (uint16_t)RTE_SPI2_DMA_RX_PERI_SEL,
1652 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
1653     RTE_SPI2_DMA_TX_DMAMUX_BASE, RTE_SPI2_DMA_RX_DMAMUX_BASE,
1654 #endif
1655 };
1656 
1657 AT_NONCACHEABLE_SECTION(static cmsis_lpspi_edma_handle_t LPSPI2_EdmaHandle);
1658 static edma_handle_t LPSPI2_EdmaTxDataToTxRegHandle;
1659 static edma_handle_t LPSPI2_EdmaRxRegToRxDataHandle;
1660 
1661 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
1662 ARMCC_SECTION("lpspi2_edma_driver_state")
1663 static cmsis_lpspi_edma_driver_state_t LPSPI2_EdmaDriverState = {
1664 #else
1665 static cmsis_lpspi_edma_driver_state_t LPSPI2_EdmaDriverState = {
1666 #endif
1667     &LPSPI2_Resource,
1668     &LPSPI2_EdmaResource,
1669     &LPSPI2_EdmaHandle,
1670     &LPSPI2_EdmaRxRegToRxDataHandle,
1671     &LPSPI2_EdmaTxDataToTxRegHandle,
1672 };
1673 
LPSPI2_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)1674 static int32_t LPSPI2_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)
1675 {
1676 #ifdef RTE_SPI2_PIN_INIT
1677     RTE_SPI2_PIN_INIT();
1678 #endif
1679     return LPSPI_EdmaInitialize(cb_event, &LPSPI2_EdmaDriverState);
1680 }
1681 
LPSPI2_EdmaUninitialize(void)1682 static int32_t LPSPI2_EdmaUninitialize(void)
1683 {
1684 #ifdef RTE_SPI2_PIN_DEINIT
1685     RTE_SPI2_PIN_DEINIT();
1686 #endif
1687     return LPSPI_EdmaUninitialize(&LPSPI2_EdmaDriverState);
1688 }
1689 
LPSPI2_EdmaPowerControl(ARM_POWER_STATE state)1690 static int32_t LPSPI2_EdmaPowerControl(ARM_POWER_STATE state)
1691 {
1692     return LPSPI_EdmaPowerControl(state, &LPSPI2_EdmaDriverState);
1693 }
1694 
LPSPI2_EdmaSend(const void * data,uint32_t num)1695 static int32_t LPSPI2_EdmaSend(const void *data, uint32_t num)
1696 {
1697     return LPSPI_EdmaSend(data, num, &LPSPI2_EdmaDriverState);
1698 }
1699 
LPSPI2_EdmaReceive(void * data,uint32_t num)1700 static int32_t LPSPI2_EdmaReceive(void *data, uint32_t num)
1701 {
1702     return LPSPI_EdmaReceive(data, num, &LPSPI2_EdmaDriverState);
1703 }
1704 
LPSPI2_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)1705 static int32_t LPSPI2_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
1706 {
1707     return LPSPI_EdmaTransfer(data_out, data_in, num, &LPSPI2_EdmaDriverState);
1708 }
1709 
LPSPI2_EdmaGetCount(void)1710 static uint32_t LPSPI2_EdmaGetCount(void)
1711 {
1712     return LPSPI_EdmaGetCount(&LPSPI2_EdmaDriverState);
1713 }
1714 
LPSPI2_EdmaControl(uint32_t control,uint32_t arg)1715 static int32_t LPSPI2_EdmaControl(uint32_t control, uint32_t arg)
1716 {
1717     return LPSPI_EdmaControl(control, arg, &LPSPI2_EdmaDriverState);
1718 }
1719 
LPSPI2_EdmaGetStatus(void)1720 static ARM_SPI_STATUS LPSPI2_EdmaGetStatus(void)
1721 {
1722     return LPSPI_EdmaGetStatus(&LPSPI2_EdmaDriverState);
1723 }
1724 
1725 #endif
1726 
1727 #else
1728 
1729 static cmsis_lpspi_handle_t LPSPI2_Handle;
1730 
1731 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
1732 ARMCC_SECTION("lpspi2_interrupt_driver_state")
1733 static cmsis_lpspi_interrupt_driver_state_t LPSPI2_InterruptDriverState = {
1734 #else
1735 static cmsis_lpspi_interrupt_driver_state_t LPSPI2_InterruptDriverState = {
1736 #endif
1737     &LPSPI2_Resource,
1738     &LPSPI2_Handle,
1739 };
1740 
LPSPI2_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)1741 static int32_t LPSPI2_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)
1742 {
1743 #ifdef RTE_SPI2_PIN_INIT
1744     RTE_SPI2_PIN_INIT();
1745 #endif
1746     return LPSPI_InterruptInitialize(cb_event, &LPSPI2_InterruptDriverState);
1747 }
1748 
LPSPI2_InterruptUninitialize(void)1749 static int32_t LPSPI2_InterruptUninitialize(void)
1750 {
1751 #ifdef RTE_SPI2_PIN_DEINIT
1752     RTE_SPI2_PIN_DEINIT();
1753 #endif
1754     return LPSPI_InterruptUninitialize(&LPSPI2_InterruptDriverState);
1755 }
1756 
LPSPI2_InterruptPowerControl(ARM_POWER_STATE state)1757 static int32_t LPSPI2_InterruptPowerControl(ARM_POWER_STATE state)
1758 {
1759     return LPSPI_InterruptPowerControl(state, &LPSPI2_InterruptDriverState);
1760 }
1761 
LPSPI2_InterruptSend(const void * data,uint32_t num)1762 static int32_t LPSPI2_InterruptSend(const void *data, uint32_t num)
1763 {
1764     return LPSPI_InterruptSend(data, num, &LPSPI2_InterruptDriverState);
1765 }
1766 
LPSPI2_InterruptReceive(void * data,uint32_t num)1767 static int32_t LPSPI2_InterruptReceive(void *data, uint32_t num)
1768 {
1769     return LPSPI_InterruptReceive(data, num, &LPSPI2_InterruptDriverState);
1770 }
1771 
LPSPI2_InterruptTransfer(const void * data_out,void * data_in,uint32_t num)1772 static int32_t LPSPI2_InterruptTransfer(const void *data_out, void *data_in, uint32_t num)
1773 {
1774     return LPSPI_InterruptTransfer(data_out, data_in, num, &LPSPI2_InterruptDriverState);
1775 }
1776 
LPSPI2_InterruptGetCount(void)1777 static uint32_t LPSPI2_InterruptGetCount(void)
1778 {
1779     return LPSPI_InterruptGetCount(&LPSPI2_InterruptDriverState);
1780 }
1781 
LPSPI2_InterruptControl(uint32_t control,uint32_t arg)1782 static int32_t LPSPI2_InterruptControl(uint32_t control, uint32_t arg)
1783 {
1784     return LPSPI_InterruptControl(control, arg, &LPSPI2_InterruptDriverState);
1785 }
1786 
LPSPI2_InterruptGetStatus(void)1787 static ARM_SPI_STATUS LPSPI2_InterruptGetStatus(void)
1788 {
1789     return LPSPI_InterruptGetStatus(&LPSPI2_InterruptDriverState);
1790 }
1791 
1792 #endif
1793 
1794 ARM_DRIVER_SPI Driver_SPI2 = {
1795     LPSPIx_GetVersion,     LPSPIx_GetCapabilities,
1796 #if defined(RTE_SPI2_DMA_EN) && RTE_SPI2_DMA_EN
1797     LPSPI2_EdmaInitialize, LPSPI2_EdmaUninitialize, LPSPI2_EdmaPowerControl, LPSPI2_EdmaSend,     LPSPI2_EdmaReceive,
1798     LPSPI2_EdmaTransfer,   LPSPI2_EdmaGetCount,     LPSPI2_EdmaControl,      LPSPI2_EdmaGetStatus
1799 #else
1800     LPSPI2_InterruptInitialize, LPSPI2_InterruptUninitialize, LPSPI2_InterruptPowerControl, LPSPI2_InterruptSend,
1801     LPSPI2_InterruptReceive,    LPSPI2_InterruptTransfer,     LPSPI2_InterruptGetCount,     LPSPI2_InterruptControl,
1802     LPSPI2_InterruptGetStatus
1803 #endif
1804 };
1805 
1806 #endif /*  LPSPI2  */
1807 
1808 #if defined(LPSPI3) && defined(RTE_SPI3) && RTE_SPI3
1809 
1810 /* User needs to provide the implementation for LPSPI3_GetFreq/InitPins/DeinitPins
1811 in the application for enabling according instance. */
1812 extern uint32_t LPSPI3_GetFreq(void);
1813 
1814 static cmsis_lpspi_resource_t LPSPI3_Resource = {LPSPI3, 3, LPSPI3_GetFreq};
1815 
1816 #if defined(RTE_SPI3_DMA_EN) && RTE_SPI3_DMA_EN
1817 
1818 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
1819 static cmsis_lpspi_edma_resource_t LPSPI3_EdmaResource = {
1820     RTE_SPI3_DMA_TX_DMA_BASE,    RTE_SPI3_DMA_TX_CH,          (uint16_t)RTE_SPI3_DMA_TX_PERI_SEL,
1821     RTE_SPI3_DMA_RX_DMA_BASE,    RTE_SPI3_DMA_RX_CH,          (uint16_t)RTE_SPI3_DMA_RX_PERI_SEL,
1822 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
1823     RTE_SPI3_DMA_TX_DMAMUX_BASE, RTE_SPI3_DMA_RX_DMAMUX_BASE,
1824 #endif
1825 };
1826 
1827 AT_NONCACHEABLE_SECTION(static cmsis_lpspi_edma_handle_t LPSPI3_EdmaHandle);
1828 static edma_handle_t LPSPI3_EdmaTxDataToTxRegHandle;
1829 static edma_handle_t LPSPI3_EdmaRxRegToRxDataHandle;
1830 
1831 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
1832 ARMCC_SECTION("lpspi3_edma_driver_state")
1833 static cmsis_lpspi_edma_driver_state_t LPSPI3_EdmaDriverState = {
1834 #else
1835 static cmsis_lpspi_edma_driver_state_t LPSPI3_EdmaDriverState = {
1836 #endif
1837     &LPSPI3_Resource,
1838     &LPSPI3_EdmaResource,
1839     &LPSPI3_EdmaHandle,
1840     &LPSPI3_EdmaRxRegToRxDataHandle,
1841     &LPSPI3_EdmaTxDataToTxRegHandle,
1842 };
1843 
LPSPI3_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)1844 static int32_t LPSPI3_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)
1845 {
1846 #ifdef RTE_SPI3_PIN_INIT
1847     RTE_SPI3_PIN_INIT();
1848 #endif
1849     return LPSPI_EdmaInitialize(cb_event, &LPSPI3_EdmaDriverState);
1850 }
1851 
LPSPI3_EdmaUninitialize(void)1852 static int32_t LPSPI3_EdmaUninitialize(void)
1853 {
1854 #ifdef RTE_SPI3_PIN_DEINIT
1855     RTE_SPI3_PIN_DEINIT();
1856 #endif
1857     return LPSPI_EdmaUninitialize(&LPSPI3_EdmaDriverState);
1858 }
1859 
LPSPI3_EdmaPowerControl(ARM_POWER_STATE state)1860 static int32_t LPSPI3_EdmaPowerControl(ARM_POWER_STATE state)
1861 {
1862     return LPSPI_EdmaPowerControl(state, &LPSPI3_EdmaDriverState);
1863 }
1864 
LPSPI3_EdmaSend(const void * data,uint32_t num)1865 static int32_t LPSPI3_EdmaSend(const void *data, uint32_t num)
1866 {
1867     return LPSPI_EdmaSend(data, num, &LPSPI3_EdmaDriverState);
1868 }
1869 
LPSPI3_EdmaReceive(void * data,uint32_t num)1870 static int32_t LPSPI3_EdmaReceive(void *data, uint32_t num)
1871 {
1872     return LPSPI_EdmaReceive(data, num, &LPSPI3_EdmaDriverState);
1873 }
1874 
LPSPI3_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)1875 static int32_t LPSPI3_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
1876 {
1877     return LPSPI_EdmaTransfer(data_out, data_in, num, &LPSPI3_EdmaDriverState);
1878 }
1879 
LPSPI3_EdmaGetCount(void)1880 static uint32_t LPSPI3_EdmaGetCount(void)
1881 {
1882     return LPSPI_EdmaGetCount(&LPSPI3_EdmaDriverState);
1883 }
1884 
LPSPI3_EdmaControl(uint32_t control,uint32_t arg)1885 static int32_t LPSPI3_EdmaControl(uint32_t control, uint32_t arg)
1886 {
1887     return LPSPI_EdmaControl(control, arg, &LPSPI3_EdmaDriverState);
1888 }
1889 
LPSPI3_EdmaGetStatus(void)1890 static ARM_SPI_STATUS LPSPI3_EdmaGetStatus(void)
1891 {
1892     return LPSPI_EdmaGetStatus(&LPSPI3_EdmaDriverState);
1893 }
1894 
1895 #endif
1896 
1897 #else
1898 
1899 static cmsis_lpspi_handle_t LPSPI3_Handle;
1900 
1901 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
1902 ARMCC_SECTION("lpspi3_interrupt_driver_state")
1903 static cmsis_lpspi_interrupt_driver_state_t LPSPI3_InterruptDriverState = {
1904 #else
1905 static cmsis_lpspi_interrupt_driver_state_t LPSPI3_InterruptDriverState = {
1906 #endif
1907     &LPSPI3_Resource,
1908     &LPSPI3_Handle,
1909 };
1910 
LPSPI3_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)1911 static int32_t LPSPI3_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)
1912 {
1913 #ifdef RTE_SPI3_PIN_INIT
1914     RTE_SPI3_PIN_INIT();
1915 #endif
1916     return LPSPI_InterruptInitialize(cb_event, &LPSPI3_InterruptDriverState);
1917 }
1918 
LPSPI3_InterruptUninitialize(void)1919 static int32_t LPSPI3_InterruptUninitialize(void)
1920 {
1921 #ifdef RTE_SPI3_PIN_DEINIT
1922     RTE_SPI3_PIN_DEINIT();
1923 #endif
1924     return LPSPI_InterruptUninitialize(&LPSPI3_InterruptDriverState);
1925 }
1926 
LPSPI3_InterruptPowerControl(ARM_POWER_STATE state)1927 static int32_t LPSPI3_InterruptPowerControl(ARM_POWER_STATE state)
1928 {
1929     return LPSPI_InterruptPowerControl(state, &LPSPI3_InterruptDriverState);
1930 }
1931 
LPSPI3_InterruptSend(const void * data,uint32_t num)1932 static int32_t LPSPI3_InterruptSend(const void *data, uint32_t num)
1933 {
1934     return LPSPI_InterruptSend(data, num, &LPSPI3_InterruptDriverState);
1935 }
1936 
LPSPI3_InterruptReceive(void * data,uint32_t num)1937 static int32_t LPSPI3_InterruptReceive(void *data, uint32_t num)
1938 {
1939     return LPSPI_InterruptReceive(data, num, &LPSPI3_InterruptDriverState);
1940 }
1941 
LPSPI3_InterruptTransfer(const void * data_out,void * data_in,uint32_t num)1942 static int32_t LPSPI3_InterruptTransfer(const void *data_out, void *data_in, uint32_t num)
1943 {
1944     return LPSPI_InterruptTransfer(data_out, data_in, num, &LPSPI3_InterruptDriverState);
1945 }
1946 
LPSPI3_InterruptGetCount(void)1947 static uint32_t LPSPI3_InterruptGetCount(void)
1948 {
1949     return LPSPI_InterruptGetCount(&LPSPI3_InterruptDriverState);
1950 }
1951 
LPSPI3_InterruptControl(uint32_t control,uint32_t arg)1952 static int32_t LPSPI3_InterruptControl(uint32_t control, uint32_t arg)
1953 {
1954     return LPSPI_InterruptControl(control, arg, &LPSPI3_InterruptDriverState);
1955 }
1956 
LPSPI3_InterruptGetStatus(void)1957 static ARM_SPI_STATUS LPSPI3_InterruptGetStatus(void)
1958 {
1959     return LPSPI_InterruptGetStatus(&LPSPI3_InterruptDriverState);
1960 }
1961 
1962 #endif
1963 
1964 ARM_DRIVER_SPI Driver_SPI3 = {
1965     LPSPIx_GetVersion,     LPSPIx_GetCapabilities,
1966 #if defined(RTE_SPI3_DMA_EN) && RTE_SPI3_DMA_EN
1967     LPSPI3_EdmaInitialize, LPSPI3_EdmaUninitialize, LPSPI3_EdmaPowerControl, LPSPI3_EdmaSend,     LPSPI3_EdmaReceive,
1968     LPSPI3_EdmaTransfer,   LPSPI3_EdmaGetCount,     LPSPI3_EdmaControl,      LPSPI3_EdmaGetStatus
1969 #else
1970     LPSPI3_InterruptInitialize, LPSPI3_InterruptUninitialize, LPSPI3_InterruptPowerControl, LPSPI3_InterruptSend,
1971     LPSPI3_InterruptReceive,    LPSPI3_InterruptTransfer,     LPSPI3_InterruptGetCount,     LPSPI3_InterruptControl,
1972     LPSPI3_InterruptGetStatus
1973 #endif
1974 };
1975 
1976 #endif /*  LPSPI3  */
1977 
1978 #if defined(LPSPI4) && defined(RTE_SPI4) && RTE_SPI4
1979 
1980 /* User needs to provide the implementation for LPSPI4_GetFreq/InitPins/DeinitPins
1981 in the application for enabling according instance. */
1982 extern uint32_t LPSPI4_GetFreq(void);
1983 
1984 static cmsis_lpspi_resource_t LPSPI4_Resource = {LPSPI4, 4, LPSPI4_GetFreq};
1985 
1986 #if defined(RTE_SPI4_DMA_EN) && RTE_SPI4_DMA_EN
1987 
1988 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
1989 static cmsis_lpspi_edma_resource_t LPSPI4_EdmaResource = {
1990     RTE_SPI4_DMA_TX_DMA_BASE,    RTE_SPI4_DMA_TX_CH,          (uint16_t)RTE_SPI4_DMA_TX_PERI_SEL,
1991     RTE_SPI4_DMA_RX_DMA_BASE,    RTE_SPI4_DMA_RX_CH,          (uint16_t)RTE_SPI4_DMA_RX_PERI_SEL,
1992 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
1993     RTE_SPI4_DMA_TX_DMAMUX_BASE, RTE_SPI4_DMA_RX_DMAMUX_BASE,
1994 #endif
1995 };
1996 
1997 AT_NONCACHEABLE_SECTION(static cmsis_lpspi_edma_handle_t LPSPI4_EdmaHandle);
1998 static edma_handle_t LPSPI4_EdmaTxDataToTxRegHandle;
1999 static edma_handle_t LPSPI4_EdmaRxRegToRxDataHandle;
2000 
2001 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
2002 ARMCC_SECTION("lpspi4_edma_driver_state")
2003 static cmsis_lpspi_edma_driver_state_t LPSPI4_EdmaDriverState = {
2004 #else
2005 static cmsis_lpspi_edma_driver_state_t LPSPI4_EdmaDriverState = {
2006 #endif
2007     &LPSPI4_Resource,
2008     &LPSPI4_EdmaResource,
2009     &LPSPI4_EdmaHandle,
2010     &LPSPI4_EdmaRxRegToRxDataHandle,
2011     &LPSPI4_EdmaTxDataToTxRegHandle,
2012 };
2013 
LPSPI4_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)2014 static int32_t LPSPI4_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)
2015 {
2016 #ifdef RTE_SPI4_PIN_INIT
2017     RTE_SPI4_PIN_INIT();
2018 #endif
2019     return LPSPI_EdmaInitialize(cb_event, &LPSPI4_EdmaDriverState);
2020 }
2021 
LPSPI4_EdmaUninitialize(void)2022 static int32_t LPSPI4_EdmaUninitialize(void)
2023 {
2024 #ifdef RTE_SPI4_PIN_DEINIT
2025     RTE_SPI4_PIN_DEINIT();
2026 #endif
2027     return LPSPI_EdmaUninitialize(&LPSPI4_EdmaDriverState);
2028 }
2029 
LPSPI4_EdmaPowerControl(ARM_POWER_STATE state)2030 static int32_t LPSPI4_EdmaPowerControl(ARM_POWER_STATE state)
2031 {
2032     return LPSPI_EdmaPowerControl(state, &LPSPI4_EdmaDriverState);
2033 }
2034 
LPSPI4_EdmaSend(const void * data,uint32_t num)2035 static int32_t LPSPI4_EdmaSend(const void *data, uint32_t num)
2036 {
2037     return LPSPI_EdmaSend(data, num, &LPSPI4_EdmaDriverState);
2038 }
2039 
LPSPI4_EdmaReceive(void * data,uint32_t num)2040 static int32_t LPSPI4_EdmaReceive(void *data, uint32_t num)
2041 {
2042     return LPSPI_EdmaReceive(data, num, &LPSPI4_EdmaDriverState);
2043 }
2044 
LPSPI4_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)2045 static int32_t LPSPI4_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
2046 {
2047     return LPSPI_EdmaTransfer(data_out, data_in, num, &LPSPI4_EdmaDriverState);
2048 }
2049 
LPSPI4_EdmaGetCount(void)2050 static uint32_t LPSPI4_EdmaGetCount(void)
2051 {
2052     return LPSPI_EdmaGetCount(&LPSPI4_EdmaDriverState);
2053 }
2054 
LPSPI4_EdmaControl(uint32_t control,uint32_t arg)2055 static int32_t LPSPI4_EdmaControl(uint32_t control, uint32_t arg)
2056 {
2057     return LPSPI_EdmaControl(control, arg, &LPSPI4_EdmaDriverState);
2058 }
2059 
LPSPI4_EdmaGetStatus(void)2060 static ARM_SPI_STATUS LPSPI4_EdmaGetStatus(void)
2061 {
2062     return LPSPI_EdmaGetStatus(&LPSPI4_EdmaDriverState);
2063 }
2064 
2065 #endif
2066 
2067 #else
2068 
2069 static cmsis_lpspi_handle_t LPSPI4_Handle;
2070 
2071 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
2072 ARMCC_SECTION("lpspi4_interrupt_driver_state")
2073 static cmsis_lpspi_interrupt_driver_state_t LPSPI4_InterruptDriverState = {
2074 #else
2075 static cmsis_lpspi_interrupt_driver_state_t LPSPI4_InterruptDriverState = {
2076 #endif
2077     &LPSPI4_Resource,
2078     &LPSPI4_Handle,
2079 };
2080 
LPSPI4_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)2081 static int32_t LPSPI4_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)
2082 {
2083 #ifdef RTE_SPI4_PIN_INIT
2084     RTE_SPI4_PIN_INIT();
2085 #endif
2086     return LPSPI_InterruptInitialize(cb_event, &LPSPI4_InterruptDriverState);
2087 }
2088 
LPSPI4_InterruptUninitialize(void)2089 static int32_t LPSPI4_InterruptUninitialize(void)
2090 {
2091 #ifdef RTE_SPI4_PIN_DEINIT
2092     RTE_SPI4_PIN_DEINIT();
2093 #endif
2094     return LPSPI_InterruptUninitialize(&LPSPI4_InterruptDriverState);
2095 }
2096 
LPSPI4_InterruptPowerControl(ARM_POWER_STATE state)2097 static int32_t LPSPI4_InterruptPowerControl(ARM_POWER_STATE state)
2098 {
2099     return LPSPI_InterruptPowerControl(state, &LPSPI4_InterruptDriverState);
2100 }
2101 
LPSPI4_InterruptSend(const void * data,uint32_t num)2102 static int32_t LPSPI4_InterruptSend(const void *data, uint32_t num)
2103 {
2104     return LPSPI_InterruptSend(data, num, &LPSPI4_InterruptDriverState);
2105 }
2106 
LPSPI4_InterruptReceive(void * data,uint32_t num)2107 static int32_t LPSPI4_InterruptReceive(void *data, uint32_t num)
2108 {
2109     return LPSPI_InterruptReceive(data, num, &LPSPI4_InterruptDriverState);
2110 }
2111 
LPSPI4_InterruptTransfer(const void * data_out,void * data_in,uint32_t num)2112 static int32_t LPSPI4_InterruptTransfer(const void *data_out, void *data_in, uint32_t num)
2113 {
2114     return LPSPI_InterruptTransfer(data_out, data_in, num, &LPSPI4_InterruptDriverState);
2115 }
2116 
LPSPI4_InterruptGetCount(void)2117 static uint32_t LPSPI4_InterruptGetCount(void)
2118 {
2119     return LPSPI_InterruptGetCount(&LPSPI4_InterruptDriverState);
2120 }
2121 
LPSPI4_InterruptControl(uint32_t control,uint32_t arg)2122 static int32_t LPSPI4_InterruptControl(uint32_t control, uint32_t arg)
2123 {
2124     return LPSPI_InterruptControl(control, arg, &LPSPI4_InterruptDriverState);
2125 }
2126 
LPSPI4_InterruptGetStatus(void)2127 static ARM_SPI_STATUS LPSPI4_InterruptGetStatus(void)
2128 {
2129     return LPSPI_InterruptGetStatus(&LPSPI4_InterruptDriverState);
2130 }
2131 
2132 #endif
2133 
2134 ARM_DRIVER_SPI Driver_SPI4 = {
2135     LPSPIx_GetVersion,     LPSPIx_GetCapabilities,
2136 #if defined(RTE_SPI4_DMA_EN) && RTE_SPI4_DMA_EN
2137     LPSPI4_EdmaInitialize, LPSPI4_EdmaUninitialize, LPSPI4_EdmaPowerControl, LPSPI4_EdmaSend,     LPSPI4_EdmaReceive,
2138     LPSPI4_EdmaTransfer,   LPSPI4_EdmaGetCount,     LPSPI4_EdmaControl,      LPSPI4_EdmaGetStatus
2139 #else
2140     LPSPI4_InterruptInitialize, LPSPI4_InterruptUninitialize, LPSPI4_InterruptPowerControl, LPSPI4_InterruptSend,
2141     LPSPI4_InterruptReceive,    LPSPI4_InterruptTransfer,     LPSPI4_InterruptGetCount,     LPSPI4_InterruptControl,
2142     LPSPI4_InterruptGetStatus
2143 #endif
2144 };
2145 
2146 #endif /*  LPSPI4  */
2147 
2148 #if defined(LPSPI5) && defined(RTE_SPI5) && RTE_SPI5
2149 
2150 /* User needs to provide the implementation for LPSPI5_GetFreq/InitPins/DeinitPins
2151 in the application for enabling according instance. */
2152 extern uint32_t LPSPI5_GetFreq(void);
2153 
2154 static cmsis_lpspi_resource_t LPSPI5_Resource = {LPSPI5, 5, LPSPI5_GetFreq};
2155 
2156 #if defined(RTE_SPI5_DMA_EN) && RTE_SPI5_DMA_EN
2157 
2158 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
2159 static cmsis_lpspi_edma_resource_t LPSPI5_EdmaResource = {
2160     RTE_SPI5_DMA_TX_DMA_BASE,    RTE_SPI5_DMA_TX_CH,          (uint16_t)RTE_SPI5_DMA_TX_PERI_SEL,
2161     RTE_SPI5_DMA_RX_DMA_BASE,    RTE_SPI5_DMA_RX_CH,          (uint16_t)RTE_SPI5_DMA_RX_PERI_SEL,
2162 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
2163     RTE_SPI5_DMA_TX_DMAMUX_BASE, RTE_SPI5_DMA_RX_DMAMUX_BASE,
2164 #endif
2165 };
2166 
2167 AT_NONCACHEABLE_SECTION(static cmsis_lpspi_edma_handle_t LPSPI5_EdmaHandle);
2168 static edma_handle_t LPSPI5_EdmaTxDataToTxRegHandle;
2169 static edma_handle_t LPSPI5_EdmaRxRegToRxDataHandle;
2170 
2171 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
2172 ARMCC_SECTION("lpspi5_edma_driver_state")
2173 static cmsis_lpspi_edma_driver_state_t LPSPI5_EdmaDriverState = {
2174 #else
2175 static cmsis_lpspi_edma_driver_state_t LPSPI5_EdmaDriverState = {
2176 #endif
2177     &LPSPI5_Resource,
2178     &LPSPI5_EdmaResource,
2179     &LPSPI5_EdmaHandle,
2180     &LPSPI5_EdmaRxRegToRxDataHandle,
2181     &LPSPI5_EdmaTxDataToTxRegHandle,
2182 };
2183 
LPSPI5_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)2184 static int32_t LPSPI5_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)
2185 {
2186 #ifdef RTE_SPI5_PIN_INIT
2187     RTE_SPI5_PIN_INIT();
2188 #endif
2189     return LPSPI_EdmaInitialize(cb_event, &LPSPI5_EdmaDriverState);
2190 }
2191 
LPSPI5_EdmaUninitialize(void)2192 static int32_t LPSPI5_EdmaUninitialize(void)
2193 {
2194 #ifdef RTE_SPI5_PIN_DEINIT
2195     RTE_SPI5_PIN_DEINIT();
2196 #endif
2197     return LPSPI_EdmaUninitialize(&LPSPI5_EdmaDriverState);
2198 }
2199 
LPSPI5_EdmaPowerControl(ARM_POWER_STATE state)2200 static int32_t LPSPI5_EdmaPowerControl(ARM_POWER_STATE state)
2201 {
2202     return LPSPI_EdmaPowerControl(state, &LPSPI5_EdmaDriverState);
2203 }
2204 
LPSPI5_EdmaSend(const void * data,uint32_t num)2205 static int32_t LPSPI5_EdmaSend(const void *data, uint32_t num)
2206 {
2207     return LPSPI_EdmaSend(data, num, &LPSPI5_EdmaDriverState);
2208 }
2209 
LPSPI5_EdmaReceive(void * data,uint32_t num)2210 static int32_t LPSPI5_EdmaReceive(void *data, uint32_t num)
2211 {
2212     return LPSPI_EdmaReceive(data, num, &LPSPI5_EdmaDriverState);
2213 }
2214 
LPSPI5_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)2215 static int32_t LPSPI5_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
2216 {
2217     return LPSPI_EdmaTransfer(data_out, data_in, num, &LPSPI5_EdmaDriverState);
2218 }
2219 
LPSPI5_EdmaGetCount(void)2220 static uint32_t LPSPI5_EdmaGetCount(void)
2221 {
2222     return LPSPI_EdmaGetCount(&LPSPI5_EdmaDriverState);
2223 }
2224 
LPSPI5_EdmaControl(uint32_t control,uint32_t arg)2225 static int32_t LPSPI5_EdmaControl(uint32_t control, uint32_t arg)
2226 {
2227     return LPSPI_EdmaControl(control, arg, &LPSPI5_EdmaDriverState);
2228 }
2229 
LPSPI5_EdmaGetStatus(void)2230 static ARM_SPI_STATUS LPSPI5_EdmaGetStatus(void)
2231 {
2232     return LPSPI_EdmaGetStatus(&LPSPI5_EdmaDriverState);
2233 }
2234 
2235 #endif
2236 
2237 #else
2238 
2239 static cmsis_lpspi_handle_t LPSPI5_Handle;
2240 
2241 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
2242 ARMCC_SECTION("lpspi5_interrupt_driver_state")
2243 static cmsis_lpspi_interrupt_driver_state_t LPSPI5_InterruptDriverState = {
2244 #else
2245 static cmsis_lpspi_interrupt_driver_state_t LPSPI5_InterruptDriverState = {
2246 #endif
2247     &LPSPI5_Resource,
2248     &LPSPI5_Handle,
2249 };
2250 
LPSPI5_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)2251 static int32_t LPSPI5_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)
2252 {
2253 #ifdef RTE_SPI5_PIN_INIT
2254     RTE_SPI5_PIN_INIT();
2255 #endif
2256     return LPSPI_InterruptInitialize(cb_event, &LPSPI5_InterruptDriverState);
2257 }
2258 
LPSPI5_InterruptUninitialize(void)2259 static int32_t LPSPI5_InterruptUninitialize(void)
2260 {
2261 #ifdef RTE_SPI5_PIN_DEINIT
2262     RTE_SPI5_PIN_DEINIT();
2263 #endif
2264     return LPSPI_InterruptUninitialize(&LPSPI5_InterruptDriverState);
2265 }
2266 
LPSPI5_InterruptPowerControl(ARM_POWER_STATE state)2267 static int32_t LPSPI5_InterruptPowerControl(ARM_POWER_STATE state)
2268 {
2269     return LPSPI_InterruptPowerControl(state, &LPSPI5_InterruptDriverState);
2270 }
2271 
LPSPI5_InterruptSend(const void * data,uint32_t num)2272 static int32_t LPSPI5_InterruptSend(const void *data, uint32_t num)
2273 {
2274     return LPSPI_InterruptSend(data, num, &LPSPI5_InterruptDriverState);
2275 }
2276 
LPSPI5_InterruptReceive(void * data,uint32_t num)2277 static int32_t LPSPI5_InterruptReceive(void *data, uint32_t num)
2278 {
2279     return LPSPI_InterruptReceive(data, num, &LPSPI5_InterruptDriverState);
2280 }
2281 
LPSPI5_InterruptTransfer(const void * data_out,void * data_in,uint32_t num)2282 static int32_t LPSPI5_InterruptTransfer(const void *data_out, void *data_in, uint32_t num)
2283 {
2284     return LPSPI_InterruptTransfer(data_out, data_in, num, &LPSPI5_InterruptDriverState);
2285 }
2286 
LPSPI5_InterruptGetCount(void)2287 static uint32_t LPSPI5_InterruptGetCount(void)
2288 {
2289     return LPSPI_InterruptGetCount(&LPSPI5_InterruptDriverState);
2290 }
2291 
LPSPI5_InterruptControl(uint32_t control,uint32_t arg)2292 static int32_t LPSPI5_InterruptControl(uint32_t control, uint32_t arg)
2293 {
2294     return LPSPI_InterruptControl(control, arg, &LPSPI5_InterruptDriverState);
2295 }
2296 
LPSPI5_InterruptGetStatus(void)2297 static ARM_SPI_STATUS LPSPI5_InterruptGetStatus(void)
2298 {
2299     return LPSPI_InterruptGetStatus(&LPSPI5_InterruptDriverState);
2300 }
2301 
2302 #endif
2303 
2304 ARM_DRIVER_SPI Driver_SPI5 = {
2305     LPSPIx_GetVersion,     LPSPIx_GetCapabilities,
2306 #if defined(RTE_SPI5_DMA_EN) && RTE_SPI5_DMA_EN
2307     LPSPI5_EdmaInitialize, LPSPI5_EdmaUninitialize, LPSPI5_EdmaPowerControl, LPSPI5_EdmaSend,     LPSPI5_EdmaReceive,
2308     LPSPI5_EdmaTransfer,   LPSPI5_EdmaGetCount,     LPSPI5_EdmaControl,      LPSPI5_EdmaGetStatus
2309 #else
2310     LPSPI5_InterruptInitialize, LPSPI5_InterruptUninitialize, LPSPI5_InterruptPowerControl, LPSPI5_InterruptSend,
2311     LPSPI5_InterruptReceive,    LPSPI5_InterruptTransfer,     LPSPI5_InterruptGetCount,     LPSPI5_InterruptControl,
2312     LPSPI5_InterruptGetStatus
2313 #endif
2314 };
2315 
2316 #endif /*  LPSPI5  */
2317 
2318 #if defined(LPSPI6) && defined(RTE_SPI6) && RTE_SPI6
2319 
2320 /* User needs to provide the implementation for LPSPI6_GetFreq/InitPins/DeinitPins
2321 in the application for enabling according instance. */
2322 extern uint32_t LPSPI6_GetFreq(void);
2323 
2324 static cmsis_lpspi_resource_t LPSPI6_Resource = {LPSPI6, 6, LPSPI6_GetFreq};
2325 
2326 #if defined(RTE_SPI6_DMA_EN) && RTE_SPI6_DMA_EN
2327 
2328 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
2329 static cmsis_lpspi_edma_resource_t LPSPI6_EdmaResource = {
2330     RTE_SPI6_DMA_TX_DMA_BASE,    RTE_SPI6_DMA_TX_CH,          (uint16_t)RTE_SPI6_DMA_TX_PERI_SEL,
2331     RTE_SPI6_DMA_RX_DMA_BASE,    RTE_SPI6_DMA_RX_CH,          (uint16_t)RTE_SPI6_DMA_RX_PERI_SEL,
2332 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
2333     RTE_SPI6_DMA_TX_DMAMUX_BASE, RTE_SPI6_DMA_RX_DMAMUX_BASE,
2334 #endif
2335 };
2336 
2337 AT_NONCACHEABLE_SECTION(static cmsis_lpspi_edma_handle_t LPSPI6_EdmaHandle);
2338 static edma_handle_t LPSPI6_EdmaTxDataToTxRegHandle;
2339 static edma_handle_t LPSPI6_EdmaRxRegToRxDataHandle;
2340 
2341 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
2342 ARMCC_SECTION("lpspi6_edma_driver_state")
2343 static cmsis_lpspi_edma_driver_state_t LPSPI6_EdmaDriverState = {
2344 #else
2345 static cmsis_lpspi_edma_driver_state_t LPSPI6_EdmaDriverState = {
2346 #endif
2347     &LPSPI6_Resource,
2348     &LPSPI6_EdmaResource,
2349     &LPSPI6_EdmaHandle,
2350     &LPSPI6_EdmaRxRegToRxDataHandle,
2351     &LPSPI6_EdmaTxDataToTxRegHandle,
2352 };
2353 
LPSPI6_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)2354 static int32_t LPSPI6_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)
2355 {
2356 #ifdef RTE_SPI6_PIN_INIT
2357     RTE_SPI6_PIN_INIT();
2358 #endif
2359     return LPSPI_EdmaInitialize(cb_event, &LPSPI6_EdmaDriverState);
2360 }
2361 
LPSPI6_EdmaUninitialize(void)2362 static int32_t LPSPI6_EdmaUninitialize(void)
2363 {
2364 #ifdef RTE_SPI6_PIN_DEINIT
2365     RTE_SPI6_PIN_DEINIT();
2366 #endif
2367     return LPSPI_EdmaUninitialize(&LPSPI6_EdmaDriverState);
2368 }
2369 
LPSPI6_EdmaPowerControl(ARM_POWER_STATE state)2370 static int32_t LPSPI6_EdmaPowerControl(ARM_POWER_STATE state)
2371 {
2372     return LPSPI_EdmaPowerControl(state, &LPSPI6_EdmaDriverState);
2373 }
2374 
LPSPI6_EdmaSend(const void * data,uint32_t num)2375 static int32_t LPSPI6_EdmaSend(const void *data, uint32_t num)
2376 {
2377     return LPSPI_EdmaSend(data, num, &LPSPI6_EdmaDriverState);
2378 }
2379 
LPSPI6_EdmaReceive(void * data,uint32_t num)2380 static int32_t LPSPI6_EdmaReceive(void *data, uint32_t num)
2381 {
2382     return LPSPI_EdmaReceive(data, num, &LPSPI6_EdmaDriverState);
2383 }
2384 
LPSPI6_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)2385 static int32_t LPSPI6_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
2386 {
2387     return LPSPI_EdmaTransfer(data_out, data_in, num, &LPSPI6_EdmaDriverState);
2388 }
2389 
LPSPI6_EdmaGetCount(void)2390 static uint32_t LPSPI6_EdmaGetCount(void)
2391 {
2392     return LPSPI_EdmaGetCount(&LPSPI6_EdmaDriverState);
2393 }
2394 
LPSPI6_EdmaControl(uint32_t control,uint32_t arg)2395 static int32_t LPSPI6_EdmaControl(uint32_t control, uint32_t arg)
2396 {
2397     return LPSPI_EdmaControl(control, arg, &LPSPI6_EdmaDriverState);
2398 }
2399 
LPSPI6_EdmaGetStatus(void)2400 static ARM_SPI_STATUS LPSPI6_EdmaGetStatus(void)
2401 {
2402     return LPSPI_EdmaGetStatus(&LPSPI6_EdmaDriverState);
2403 }
2404 
2405 #endif
2406 
2407 #else
2408 
2409 static cmsis_lpspi_handle_t LPSPI6_Handle;
2410 
2411 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
2412 ARMCC_SECTION("lpspi6_interrupt_driver_state")
2413 static cmsis_lpspi_interrupt_driver_state_t LPSPI6_InterruptDriverState = {
2414 #else
2415 static cmsis_lpspi_interrupt_driver_state_t LPSPI6_InterruptDriverState = {
2416 #endif
2417     &LPSPI6_Resource,
2418     &LPSPI6_Handle,
2419 };
2420 
LPSPI6_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)2421 static int32_t LPSPI6_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)
2422 {
2423 #ifdef RTE_SPI6_PIN_INIT
2424     RTE_SPI6_PIN_INIT();
2425 #endif
2426     return LPSPI_InterruptInitialize(cb_event, &LPSPI6_InterruptDriverState);
2427 }
2428 
LPSPI6_InterruptUninitialize(void)2429 static int32_t LPSPI6_InterruptUninitialize(void)
2430 {
2431 #ifdef RTE_SPI6_PIN_DEINIT
2432     RTE_SPI6_PIN_DEINIT();
2433 #endif
2434     return LPSPI_InterruptUninitialize(&LPSPI6_InterruptDriverState);
2435 }
2436 
LPSPI6_InterruptPowerControl(ARM_POWER_STATE state)2437 static int32_t LPSPI6_InterruptPowerControl(ARM_POWER_STATE state)
2438 {
2439     return LPSPI_InterruptPowerControl(state, &LPSPI6_InterruptDriverState);
2440 }
2441 
LPSPI6_InterruptSend(const void * data,uint32_t num)2442 static int32_t LPSPI6_InterruptSend(const void *data, uint32_t num)
2443 {
2444     return LPSPI_InterruptSend(data, num, &LPSPI6_InterruptDriverState);
2445 }
2446 
LPSPI6_InterruptReceive(void * data,uint32_t num)2447 static int32_t LPSPI6_InterruptReceive(void *data, uint32_t num)
2448 {
2449     return LPSPI_InterruptReceive(data, num, &LPSPI6_InterruptDriverState);
2450 }
2451 
LPSPI6_InterruptTransfer(const void * data_out,void * data_in,uint32_t num)2452 static int32_t LPSPI6_InterruptTransfer(const void *data_out, void *data_in, uint32_t num)
2453 {
2454     return LPSPI_InterruptTransfer(data_out, data_in, num, &LPSPI6_InterruptDriverState);
2455 }
2456 
LPSPI6_InterruptGetCount(void)2457 static uint32_t LPSPI6_InterruptGetCount(void)
2458 {
2459     return LPSPI_InterruptGetCount(&LPSPI6_InterruptDriverState);
2460 }
2461 
LPSPI6_InterruptControl(uint32_t control,uint32_t arg)2462 static int32_t LPSPI6_InterruptControl(uint32_t control, uint32_t arg)
2463 {
2464     return LPSPI_InterruptControl(control, arg, &LPSPI6_InterruptDriverState);
2465 }
2466 
LPSPI6_InterruptGetStatus(void)2467 static ARM_SPI_STATUS LPSPI6_InterruptGetStatus(void)
2468 {
2469     return LPSPI_InterruptGetStatus(&LPSPI6_InterruptDriverState);
2470 }
2471 
2472 #endif
2473 
2474 ARM_DRIVER_SPI Driver_SPI6 = {
2475     LPSPIx_GetVersion,     LPSPIx_GetCapabilities,
2476 #if defined(RTE_SPI6_DMA_EN) && RTE_SPI6_DMA_EN
2477     LPSPI6_EdmaInitialize, LPSPI6_EdmaUninitialize, LPSPI6_EdmaPowerControl, LPSPI6_EdmaSend,     LPSPI6_EdmaReceive,
2478     LPSPI6_EdmaTransfer,   LPSPI6_EdmaGetCount,     LPSPI6_EdmaControl,      LPSPI6_EdmaGetStatus
2479 #else
2480     LPSPI6_InterruptInitialize, LPSPI6_InterruptUninitialize, LPSPI6_InterruptPowerControl, LPSPI6_InterruptSend,
2481     LPSPI6_InterruptReceive,    LPSPI6_InterruptTransfer,     LPSPI6_InterruptGetCount,     LPSPI6_InterruptControl,
2482     LPSPI6_InterruptGetStatus
2483 #endif
2484 };
2485 
2486 #endif /*  LPSPI6  */
2487 
2488 #if defined(LPSPI7) && defined(RTE_SPI7) && RTE_SPI7
2489 
2490 /* User needs to provide the implementation for LPSPI7_GetFreq/InitPins/DeinitPins
2491 in the application for enabling according instance. */
2492 extern uint32_t LPSPI7_GetFreq(void);
2493 
2494 static cmsis_lpspi_resource_t LPSPI7_Resource = {LPSPI7, 7, LPSPI7_GetFreq};
2495 
2496 #if defined(RTE_SPI7_DMA_EN) && RTE_SPI7_DMA_EN
2497 
2498 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
2499 static cmsis_lpspi_edma_resource_t LPSPI7_EdmaResource = {
2500     RTE_SPI7_DMA_TX_DMA_BASE,    RTE_SPI7_DMA_TX_CH,          (uint16_t)RTE_SPI7_DMA_TX_PERI_SEL,
2501     RTE_SPI7_DMA_RX_DMA_BASE,    RTE_SPI7_DMA_RX_CH,          (uint16_t)RTE_SPI7_DMA_RX_PERI_SEL,
2502 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
2503     RTE_SPI7_DMA_TX_DMAMUX_BASE, RTE_SPI7_DMA_RX_DMAMUX_BASE,
2504 #endif
2505 };
2506 
2507 AT_NONCACHEABLE_SECTION(static cmsis_lpspi_edma_handle_t LPSPI7_EdmaHandle);
2508 static edma_handle_t LPSPI7_EdmaTxDataToTxRegHandle;
2509 static edma_handle_t LPSPI7_EdmaRxRegToRxDataHandle;
2510 
2511 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
2512 ARMCC_SECTION("lpspi7_edma_driver_state")
2513 static cmsis_lpspi_edma_driver_state_t LPSPI7_EdmaDriverState = {
2514 #else
2515 static cmsis_lpspi_edma_driver_state_t LPSPI7_EdmaDriverState = {
2516 #endif
2517     &LPSPI7_Resource,
2518     &LPSPI7_EdmaResource,
2519     &LPSPI7_EdmaHandle,
2520     &LPSPI7_EdmaRxRegToRxDataHandle,
2521     &LPSPI7_EdmaTxDataToTxRegHandle,
2522 };
2523 
LPSPI7_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)2524 static int32_t LPSPI7_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)
2525 {
2526 #ifdef RTE_SPI7_PIN_INIT
2527     RTE_SPI7_PIN_INIT();
2528 #endif
2529     return LPSPI_EdmaInitialize(cb_event, &LPSPI7_EdmaDriverState);
2530 }
2531 
LPSPI7_EdmaUninitialize(void)2532 static int32_t LPSPI7_EdmaUninitialize(void)
2533 {
2534 #ifdef RTE_SPI7_PIN_DEINIT
2535     RTE_SPI7_PIN_DEINIT();
2536 #endif
2537     return LPSPI_EdmaUninitialize(&LPSPI7_EdmaDriverState);
2538 }
2539 
LPSPI7_EdmaPowerControl(ARM_POWER_STATE state)2540 static int32_t LPSPI7_EdmaPowerControl(ARM_POWER_STATE state)
2541 {
2542     return LPSPI_EdmaPowerControl(state, &LPSPI7_EdmaDriverState);
2543 }
2544 
LPSPI7_EdmaSend(const void * data,uint32_t num)2545 static int32_t LPSPI7_EdmaSend(const void *data, uint32_t num)
2546 {
2547     return LPSPI_EdmaSend(data, num, &LPSPI7_EdmaDriverState);
2548 }
2549 
LPSPI7_EdmaReceive(void * data,uint32_t num)2550 static int32_t LPSPI7_EdmaReceive(void *data, uint32_t num)
2551 {
2552     return LPSPI_EdmaReceive(data, num, &LPSPI7_EdmaDriverState);
2553 }
2554 
LPSPI7_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)2555 static int32_t LPSPI7_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
2556 {
2557     return LPSPI_EdmaTransfer(data_out, data_in, num, &LPSPI7_EdmaDriverState);
2558 }
2559 
LPSPI7_EdmaGetCount(void)2560 static uint32_t LPSPI7_EdmaGetCount(void)
2561 {
2562     return LPSPI_EdmaGetCount(&LPSPI7_EdmaDriverState);
2563 }
2564 
LPSPI7_EdmaControl(uint32_t control,uint32_t arg)2565 static int32_t LPSPI7_EdmaControl(uint32_t control, uint32_t arg)
2566 {
2567     return LPSPI_EdmaControl(control, arg, &LPSPI7_EdmaDriverState);
2568 }
2569 
LPSPI7_EdmaGetStatus(void)2570 static ARM_SPI_STATUS LPSPI7_EdmaGetStatus(void)
2571 {
2572     return LPSPI_EdmaGetStatus(&LPSPI7_EdmaDriverState);
2573 }
2574 
2575 #endif
2576 
2577 #else
2578 
2579 static cmsis_lpspi_handle_t LPSPI7_Handle;
2580 
2581 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
2582 ARMCC_SECTION("lpspi7_interrupt_driver_state")
2583 static cmsis_lpspi_interrupt_driver_state_t LPSPI7_InterruptDriverState = {
2584 #else
2585 static cmsis_lpspi_interrupt_driver_state_t LPSPI7_InterruptDriverState = {
2586 #endif
2587     &LPSPI7_Resource,
2588     &LPSPI7_Handle,
2589 };
2590 
LPSPI7_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)2591 static int32_t LPSPI7_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)
2592 {
2593 #ifdef RTE_SPI7_PIN_INIT
2594     RTE_SPI7_PIN_INIT();
2595 #endif
2596     return LPSPI_InterruptInitialize(cb_event, &LPSPI7_InterruptDriverState);
2597 }
2598 
LPSPI7_InterruptUninitialize(void)2599 static int32_t LPSPI7_InterruptUninitialize(void)
2600 {
2601 #ifdef RTE_SPI7_PIN_DEINIT
2602     RTE_SPI7_PIN_DEINIT();
2603 #endif
2604     return LPSPI_InterruptUninitialize(&LPSPI7_InterruptDriverState);
2605 }
2606 
LPSPI7_InterruptPowerControl(ARM_POWER_STATE state)2607 static int32_t LPSPI7_InterruptPowerControl(ARM_POWER_STATE state)
2608 {
2609     return LPSPI_InterruptPowerControl(state, &LPSPI7_InterruptDriverState);
2610 }
2611 
LPSPI7_InterruptSend(const void * data,uint32_t num)2612 static int32_t LPSPI7_InterruptSend(const void *data, uint32_t num)
2613 {
2614     return LPSPI_InterruptSend(data, num, &LPSPI7_InterruptDriverState);
2615 }
2616 
LPSPI7_InterruptReceive(void * data,uint32_t num)2617 static int32_t LPSPI7_InterruptReceive(void *data, uint32_t num)
2618 {
2619     return LPSPI_InterruptReceive(data, num, &LPSPI7_InterruptDriverState);
2620 }
2621 
LPSPI7_InterruptTransfer(const void * data_out,void * data_in,uint32_t num)2622 static int32_t LPSPI7_InterruptTransfer(const void *data_out, void *data_in, uint32_t num)
2623 {
2624     return LPSPI_InterruptTransfer(data_out, data_in, num, &LPSPI7_InterruptDriverState);
2625 }
2626 
LPSPI7_InterruptGetCount(void)2627 static uint32_t LPSPI7_InterruptGetCount(void)
2628 {
2629     return LPSPI_InterruptGetCount(&LPSPI7_InterruptDriverState);
2630 }
2631 
LPSPI7_InterruptControl(uint32_t control,uint32_t arg)2632 static int32_t LPSPI7_InterruptControl(uint32_t control, uint32_t arg)
2633 {
2634     return LPSPI_InterruptControl(control, arg, &LPSPI7_InterruptDriverState);
2635 }
2636 
LPSPI7_InterruptGetStatus(void)2637 static ARM_SPI_STATUS LPSPI7_InterruptGetStatus(void)
2638 {
2639     return LPSPI_InterruptGetStatus(&LPSPI7_InterruptDriverState);
2640 }
2641 
2642 #endif
2643 
2644 ARM_DRIVER_SPI Driver_SPI7 = {
2645     LPSPIx_GetVersion,     LPSPIx_GetCapabilities,
2646 #if defined(RTE_SPI7_DMA_EN) && RTE_SPI7_DMA_EN
2647     LPSPI7_EdmaInitialize, LPSPI7_EdmaUninitialize, LPSPI7_EdmaPowerControl, LPSPI7_EdmaSend,     LPSPI7_EdmaReceive,
2648     LPSPI7_EdmaTransfer,   LPSPI7_EdmaGetCount,     LPSPI7_EdmaControl,      LPSPI7_EdmaGetStatus
2649 #else
2650     LPSPI7_InterruptInitialize, LPSPI7_InterruptUninitialize, LPSPI7_InterruptPowerControl, LPSPI7_InterruptSend,
2651     LPSPI7_InterruptReceive,    LPSPI7_InterruptTransfer,     LPSPI7_InterruptGetCount,     LPSPI7_InterruptControl,
2652     LPSPI7_InterruptGetStatus
2653 #endif
2654 };
2655 
2656 #endif /*  LPSPI7  */
2657 
2658 #if defined(LPSPI8) && defined(RTE_SPI8) && RTE_SPI8
2659 
2660 /* User needs to provide the implementation for LPSPI8_GetFreq/InitPins/DeinitPins
2661 in the application for enabling according instance. */
2662 extern uint32_t LPSPI8_GetFreq(void);
2663 
2664 static cmsis_lpspi_resource_t LPSPI8_Resource = {LPSPI8, 8, LPSPI8_GetFreq};
2665 
2666 #if defined(RTE_SPI8_DMA_EN) && RTE_SPI8_DMA_EN
2667 
2668 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
2669 static cmsis_lpspi_edma_resource_t LPSPI8_EdmaResource = {
2670     RTE_SPI8_DMA_TX_DMA_BASE,    RTE_SPI8_DMA_TX_CH,          (uint16_t)RTE_SPI8_DMA_TX_PERI_SEL,
2671     RTE_SPI8_DMA_RX_DMA_BASE,    RTE_SPI8_DMA_RX_CH,          (uint16_t)RTE_SPI8_DMA_RX_PERI_SEL,
2672 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
2673     RTE_SPI8_DMA_TX_DMAMUX_BASE, RTE_SPI8_DMA_RX_DMAMUX_BASE,
2674 #endif
2675 };
2676 
2677 AT_NONCACHEABLE_SECTION(static cmsis_lpspi_edma_handle_t LPSPI8_EdmaHandle);
2678 static edma_handle_t LPSPI8_EdmaTxDataToTxRegHandle;
2679 static edma_handle_t LPSPI8_EdmaRxRegToRxDataHandle;
2680 
2681 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
2682 ARMCC_SECTION("lpspi8_edma_driver_state")
2683 static cmsis_lpspi_edma_driver_state_t LPSPI8_EdmaDriverState = {
2684 #else
2685 static cmsis_lpspi_edma_driver_state_t LPSPI8_EdmaDriverState = {
2686 #endif
2687     &LPSPI8_Resource,
2688     &LPSPI8_EdmaResource,
2689     &LPSPI8_EdmaHandle,
2690     &LPSPI8_EdmaRxRegToRxDataHandle,
2691     &LPSPI8_EdmaTxDataToTxRegHandle,
2692 };
2693 
LPSPI8_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)2694 static int32_t LPSPI8_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)
2695 {
2696 #ifdef RTE_SPI8_PIN_INIT
2697     RTE_SPI8_PIN_INIT();
2698 #endif
2699     return LPSPI_EdmaInitialize(cb_event, &LPSPI8_EdmaDriverState);
2700 }
2701 
LPSPI8_EdmaUninitialize(void)2702 static int32_t LPSPI8_EdmaUninitialize(void)
2703 {
2704 #ifdef RTE_SPI8_PIN_DEINIT
2705     RTE_SPI8_PIN_DEINIT();
2706 #endif
2707     return LPSPI_EdmaUninitialize(&LPSPI8_EdmaDriverState);
2708 }
2709 
LPSPI8_EdmaPowerControl(ARM_POWER_STATE state)2710 static int32_t LPSPI8_EdmaPowerControl(ARM_POWER_STATE state)
2711 {
2712     return LPSPI_EdmaPowerControl(state, &LPSPI8_EdmaDriverState);
2713 }
2714 
LPSPI8_EdmaSend(const void * data,uint32_t num)2715 static int32_t LPSPI8_EdmaSend(const void *data, uint32_t num)
2716 {
2717     return LPSPI_EdmaSend(data, num, &LPSPI8_EdmaDriverState);
2718 }
2719 
LPSPI8_EdmaReceive(void * data,uint32_t num)2720 static int32_t LPSPI8_EdmaReceive(void *data, uint32_t num)
2721 {
2722     return LPSPI_EdmaReceive(data, num, &LPSPI8_EdmaDriverState);
2723 }
2724 
LPSPI8_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)2725 static int32_t LPSPI8_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
2726 {
2727     return LPSPI_EdmaTransfer(data_out, data_in, num, &LPSPI8_EdmaDriverState);
2728 }
2729 
LPSPI8_EdmaGetCount(void)2730 static uint32_t LPSPI8_EdmaGetCount(void)
2731 {
2732     return LPSPI_EdmaGetCount(&LPSPI8_EdmaDriverState);
2733 }
2734 
LPSPI8_EdmaControl(uint32_t control,uint32_t arg)2735 static int32_t LPSPI8_EdmaControl(uint32_t control, uint32_t arg)
2736 {
2737     return LPSPI_EdmaControl(control, arg, &LPSPI8_EdmaDriverState);
2738 }
2739 
LPSPI8_EdmaGetStatus(void)2740 static ARM_SPI_STATUS LPSPI8_EdmaGetStatus(void)
2741 {
2742     return LPSPI_EdmaGetStatus(&LPSPI8_EdmaDriverState);
2743 }
2744 
2745 #endif
2746 
2747 #else
2748 
2749 static cmsis_lpspi_handle_t LPSPI8_Handle;
2750 
2751 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
2752 ARMCC_SECTION("lpspi8_interrupt_driver_state")
2753 static cmsis_lpspi_interrupt_driver_state_t LPSPI8_InterruptDriverState = {
2754 #else
2755 static cmsis_lpspi_interrupt_driver_state_t LPSPI8_InterruptDriverState = {
2756 #endif
2757     &LPSPI8_Resource,
2758     &LPSPI8_Handle,
2759 };
2760 
LPSPI8_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)2761 static int32_t LPSPI8_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)
2762 {
2763 #ifdef RTE_SPI8_PIN_INIT
2764     RTE_SPI8_PIN_INIT();
2765 #endif
2766     return LPSPI_InterruptInitialize(cb_event, &LPSPI8_InterruptDriverState);
2767 }
2768 
LPSPI8_InterruptUninitialize(void)2769 static int32_t LPSPI8_InterruptUninitialize(void)
2770 {
2771 #ifdef RTE_SPI8_PIN_DEINIT
2772     RTE_SPI8_PIN_DEINIT();
2773 #endif
2774     return LPSPI_InterruptUninitialize(&LPSPI8_InterruptDriverState);
2775 }
2776 
LPSPI8_InterruptPowerControl(ARM_POWER_STATE state)2777 static int32_t LPSPI8_InterruptPowerControl(ARM_POWER_STATE state)
2778 {
2779     return LPSPI_InterruptPowerControl(state, &LPSPI8_InterruptDriverState);
2780 }
2781 
LPSPI8_InterruptSend(const void * data,uint32_t num)2782 static int32_t LPSPI8_InterruptSend(const void *data, uint32_t num)
2783 {
2784     return LPSPI_InterruptSend(data, num, &LPSPI8_InterruptDriverState);
2785 }
2786 
LPSPI8_InterruptReceive(void * data,uint32_t num)2787 static int32_t LPSPI8_InterruptReceive(void *data, uint32_t num)
2788 {
2789     return LPSPI_InterruptReceive(data, num, &LPSPI8_InterruptDriverState);
2790 }
2791 
LPSPI8_InterruptTransfer(const void * data_out,void * data_in,uint32_t num)2792 static int32_t LPSPI8_InterruptTransfer(const void *data_out, void *data_in, uint32_t num)
2793 {
2794     return LPSPI_InterruptTransfer(data_out, data_in, num, &LPSPI8_InterruptDriverState);
2795 }
2796 
LPSPI8_InterruptGetCount(void)2797 static uint32_t LPSPI8_InterruptGetCount(void)
2798 {
2799     return LPSPI_InterruptGetCount(&LPSPI8_InterruptDriverState);
2800 }
2801 
LPSPI8_InterruptControl(uint32_t control,uint32_t arg)2802 static int32_t LPSPI8_InterruptControl(uint32_t control, uint32_t arg)
2803 {
2804     return LPSPI_InterruptControl(control, arg, &LPSPI8_InterruptDriverState);
2805 }
2806 
LPSPI8_InterruptGetStatus(void)2807 static ARM_SPI_STATUS LPSPI8_InterruptGetStatus(void)
2808 {
2809     return LPSPI_InterruptGetStatus(&LPSPI8_InterruptDriverState);
2810 }
2811 
2812 #endif
2813 
2814 ARM_DRIVER_SPI Driver_SPI8 = {
2815     LPSPIx_GetVersion,     LPSPIx_GetCapabilities,
2816 #if defined(RTE_SPI8_DMA_EN) && RTE_SPI8_DMA_EN
2817     LPSPI8_EdmaInitialize, LPSPI8_EdmaUninitialize, LPSPI8_EdmaPowerControl, LPSPI8_EdmaSend,     LPSPI8_EdmaReceive,
2818     LPSPI8_EdmaTransfer,   LPSPI8_EdmaGetCount,     LPSPI8_EdmaControl,      LPSPI8_EdmaGetStatus
2819 #else
2820     LPSPI8_InterruptInitialize, LPSPI8_InterruptUninitialize, LPSPI8_InterruptPowerControl, LPSPI8_InterruptSend,
2821     LPSPI8_InterruptReceive,    LPSPI8_InterruptTransfer,     LPSPI8_InterruptGetCount,     LPSPI8_InterruptControl,
2822     LPSPI8_InterruptGetStatus
2823 #endif
2824 };
2825 
2826 #endif /*  LPSPI8  */
2827 
2828 #if defined(LPSPI9) && defined(RTE_SPI9) && RTE_SPI9
2829 
2830 /* User needs to provide the implementation for LPSPI9_GetFreq/InitPins/DeinitPins
2831 in the application for enabling according instance. */
2832 extern uint32_t LPSPI9_GetFreq(void);
2833 
2834 static cmsis_lpspi_resource_t LPSPI9_Resource = {LPSPI9, 9, LPSPI9_GetFreq};
2835 
2836 #if defined(RTE_SPI9_DMA_EN) && RTE_SPI9_DMA_EN
2837 
2838 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
2839 static cmsis_lpspi_edma_resource_t LPSPI9_EdmaResource = {
2840     RTE_SPI9_DMA_TX_DMA_BASE,    RTE_SPI9_DMA_TX_CH,          (uint16_t)RTE_SPI9_DMA_TX_PERI_SEL,
2841     RTE_SPI9_DMA_RX_DMA_BASE,    RTE_SPI9_DMA_RX_CH,          (uint16_t)RTE_SPI9_DMA_RX_PERI_SEL,
2842 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
2843     RTE_SPI9_DMA_TX_DMAMUX_BASE, RTE_SPI9_DMA_RX_DMAMUX_BASE,
2844 #endif
2845 };
2846 
2847 AT_NONCACHEABLE_SECTION(static cmsis_lpspi_edma_handle_t LPSPI9_EdmaHandle);
2848 static edma_handle_t LPSPI9_EdmaTxDataToTxRegHandle;
2849 static edma_handle_t LPSPI9_EdmaRxRegToRxDataHandle;
2850 
2851 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
2852 ARMCC_SECTION("lpspi9_edma_driver_state")
2853 static cmsis_lpspi_edma_driver_state_t LPSPI9_EdmaDriverState = {
2854 #else
2855 static cmsis_lpspi_edma_driver_state_t LPSPI9_EdmaDriverState = {
2856 #endif
2857     &LPSPI9_Resource,
2858     &LPSPI9_EdmaResource,
2859     &LPSPI9_EdmaHandle,
2860     &LPSPI9_EdmaRxRegToRxDataHandle,
2861     &LPSPI9_EdmaTxDataToTxRegHandle,
2862 };
2863 
LPSPI9_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)2864 static int32_t LPSPI9_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)
2865 {
2866 #ifdef RTE_SPI9_PIN_INIT
2867     RTE_SPI9_PIN_INIT();
2868 #endif
2869     return LPSPI_EdmaInitialize(cb_event, &LPSPI9_EdmaDriverState);
2870 }
2871 
LPSPI9_EdmaUninitialize(void)2872 static int32_t LPSPI9_EdmaUninitialize(void)
2873 {
2874 #ifdef RTE_SPI9_PIN_DEINIT
2875     RTE_SPI9_PIN_DEINIT();
2876 #endif
2877     return LPSPI_EdmaUninitialize(&LPSPI9_EdmaDriverState);
2878 }
2879 
LPSPI9_EdmaPowerControl(ARM_POWER_STATE state)2880 static int32_t LPSPI9_EdmaPowerControl(ARM_POWER_STATE state)
2881 {
2882     return LPSPI_EdmaPowerControl(state, &LPSPI9_EdmaDriverState);
2883 }
2884 
LPSPI9_EdmaSend(const void * data,uint32_t num)2885 static int32_t LPSPI9_EdmaSend(const void *data, uint32_t num)
2886 {
2887     return LPSPI_EdmaSend(data, num, &LPSPI9_EdmaDriverState);
2888 }
2889 
LPSPI9_EdmaReceive(void * data,uint32_t num)2890 static int32_t LPSPI9_EdmaReceive(void *data, uint32_t num)
2891 {
2892     return LPSPI_EdmaReceive(data, num, &LPSPI9_EdmaDriverState);
2893 }
2894 
LPSPI9_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)2895 static int32_t LPSPI9_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
2896 {
2897     return LPSPI_EdmaTransfer(data_out, data_in, num, &LPSPI9_EdmaDriverState);
2898 }
2899 
LPSPI9_EdmaGetCount(void)2900 static uint32_t LPSPI9_EdmaGetCount(void)
2901 {
2902     return LPSPI_EdmaGetCount(&LPSPI9_EdmaDriverState);
2903 }
2904 
LPSPI9_EdmaControl(uint32_t control,uint32_t arg)2905 static int32_t LPSPI9_EdmaControl(uint32_t control, uint32_t arg)
2906 {
2907     return LPSPI_EdmaControl(control, arg, &LPSPI9_EdmaDriverState);
2908 }
2909 
LPSPI9_EdmaGetStatus(void)2910 static ARM_SPI_STATUS LPSPI9_EdmaGetStatus(void)
2911 {
2912     return LPSPI_EdmaGetStatus(&LPSPI9_EdmaDriverState);
2913 }
2914 
2915 #endif
2916 
2917 #else
2918 
2919 static cmsis_lpspi_handle_t LPSPI9_Handle;
2920 
2921 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
2922 ARMCC_SECTION("lpspi9_interrupt_driver_state")
2923 static cmsis_lpspi_interrupt_driver_state_t LPSPI9_InterruptDriverState = {
2924 #else
2925 static cmsis_lpspi_interrupt_driver_state_t LPSPI9_InterruptDriverState = {
2926 #endif
2927     &LPSPI9_Resource,
2928     &LPSPI9_Handle,
2929 };
2930 
LPSPI9_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)2931 static int32_t LPSPI9_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)
2932 {
2933 #ifdef RTE_SPI9_PIN_INIT
2934     RTE_SPI9_PIN_INIT();
2935 #endif
2936     return LPSPI_InterruptInitialize(cb_event, &LPSPI9_InterruptDriverState);
2937 }
2938 
LPSPI9_InterruptUninitialize(void)2939 static int32_t LPSPI9_InterruptUninitialize(void)
2940 {
2941 #ifdef RTE_SPI9_PIN_DEINIT
2942     RTE_SPI9_PIN_DEINIT();
2943 #endif
2944     return LPSPI_InterruptUninitialize(&LPSPI9_InterruptDriverState);
2945 }
2946 
LPSPI9_InterruptPowerControl(ARM_POWER_STATE state)2947 static int32_t LPSPI9_InterruptPowerControl(ARM_POWER_STATE state)
2948 {
2949     return LPSPI_InterruptPowerControl(state, &LPSPI9_InterruptDriverState);
2950 }
2951 
LPSPI9_InterruptSend(const void * data,uint32_t num)2952 static int32_t LPSPI9_InterruptSend(const void *data, uint32_t num)
2953 {
2954     return LPSPI_InterruptSend(data, num, &LPSPI9_InterruptDriverState);
2955 }
2956 
LPSPI9_InterruptReceive(void * data,uint32_t num)2957 static int32_t LPSPI9_InterruptReceive(void *data, uint32_t num)
2958 {
2959     return LPSPI_InterruptReceive(data, num, &LPSPI9_InterruptDriverState);
2960 }
2961 
LPSPI9_InterruptTransfer(const void * data_out,void * data_in,uint32_t num)2962 static int32_t LPSPI9_InterruptTransfer(const void *data_out, void *data_in, uint32_t num)
2963 {
2964     return LPSPI_InterruptTransfer(data_out, data_in, num, &LPSPI9_InterruptDriverState);
2965 }
2966 
LPSPI9_InterruptGetCount(void)2967 static uint32_t LPSPI9_InterruptGetCount(void)
2968 {
2969     return LPSPI_InterruptGetCount(&LPSPI9_InterruptDriverState);
2970 }
2971 
LPSPI9_InterruptControl(uint32_t control,uint32_t arg)2972 static int32_t LPSPI9_InterruptControl(uint32_t control, uint32_t arg)
2973 {
2974     return LPSPI_InterruptControl(control, arg, &LPSPI9_InterruptDriverState);
2975 }
2976 
LPSPI9_InterruptGetStatus(void)2977 static ARM_SPI_STATUS LPSPI9_InterruptGetStatus(void)
2978 {
2979     return LPSPI_InterruptGetStatus(&LPSPI9_InterruptDriverState);
2980 }
2981 
2982 #endif
2983 
2984 ARM_DRIVER_SPI Driver_SPI9 = {
2985     LPSPIx_GetVersion,     LPSPIx_GetCapabilities,
2986 #if defined(RTE_SPI9_DMA_EN) && RTE_SPI9_DMA_EN
2987     LPSPI9_EdmaInitialize, LPSPI9_EdmaUninitialize, LPSPI9_EdmaPowerControl, LPSPI9_EdmaSend,     LPSPI9_EdmaReceive,
2988     LPSPI9_EdmaTransfer,   LPSPI9_EdmaGetCount,     LPSPI9_EdmaControl,      LPSPI9_EdmaGetStatus
2989 #else
2990     LPSPI9_InterruptInitialize, LPSPI9_InterruptUninitialize, LPSPI9_InterruptPowerControl, LPSPI9_InterruptSend,
2991     LPSPI9_InterruptReceive,    LPSPI9_InterruptTransfer,     LPSPI9_InterruptGetCount,     LPSPI9_InterruptControl,
2992     LPSPI9_InterruptGetStatus
2993 #endif
2994 };
2995 
2996 #endif /*  LPSPI9  */
2997 
2998 #if defined(LPSPI10) && defined(RTE_SPI10) && RTE_SPI10
2999 
3000 /* User needs to provide the implementation for LPSPI10_GetFreq/InitPins/DeinitPins
3001 in the application for enabling according instance. */
3002 extern uint32_t LPSPI10_GetFreq(void);
3003 
3004 static cmsis_lpspi_resource_t LPSPI10_Resource = {LPSPI10, 10, LPSPI10_GetFreq};
3005 
3006 #if defined(RTE_SPI10_DMA_EN) && RTE_SPI10_DMA_EN
3007 
3008 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
3009 static cmsis_lpspi_edma_resource_t LPSPI10_EdmaResource = {
3010     RTE_SPI10_DMA_TX_DMA_BASE,    RTE_SPI10_DMA_TX_CH,          (uint16_t)RTE_SPI10_DMA_TX_PERI_SEL,
3011     RTE_SPI10_DMA_RX_DMA_BASE,    RTE_SPI10_DMA_RX_CH,          (uint16_t)RTE_SPI10_DMA_RX_PERI_SEL,
3012 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
3013     RTE_SPI10_DMA_TX_DMAMUX_BASE, RTE_SPI10_DMA_RX_DMAMUX_BASE,
3014 #endif
3015 };
3016 
3017 AT_NONCACHEABLE_SECTION(static cmsis_lpspi_edma_handle_t LPSPI10_EdmaHandle);
3018 static edma_handle_t LPSPI10_EdmaTxDataToTxRegHandle;
3019 static edma_handle_t LPSPI10_EdmaRxRegToRxDataHandle;
3020 
3021 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
3022 ARMCC_SECTION("lpspi10_edma_driver_state")
3023 static cmsis_lpspi_edma_driver_state_t LPSPI10_EdmaDriverState = {
3024 #else
3025 static cmsis_lpspi_edma_driver_state_t LPSPI10_EdmaDriverState = {
3026 #endif
3027     &LPSPI10_Resource,
3028     &LPSPI10_EdmaResource,
3029     &LPSPI10_EdmaHandle,
3030     &LPSPI10_EdmaRxRegToRxDataHandle,
3031     &LPSPI10_EdmaTxDataToTxRegHandle,
3032 };
3033 
LPSPI10_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)3034 static int32_t LPSPI10_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)
3035 {
3036 #ifdef RTE_SPI10_PIN_INIT
3037     RTE_SPI10_PIN_INIT();
3038 #endif
3039     return LPSPI_EdmaInitialize(cb_event, &LPSPI10_EdmaDriverState);
3040 }
3041 
LPSPI10_EdmaUninitialize(void)3042 static int32_t LPSPI10_EdmaUninitialize(void)
3043 {
3044 #ifdef RTE_SPI10_PIN_DEINIT
3045     RTE_SPI10_PIN_DEINIT();
3046 #endif
3047     return LPSPI_EdmaUninitialize(&LPSPI10_EdmaDriverState);
3048 }
3049 
LPSPI10_EdmaPowerControl(ARM_POWER_STATE state)3050 static int32_t LPSPI10_EdmaPowerControl(ARM_POWER_STATE state)
3051 {
3052     return LPSPI_EdmaPowerControl(state, &LPSPI10_EdmaDriverState);
3053 }
3054 
LPSPI10_EdmaSend(const void * data,uint32_t num)3055 static int32_t LPSPI10_EdmaSend(const void *data, uint32_t num)
3056 {
3057     return LPSPI_EdmaSend(data, num, &LPSPI10_EdmaDriverState);
3058 }
3059 
LPSPI10_EdmaReceive(void * data,uint32_t num)3060 static int32_t LPSPI10_EdmaReceive(void *data, uint32_t num)
3061 {
3062     return LPSPI_EdmaReceive(data, num, &LPSPI10_EdmaDriverState);
3063 }
3064 
LPSPI10_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)3065 static int32_t LPSPI10_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
3066 {
3067     return LPSPI_EdmaTransfer(data_out, data_in, num, &LPSPI10_EdmaDriverState);
3068 }
3069 
LPSPI10_EdmaGetCount(void)3070 static uint32_t LPSPI10_EdmaGetCount(void)
3071 {
3072     return LPSPI_EdmaGetCount(&LPSPI10_EdmaDriverState);
3073 }
3074 
LPSPI10_EdmaControl(uint32_t control,uint32_t arg)3075 static int32_t LPSPI10_EdmaControl(uint32_t control, uint32_t arg)
3076 {
3077     return LPSPI_EdmaControl(control, arg, &LPSPI10_EdmaDriverState);
3078 }
3079 
LPSPI10_EdmaGetStatus(void)3080 static ARM_SPI_STATUS LPSPI10_EdmaGetStatus(void)
3081 {
3082     return LPSPI_EdmaGetStatus(&LPSPI10_EdmaDriverState);
3083 }
3084 
3085 #endif
3086 
3087 #else
3088 
3089 static cmsis_lpspi_handle_t LPSPI10_Handle;
3090 
3091 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
3092 ARMCC_SECTION("lpspi10_interrupt_driver_state")
3093 static cmsis_lpspi_interrupt_driver_state_t LPSPI10_InterruptDriverState = {
3094 #else
3095 static cmsis_lpspi_interrupt_driver_state_t LPSPI10_InterruptDriverState = {
3096 #endif
3097     &LPSPI10_Resource,
3098     &LPSPI10_Handle,
3099 };
3100 
LPSPI10_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)3101 static int32_t LPSPI10_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)
3102 {
3103 #ifdef RTE_SPI10_PIN_INIT
3104     RTE_SPI10_PIN_INIT();
3105 #endif
3106     return LPSPI_InterruptInitialize(cb_event, &LPSPI10_InterruptDriverState);
3107 }
3108 
LPSPI10_InterruptUninitialize(void)3109 static int32_t LPSPI10_InterruptUninitialize(void)
3110 {
3111 #ifdef RTE_SPI10_PIN_DEINIT
3112     RTE_SPI10_PIN_DEINIT();
3113 #endif
3114     return LPSPI_InterruptUninitialize(&LPSPI10_InterruptDriverState);
3115 }
3116 
LPSPI10_InterruptPowerControl(ARM_POWER_STATE state)3117 static int32_t LPSPI10_InterruptPowerControl(ARM_POWER_STATE state)
3118 {
3119     return LPSPI_InterruptPowerControl(state, &LPSPI10_InterruptDriverState);
3120 }
3121 
LPSPI10_InterruptSend(const void * data,uint32_t num)3122 static int32_t LPSPI10_InterruptSend(const void *data, uint32_t num)
3123 {
3124     return LPSPI_InterruptSend(data, num, &LPSPI10_InterruptDriverState);
3125 }
3126 
LPSPI10_InterruptReceive(void * data,uint32_t num)3127 static int32_t LPSPI10_InterruptReceive(void *data, uint32_t num)
3128 {
3129     return LPSPI_InterruptReceive(data, num, &LPSPI10_InterruptDriverState);
3130 }
3131 
LPSPI10_InterruptTransfer(const void * data_out,void * data_in,uint32_t num)3132 static int32_t LPSPI10_InterruptTransfer(const void *data_out, void *data_in, uint32_t num)
3133 {
3134     return LPSPI_InterruptTransfer(data_out, data_in, num, &LPSPI10_InterruptDriverState);
3135 }
3136 
LPSPI10_InterruptGetCount(void)3137 static uint32_t LPSPI10_InterruptGetCount(void)
3138 {
3139     return LPSPI_InterruptGetCount(&LPSPI10_InterruptDriverState);
3140 }
3141 
LPSPI10_InterruptControl(uint32_t control,uint32_t arg)3142 static int32_t LPSPI10_InterruptControl(uint32_t control, uint32_t arg)
3143 {
3144     return LPSPI_InterruptControl(control, arg, &LPSPI10_InterruptDriverState);
3145 }
3146 
LPSPI10_InterruptGetStatus(void)3147 static ARM_SPI_STATUS LPSPI10_InterruptGetStatus(void)
3148 {
3149     return LPSPI_InterruptGetStatus(&LPSPI10_InterruptDriverState);
3150 }
3151 
3152 #endif
3153 
3154 ARM_DRIVER_SPI Driver_SPI10 = {
3155     LPSPIx_GetVersion,      LPSPIx_GetCapabilities,
3156 #if defined(RTE_SPI10_DMA_EN) && RTE_SPI10_DMA_EN
3157     LPSPI10_EdmaInitialize, LPSPI10_EdmaUninitialize, LPSPI10_EdmaPowerControl, LPSPI10_EdmaSend,
3158     LPSPI10_EdmaReceive,    LPSPI10_EdmaTransfer,     LPSPI10_EdmaGetCount,     LPSPI10_EdmaControl,
3159     LPSPI10_EdmaGetStatus
3160 #else
3161     LPSPI10_InterruptInitialize, LPSPI10_InterruptUninitialize, LPSPI10_InterruptPowerControl, LPSPI10_InterruptSend,
3162     LPSPI10_InterruptReceive,    LPSPI10_InterruptTransfer,     LPSPI10_InterruptGetCount,     LPSPI10_InterruptControl,
3163     LPSPI10_InterruptGetStatus
3164 #endif
3165 };
3166 
3167 #endif /*  LPSPI10  */
3168 
3169 #if defined(LPSPI11) && defined(RTE_SPI11) && RTE_SPI11
3170 
3171 /* User needs to provide the implementation for LPSPI11_GetFreq/InitPins/DeinitPins
3172 in the application for enabling according instance. */
3173 extern uint32_t LPSPI11_GetFreq(void);
3174 
3175 static cmsis_lpspi_resource_t LPSPI11_Resource = {LPSPI11, 11, LPSPI11_GetFreq};
3176 
3177 #if defined(RTE_SPI11_DMA_EN) && RTE_SPI11_DMA_EN
3178 
3179 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
3180 static cmsis_lpspi_edma_resource_t LPSPI11_EdmaResource = {
3181     RTE_SPI11_DMA_TX_DMA_BASE,    RTE_SPI11_DMA_TX_CH,          (uint16_t)RTE_SPI11_DMA_TX_PERI_SEL,
3182     RTE_SPI11_DMA_RX_DMA_BASE,    RTE_SPI11_DMA_RX_CH,          (uint16_t)RTE_SPI11_DMA_RX_PERI_SEL,
3183 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
3184     RTE_SPI11_DMA_TX_DMAMUX_BASE, RTE_SPI11_DMA_RX_DMAMUX_BASE,
3185 #endif
3186 };
3187 
3188 AT_NONCACHEABLE_SECTION(static cmsis_lpspi_edma_handle_t LPSPI11_EdmaHandle);
3189 static edma_handle_t LPSPI11_EdmaTxDataToTxRegHandle;
3190 static edma_handle_t LPSPI11_EdmaRxRegToRxDataHandle;
3191 
3192 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
3193 ARMCC_SECTION("lpspi11_edma_driver_state")
3194 static cmsis_lpspi_edma_driver_state_t LPSPI11_EdmaDriverState = {
3195 #else
3196 static cmsis_lpspi_edma_driver_state_t LPSPI11_EdmaDriverState = {
3197 #endif
3198     &LPSPI11_Resource,
3199     &LPSPI11_EdmaResource,
3200     &LPSPI11_EdmaHandle,
3201     &LPSPI11_EdmaRxRegToRxDataHandle,
3202     &LPSPI11_EdmaTxDataToTxRegHandle,
3203 };
3204 
LPSPI11_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)3205 static int32_t LPSPI11_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)
3206 {
3207 #ifdef RTE_SPI11_PIN_INIT
3208     RTE_SPI11_PIN_INIT();
3209 #endif
3210     return LPSPI_EdmaInitialize(cb_event, &LPSPI11_EdmaDriverState);
3211 }
3212 
LPSPI11_EdmaUninitialize(void)3213 static int32_t LPSPI11_EdmaUninitialize(void)
3214 {
3215 #ifdef RTE_SPI11_PIN_DEINIT
3216     RTE_SPI11_PIN_DEINIT();
3217 #endif
3218     return LPSPI_EdmaUninitialize(&LPSPI11_EdmaDriverState);
3219 }
3220 
LPSPI11_EdmaPowerControl(ARM_POWER_STATE state)3221 static int32_t LPSPI11_EdmaPowerControl(ARM_POWER_STATE state)
3222 {
3223     return LPSPI_EdmaPowerControl(state, &LPSPI11_EdmaDriverState);
3224 }
3225 
LPSPI11_EdmaSend(const void * data,uint32_t num)3226 static int32_t LPSPI11_EdmaSend(const void *data, uint32_t num)
3227 {
3228     return LPSPI_EdmaSend(data, num, &LPSPI11_EdmaDriverState);
3229 }
3230 
LPSPI11_EdmaReceive(void * data,uint32_t num)3231 static int32_t LPSPI11_EdmaReceive(void *data, uint32_t num)
3232 {
3233     return LPSPI_EdmaReceive(data, num, &LPSPI11_EdmaDriverState);
3234 }
3235 
LPSPI11_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)3236 static int32_t LPSPI11_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
3237 {
3238     return LPSPI_EdmaTransfer(data_out, data_in, num, &LPSPI11_EdmaDriverState);
3239 }
3240 
LPSPI11_EdmaGetCount(void)3241 static uint32_t LPSPI11_EdmaGetCount(void)
3242 {
3243     return LPSPI_EdmaGetCount(&LPSPI11_EdmaDriverState);
3244 }
3245 
LPSPI11_EdmaControl(uint32_t control,uint32_t arg)3246 static int32_t LPSPI11_EdmaControl(uint32_t control, uint32_t arg)
3247 {
3248     return LPSPI_EdmaControl(control, arg, &LPSPI11_EdmaDriverState);
3249 }
3250 
LPSPI11_EdmaGetStatus(void)3251 static ARM_SPI_STATUS LPSPI11_EdmaGetStatus(void)
3252 {
3253     return LPSPI_EdmaGetStatus(&LPSPI11_EdmaDriverState);
3254 }
3255 
3256 #endif
3257 
3258 #else
3259 
3260 static cmsis_lpspi_handle_t LPSPI11_Handle;
3261 
3262 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
3263 ARMCC_SECTION("lpspi11_interrupt_driver_state")
3264 static cmsis_lpspi_interrupt_driver_state_t LPSPI11_InterruptDriverState = {
3265 #else
3266 static cmsis_lpspi_interrupt_driver_state_t LPSPI11_InterruptDriverState = {
3267 #endif
3268     &LPSPI11_Resource,
3269     &LPSPI11_Handle,
3270 };
3271 
LPSPI11_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)3272 static int32_t LPSPI11_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)
3273 {
3274 #ifdef RTE_SPI11_PIN_INIT
3275     RTE_SPI11_PIN_INIT();
3276 #endif
3277     return LPSPI_InterruptInitialize(cb_event, &LPSPI11_InterruptDriverState);
3278 }
3279 
LPSPI11_InterruptUninitialize(void)3280 static int32_t LPSPI11_InterruptUninitialize(void)
3281 {
3282 #ifdef RTE_SPI11_PIN_DEINIT
3283     RTE_SPI11_PIN_DEINIT();
3284 #endif
3285     return LPSPI_InterruptUninitialize(&LPSPI11_InterruptDriverState);
3286 }
3287 
LPSPI11_InterruptPowerControl(ARM_POWER_STATE state)3288 static int32_t LPSPI11_InterruptPowerControl(ARM_POWER_STATE state)
3289 {
3290     return LPSPI_InterruptPowerControl(state, &LPSPI11_InterruptDriverState);
3291 }
3292 
LPSPI11_InterruptSend(const void * data,uint32_t num)3293 static int32_t LPSPI11_InterruptSend(const void *data, uint32_t num)
3294 {
3295     return LPSPI_InterruptSend(data, num, &LPSPI11_InterruptDriverState);
3296 }
3297 
LPSPI11_InterruptReceive(void * data,uint32_t num)3298 static int32_t LPSPI11_InterruptReceive(void *data, uint32_t num)
3299 {
3300     return LPSPI_InterruptReceive(data, num, &LPSPI11_InterruptDriverState);
3301 }
3302 
LPSPI11_InterruptTransfer(const void * data_out,void * data_in,uint32_t num)3303 static int32_t LPSPI11_InterruptTransfer(const void *data_out, void *data_in, uint32_t num)
3304 {
3305     return LPSPI_InterruptTransfer(data_out, data_in, num, &LPSPI11_InterruptDriverState);
3306 }
3307 
LPSPI11_InterruptGetCount(void)3308 static uint32_t LPSPI11_InterruptGetCount(void)
3309 {
3310     return LPSPI_InterruptGetCount(&LPSPI11_InterruptDriverState);
3311 }
3312 
LPSPI11_InterruptControl(uint32_t control,uint32_t arg)3313 static int32_t LPSPI11_InterruptControl(uint32_t control, uint32_t arg)
3314 {
3315     return LPSPI_InterruptControl(control, arg, &LPSPI11_InterruptDriverState);
3316 }
3317 
LPSPI11_InterruptGetStatus(void)3318 static ARM_SPI_STATUS LPSPI11_InterruptGetStatus(void)
3319 {
3320     return LPSPI_InterruptGetStatus(&LPSPI11_InterruptDriverState);
3321 }
3322 
3323 #endif
3324 
3325 ARM_DRIVER_SPI Driver_SPI11 = {
3326     LPSPIx_GetVersion,      LPSPIx_GetCapabilities,
3327 #if defined(RTE_SPI11_DMA_EN) && RTE_SPI11_DMA_EN
3328     LPSPI11_EdmaInitialize, LPSPI11_EdmaUninitialize, LPSPI11_EdmaPowerControl, LPSPI11_EdmaSend,
3329     LPSPI11_EdmaReceive,    LPSPI11_EdmaTransfer,     LPSPI11_EdmaGetCount,     LPSPI11_EdmaControl,
3330     LPSPI11_EdmaGetStatus
3331 #else
3332     LPSPI11_InterruptInitialize, LPSPI11_InterruptUninitialize, LPSPI11_InterruptPowerControl, LPSPI11_InterruptSend,
3333     LPSPI11_InterruptReceive,    LPSPI11_InterruptTransfer,     LPSPI11_InterruptGetCount,     LPSPI11_InterruptControl,
3334     LPSPI11_InterruptGetStatus
3335 #endif
3336 };
3337 
3338 #endif /*  LPSPI11  */
3339 
3340 #if defined(LPSPI12) && defined(RTE_SPI12) && RTE_SPI12
3341 
3342 /* User needs to provide the implementation for LPSPI12_GetFreq/InitPins/DeinitPins
3343 in the application for enabling according instance. */
3344 extern uint32_t LPSPI12_GetFreq(void);
3345 
3346 static cmsis_lpspi_resource_t LPSPI12_Resource = {LPSPI12, 12, LPSPI12_GetFreq};
3347 
3348 #if defined(RTE_SPI12_DMA_EN) && RTE_SPI12_DMA_EN
3349 
3350 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
3351 static cmsis_lpspi_edma_resource_t LPSPI12_EdmaResource = {
3352     RTE_SPI12_DMA_TX_DMA_BASE,    RTE_SPI12_DMA_TX_CH,          (uint16_t)RTE_SPI12_DMA_TX_PERI_SEL,
3353     RTE_SPI12_DMA_RX_DMA_BASE,    RTE_SPI12_DMA_RX_CH,          (uint16_t)RTE_SPI12_DMA_RX_PERI_SEL,
3354 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
3355     RTE_SPI12_DMA_TX_DMAMUX_BASE, RTE_SPI12_DMA_RX_DMAMUX_BASE,
3356 #endif
3357 };
3358 
3359 AT_NONCACHEABLE_SECTION(static cmsis_lpspi_edma_handle_t LPSPI12_EdmaHandle);
3360 static edma_handle_t LPSPI12_EdmaTxDataToTxRegHandle;
3361 static edma_handle_t LPSPI12_EdmaRxRegToRxDataHandle;
3362 
3363 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
3364 ARMCC_SECTION("lpspi12_edma_driver_state")
3365 static cmsis_lpspi_edma_driver_state_t LPSPI12_EdmaDriverState = {
3366 #else
3367 static cmsis_lpspi_edma_driver_state_t LPSPI12_EdmaDriverState = {
3368 #endif
3369     &LPSPI12_Resource,
3370     &LPSPI12_EdmaResource,
3371     &LPSPI12_EdmaHandle,
3372     &LPSPI12_EdmaRxRegToRxDataHandle,
3373     &LPSPI12_EdmaTxDataToTxRegHandle,
3374 };
3375 
LPSPI12_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)3376 static int32_t LPSPI12_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)
3377 {
3378 #ifdef RTE_SPI12_PIN_INIT
3379     RTE_SPI12_PIN_INIT();
3380 #endif
3381     return LPSPI_EdmaInitialize(cb_event, &LPSPI12_EdmaDriverState);
3382 }
3383 
LPSPI12_EdmaUninitialize(void)3384 static int32_t LPSPI12_EdmaUninitialize(void)
3385 {
3386 #ifdef RTE_SPI12_PIN_DEINIT
3387     RTE_SPI12_PIN_DEINIT();
3388 #endif
3389     return LPSPI_EdmaUninitialize(&LPSPI12_EdmaDriverState);
3390 }
3391 
LPSPI12_EdmaPowerControl(ARM_POWER_STATE state)3392 static int32_t LPSPI12_EdmaPowerControl(ARM_POWER_STATE state)
3393 {
3394     return LPSPI_EdmaPowerControl(state, &LPSPI12_EdmaDriverState);
3395 }
3396 
LPSPI12_EdmaSend(const void * data,uint32_t num)3397 static int32_t LPSPI12_EdmaSend(const void *data, uint32_t num)
3398 {
3399     return LPSPI_EdmaSend(data, num, &LPSPI12_EdmaDriverState);
3400 }
3401 
LPSPI12_EdmaReceive(void * data,uint32_t num)3402 static int32_t LPSPI12_EdmaReceive(void *data, uint32_t num)
3403 {
3404     return LPSPI_EdmaReceive(data, num, &LPSPI12_EdmaDriverState);
3405 }
3406 
LPSPI12_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)3407 static int32_t LPSPI12_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
3408 {
3409     return LPSPI_EdmaTransfer(data_out, data_in, num, &LPSPI12_EdmaDriverState);
3410 }
3411 
LPSPI12_EdmaGetCount(void)3412 static uint32_t LPSPI12_EdmaGetCount(void)
3413 {
3414     return LPSPI_EdmaGetCount(&LPSPI12_EdmaDriverState);
3415 }
3416 
LPSPI12_EdmaControl(uint32_t control,uint32_t arg)3417 static int32_t LPSPI12_EdmaControl(uint32_t control, uint32_t arg)
3418 {
3419     return LPSPI_EdmaControl(control, arg, &LPSPI12_EdmaDriverState);
3420 }
3421 
LPSPI12_EdmaGetStatus(void)3422 static ARM_SPI_STATUS LPSPI12_EdmaGetStatus(void)
3423 {
3424     return LPSPI_EdmaGetStatus(&LPSPI12_EdmaDriverState);
3425 }
3426 
3427 #endif
3428 
3429 #else
3430 
3431 static cmsis_lpspi_handle_t LPSPI12_Handle;
3432 
3433 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
3434 ARMCC_SECTION("lpspi12_interrupt_driver_state")
3435 static cmsis_lpspi_interrupt_driver_state_t LPSPI12_InterruptDriverState = {
3436 #else
3437 static cmsis_lpspi_interrupt_driver_state_t LPSPI12_InterruptDriverState = {
3438 #endif
3439     &LPSPI12_Resource,
3440     &LPSPI12_Handle,
3441 };
3442 
LPSPI12_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)3443 static int32_t LPSPI12_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)
3444 {
3445 #ifdef RTE_SPI12_PIN_INIT
3446     RTE_SPI12_PIN_INIT();
3447 #endif
3448     return LPSPI_InterruptInitialize(cb_event, &LPSPI12_InterruptDriverState);
3449 }
3450 
LPSPI12_InterruptUninitialize(void)3451 static int32_t LPSPI12_InterruptUninitialize(void)
3452 {
3453 #ifdef RTE_SPI12_PIN_DEINIT
3454     RTE_SPI12_PIN_DEINIT();
3455 #endif
3456     return LPSPI_InterruptUninitialize(&LPSPI12_InterruptDriverState);
3457 }
3458 
LPSPI12_InterruptPowerControl(ARM_POWER_STATE state)3459 static int32_t LPSPI12_InterruptPowerControl(ARM_POWER_STATE state)
3460 {
3461     return LPSPI_InterruptPowerControl(state, &LPSPI12_InterruptDriverState);
3462 }
3463 
LPSPI12_InterruptSend(const void * data,uint32_t num)3464 static int32_t LPSPI12_InterruptSend(const void *data, uint32_t num)
3465 {
3466     return LPSPI_InterruptSend(data, num, &LPSPI12_InterruptDriverState);
3467 }
3468 
LPSPI12_InterruptReceive(void * data,uint32_t num)3469 static int32_t LPSPI12_InterruptReceive(void *data, uint32_t num)
3470 {
3471     return LPSPI_InterruptReceive(data, num, &LPSPI12_InterruptDriverState);
3472 }
3473 
LPSPI12_InterruptTransfer(const void * data_out,void * data_in,uint32_t num)3474 static int32_t LPSPI12_InterruptTransfer(const void *data_out, void *data_in, uint32_t num)
3475 {
3476     return LPSPI_InterruptTransfer(data_out, data_in, num, &LPSPI12_InterruptDriverState);
3477 }
3478 
LPSPI12_InterruptGetCount(void)3479 static uint32_t LPSPI12_InterruptGetCount(void)
3480 {
3481     return LPSPI_InterruptGetCount(&LPSPI12_InterruptDriverState);
3482 }
3483 
LPSPI12_InterruptControl(uint32_t control,uint32_t arg)3484 static int32_t LPSPI12_InterruptControl(uint32_t control, uint32_t arg)
3485 {
3486     return LPSPI_InterruptControl(control, arg, &LPSPI12_InterruptDriverState);
3487 }
3488 
LPSPI12_InterruptGetStatus(void)3489 static ARM_SPI_STATUS LPSPI12_InterruptGetStatus(void)
3490 {
3491     return LPSPI_InterruptGetStatus(&LPSPI12_InterruptDriverState);
3492 }
3493 
3494 #endif
3495 
3496 ARM_DRIVER_SPI Driver_SPI12 = {
3497     LPSPIx_GetVersion,      LPSPIx_GetCapabilities,
3498 #if defined(RTE_SPI12_DMA_EN) && RTE_SPI12_DMA_EN
3499     LPSPI12_EdmaInitialize, LPSPI12_EdmaUninitialize, LPSPI12_EdmaPowerControl, LPSPI12_EdmaSend,
3500     LPSPI12_EdmaReceive,    LPSPI12_EdmaTransfer,     LPSPI12_EdmaGetCount,     LPSPI12_EdmaControl,
3501     LPSPI12_EdmaGetStatus
3502 #else
3503     LPSPI12_InterruptInitialize, LPSPI12_InterruptUninitialize, LPSPI12_InterruptPowerControl, LPSPI12_InterruptSend,
3504     LPSPI12_InterruptReceive,    LPSPI12_InterruptTransfer,     LPSPI12_InterruptGetCount,     LPSPI12_InterruptControl,
3505     LPSPI12_InterruptGetStatus
3506 #endif
3507 };
3508 
3509 #endif /*  LPSPI12  */
3510 
3511 #if defined(LPSPI13) && defined(RTE_SPI13) && RTE_SPI13
3512 
3513 /* User needs to provide the implementation for LPSPI13_GetFreq/InitPins/DeinitPins
3514 in the application for enabling according instance. */
3515 extern uint32_t LPSPI13_GetFreq(void);
3516 
3517 static cmsis_lpspi_resource_t LPSPI13_Resource = {LPSPI13, 13, LPSPI13_GetFreq};
3518 
3519 #if defined(RTE_SPI13_DMA_EN) && RTE_SPI13_DMA_EN
3520 
3521 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
3522 static cmsis_lpspi_edma_resource_t LPSPI13_EdmaResource = {
3523     RTE_SPI13_DMA_TX_DMA_BASE,    RTE_SPI13_DMA_TX_CH,          (uint16_t)RTE_SPI13_DMA_TX_PERI_SEL,
3524     RTE_SPI13_DMA_RX_DMA_BASE,    RTE_SPI13_DMA_RX_CH,          (uint16_t)RTE_SPI13_DMA_RX_PERI_SEL,
3525 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
3526     RTE_SPI13_DMA_TX_DMAMUX_BASE, RTE_SPI13_DMA_RX_DMAMUX_BASE,
3527 #endif
3528 };
3529 
3530 AT_NONCACHEABLE_SECTION(static cmsis_lpspi_edma_handle_t LPSPI13_EdmaHandle);
3531 static edma_handle_t LPSPI13_EdmaTxDataToTxRegHandle;
3532 static edma_handle_t LPSPI13_EdmaRxRegToRxDataHandle;
3533 
3534 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
3535 ARMCC_SECTION("lpspi13_edma_driver_state")
3536 static cmsis_lpspi_edma_driver_state_t LPSPI13_EdmaDriverState = {
3537 #else
3538 static cmsis_lpspi_edma_driver_state_t LPSPI13_EdmaDriverState = {
3539 #endif
3540     &LPSPI13_Resource,
3541     &LPSPI13_EdmaResource,
3542     &LPSPI13_EdmaHandle,
3543     &LPSPI13_EdmaRxRegToRxDataHandle,
3544     &LPSPI13_EdmaTxDataToTxRegHandle,
3545 };
3546 
LPSPI13_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)3547 static int32_t LPSPI13_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)
3548 {
3549 #ifdef RTE_SPI13_PIN_INIT
3550     RTE_SPI13_PIN_INIT();
3551 #endif
3552     return LPSPI_EdmaInitialize(cb_event, &LPSPI13_EdmaDriverState);
3553 }
3554 
LPSPI13_EdmaUninitialize(void)3555 static int32_t LPSPI13_EdmaUninitialize(void)
3556 {
3557 #ifdef RTE_SPI13_PIN_DEINIT
3558     RTE_SPI13_PIN_DEINIT();
3559 #endif
3560     return LPSPI_EdmaUninitialize(&LPSPI13_EdmaDriverState);
3561 }
3562 
LPSPI13_EdmaPowerControl(ARM_POWER_STATE state)3563 static int32_t LPSPI13_EdmaPowerControl(ARM_POWER_STATE state)
3564 {
3565     return LPSPI_EdmaPowerControl(state, &LPSPI13_EdmaDriverState);
3566 }
3567 
LPSPI13_EdmaSend(const void * data,uint32_t num)3568 static int32_t LPSPI13_EdmaSend(const void *data, uint32_t num)
3569 {
3570     return LPSPI_EdmaSend(data, num, &LPSPI13_EdmaDriverState);
3571 }
3572 
LPSPI13_EdmaReceive(void * data,uint32_t num)3573 static int32_t LPSPI13_EdmaReceive(void *data, uint32_t num)
3574 {
3575     return LPSPI_EdmaReceive(data, num, &LPSPI13_EdmaDriverState);
3576 }
3577 
LPSPI13_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)3578 static int32_t LPSPI13_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
3579 {
3580     return LPSPI_EdmaTransfer(data_out, data_in, num, &LPSPI13_EdmaDriverState);
3581 }
3582 
LPSPI13_EdmaGetCount(void)3583 static uint32_t LPSPI13_EdmaGetCount(void)
3584 {
3585     return LPSPI_EdmaGetCount(&LPSPI13_EdmaDriverState);
3586 }
3587 
LPSPI13_EdmaControl(uint32_t control,uint32_t arg)3588 static int32_t LPSPI13_EdmaControl(uint32_t control, uint32_t arg)
3589 {
3590     return LPSPI_EdmaControl(control, arg, &LPSPI13_EdmaDriverState);
3591 }
3592 
LPSPI13_EdmaGetStatus(void)3593 static ARM_SPI_STATUS LPSPI13_EdmaGetStatus(void)
3594 {
3595     return LPSPI_EdmaGetStatus(&LPSPI13_EdmaDriverState);
3596 }
3597 
3598 #endif
3599 
3600 #else
3601 
3602 static cmsis_lpspi_handle_t LPSPI13_Handle;
3603 
3604 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
3605 ARMCC_SECTION("lpspi13_interrupt_driver_state")
3606 static cmsis_lpspi_interrupt_driver_state_t LPSPI13_InterruptDriverState = {
3607 #else
3608 static cmsis_lpspi_interrupt_driver_state_t LPSPI13_InterruptDriverState = {
3609 #endif
3610     &LPSPI13_Resource,
3611     &LPSPI13_Handle,
3612 };
3613 
LPSPI13_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)3614 static int32_t LPSPI13_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)
3615 {
3616 #ifdef RTE_SPI13_PIN_INIT
3617     RTE_SPI13_PIN_INIT();
3618 #endif
3619     return LPSPI_InterruptInitialize(cb_event, &LPSPI13_InterruptDriverState);
3620 }
3621 
LPSPI13_InterruptUninitialize(void)3622 static int32_t LPSPI13_InterruptUninitialize(void)
3623 {
3624 #ifdef RTE_SPI13_PIN_DEINIT
3625     RTE_SPI13_PIN_DEINIT();
3626 #endif
3627     return LPSPI_InterruptUninitialize(&LPSPI13_InterruptDriverState);
3628 }
3629 
LPSPI13_InterruptPowerControl(ARM_POWER_STATE state)3630 static int32_t LPSPI13_InterruptPowerControl(ARM_POWER_STATE state)
3631 {
3632     return LPSPI_InterruptPowerControl(state, &LPSPI13_InterruptDriverState);
3633 }
3634 
LPSPI13_InterruptSend(const void * data,uint32_t num)3635 static int32_t LPSPI13_InterruptSend(const void *data, uint32_t num)
3636 {
3637     return LPSPI_InterruptSend(data, num, &LPSPI13_InterruptDriverState);
3638 }
3639 
LPSPI13_InterruptReceive(void * data,uint32_t num)3640 static int32_t LPSPI13_InterruptReceive(void *data, uint32_t num)
3641 {
3642     return LPSPI_InterruptReceive(data, num, &LPSPI13_InterruptDriverState);
3643 }
3644 
LPSPI13_InterruptTransfer(const void * data_out,void * data_in,uint32_t num)3645 static int32_t LPSPI13_InterruptTransfer(const void *data_out, void *data_in, uint32_t num)
3646 {
3647     return LPSPI_InterruptTransfer(data_out, data_in, num, &LPSPI13_InterruptDriverState);
3648 }
3649 
LPSPI13_InterruptGetCount(void)3650 static uint32_t LPSPI13_InterruptGetCount(void)
3651 {
3652     return LPSPI_InterruptGetCount(&LPSPI13_InterruptDriverState);
3653 }
3654 
LPSPI13_InterruptControl(uint32_t control,uint32_t arg)3655 static int32_t LPSPI13_InterruptControl(uint32_t control, uint32_t arg)
3656 {
3657     return LPSPI_InterruptControl(control, arg, &LPSPI13_InterruptDriverState);
3658 }
3659 
LPSPI13_InterruptGetStatus(void)3660 static ARM_SPI_STATUS LPSPI13_InterruptGetStatus(void)
3661 {
3662     return LPSPI_InterruptGetStatus(&LPSPI13_InterruptDriverState);
3663 }
3664 
3665 #endif
3666 
3667 ARM_DRIVER_SPI Driver_SPI13 = {
3668     LPSPIx_GetVersion,      LPSPIx_GetCapabilities,
3669 #if defined(RTE_SPI13_DMA_EN) && RTE_SPI13_DMA_EN
3670     LPSPI13_EdmaInitialize, LPSPI13_EdmaUninitialize, LPSPI13_EdmaPowerControl, LPSPI13_EdmaSend,
3671     LPSPI13_EdmaReceive,    LPSPI13_EdmaTransfer,     LPSPI13_EdmaGetCount,     LPSPI13_EdmaControl,
3672     LPSPI13_EdmaGetStatus
3673 #else
3674     LPSPI13_InterruptInitialize, LPSPI13_InterruptUninitialize, LPSPI13_InterruptPowerControl, LPSPI13_InterruptSend,
3675     LPSPI13_InterruptReceive,    LPSPI13_InterruptTransfer,     LPSPI13_InterruptGetCount,     LPSPI13_InterruptControl,
3676     LPSPI13_InterruptGetStatus
3677 #endif
3678 };
3679 
3680 #endif /*  LPSPI13  */
3681 
3682 #if defined(LPSPI14) && defined(RTE_SPI14) && RTE_SPI14
3683 
3684 /* User needs to provide the implementation for LPSPI14_GetFreq/InitPins/DeinitPins
3685 in the application for enabling according instance. */
3686 extern uint32_t LPSPI14_GetFreq(void);
3687 
3688 static cmsis_lpspi_resource_t LPSPI14_Resource = {LPSPI14, 14, LPSPI14_GetFreq};
3689 
3690 #if defined(RTE_SPI14_DMA_EN) && RTE_SPI14_DMA_EN
3691 
3692 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
3693 static cmsis_lpspi_edma_resource_t LPSPI14_EdmaResource = {
3694     RTE_SPI14_DMA_TX_DMA_BASE,    RTE_SPI14_DMA_TX_CH,          (uint16_t)RTE_SPI14_DMA_TX_PERI_SEL,
3695     RTE_SPI14_DMA_RX_DMA_BASE,    RTE_SPI14_DMA_RX_CH,          (uint16_t)RTE_SPI14_DMA_RX_PERI_SEL,
3696 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
3697     RTE_SPI14_DMA_TX_DMAMUX_BASE, RTE_SPI14_DMA_RX_DMAMUX_BASE,
3698 #endif
3699 };
3700 
3701 AT_NONCACHEABLE_SECTION(static cmsis_lpspi_edma_handle_t LPSPI14_EdmaHandle);
3702 static edma_handle_t LPSPI14_EdmaTxDataToTxRegHandle;
3703 static edma_handle_t LPSPI14_EdmaRxRegToRxDataHandle;
3704 
3705 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
3706 ARMCC_SECTION("lpspi14_edma_driver_state")
3707 static cmsis_lpspi_edma_driver_state_t LPSPI14_EdmaDriverState = {
3708 #else
3709 static cmsis_lpspi_edma_driver_state_t LPSPI14_EdmaDriverState = {
3710 #endif
3711     &LPSPI14_Resource,
3712     &LPSPI14_EdmaResource,
3713     &LPSPI14_EdmaHandle,
3714     &LPSPI14_EdmaRxRegToRxDataHandle,
3715     &LPSPI14_EdmaTxDataToTxRegHandle,
3716 };
3717 
LPSPI14_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)3718 static int32_t LPSPI14_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)
3719 {
3720 #ifdef RTE_SPI14_PIN_INIT
3721     RTE_SPI14_PIN_INIT();
3722 #endif
3723     return LPSPI_EdmaInitialize(cb_event, &LPSPI14_EdmaDriverState);
3724 }
3725 
LPSPI14_EdmaUninitialize(void)3726 static int32_t LPSPI14_EdmaUninitialize(void)
3727 {
3728 #ifdef RTE_SPI14_PIN_DEINIT
3729     RTE_SPI14_PIN_DEINIT();
3730 #endif
3731     return LPSPI_EdmaUninitialize(&LPSPI14_EdmaDriverState);
3732 }
3733 
LPSPI14_EdmaPowerControl(ARM_POWER_STATE state)3734 static int32_t LPSPI14_EdmaPowerControl(ARM_POWER_STATE state)
3735 {
3736     return LPSPI_EdmaPowerControl(state, &LPSPI14_EdmaDriverState);
3737 }
3738 
LPSPI14_EdmaSend(const void * data,uint32_t num)3739 static int32_t LPSPI14_EdmaSend(const void *data, uint32_t num)
3740 {
3741     return LPSPI_EdmaSend(data, num, &LPSPI14_EdmaDriverState);
3742 }
3743 
LPSPI14_EdmaReceive(void * data,uint32_t num)3744 static int32_t LPSPI14_EdmaReceive(void *data, uint32_t num)
3745 {
3746     return LPSPI_EdmaReceive(data, num, &LPSPI14_EdmaDriverState);
3747 }
3748 
LPSPI14_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)3749 static int32_t LPSPI14_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
3750 {
3751     return LPSPI_EdmaTransfer(data_out, data_in, num, &LPSPI14_EdmaDriverState);
3752 }
3753 
LPSPI14_EdmaGetCount(void)3754 static uint32_t LPSPI14_EdmaGetCount(void)
3755 {
3756     return LPSPI_EdmaGetCount(&LPSPI14_EdmaDriverState);
3757 }
3758 
LPSPI14_EdmaControl(uint32_t control,uint32_t arg)3759 static int32_t LPSPI14_EdmaControl(uint32_t control, uint32_t arg)
3760 {
3761     return LPSPI_EdmaControl(control, arg, &LPSPI14_EdmaDriverState);
3762 }
3763 
LPSPI14_EdmaGetStatus(void)3764 static ARM_SPI_STATUS LPSPI14_EdmaGetStatus(void)
3765 {
3766     return LPSPI_EdmaGetStatus(&LPSPI14_EdmaDriverState);
3767 }
3768 
3769 #endif
3770 
3771 #else
3772 
3773 static cmsis_lpspi_handle_t LPSPI14_Handle;
3774 
3775 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
3776 ARMCC_SECTION("lpspi14_interrupt_driver_state")
3777 static cmsis_lpspi_interrupt_driver_state_t LPSPI14_InterruptDriverState = {
3778 #else
3779 static cmsis_lpspi_interrupt_driver_state_t LPSPI14_InterruptDriverState = {
3780 #endif
3781     &LPSPI14_Resource,
3782     &LPSPI14_Handle,
3783 };
3784 
LPSPI14_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)3785 static int32_t LPSPI14_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)
3786 {
3787 #ifdef RTE_SPI14_PIN_INIT
3788     RTE_SPI14_PIN_INIT();
3789 #endif
3790     return LPSPI_InterruptInitialize(cb_event, &LPSPI14_InterruptDriverState);
3791 }
3792 
LPSPI14_InterruptUninitialize(void)3793 static int32_t LPSPI14_InterruptUninitialize(void)
3794 {
3795 #ifdef RTE_SPI14_PIN_DEINIT
3796     RTE_SPI14_PIN_DEINIT();
3797 #endif
3798     return LPSPI_InterruptUninitialize(&LPSPI14_InterruptDriverState);
3799 }
3800 
LPSPI14_InterruptPowerControl(ARM_POWER_STATE state)3801 static int32_t LPSPI14_InterruptPowerControl(ARM_POWER_STATE state)
3802 {
3803     return LPSPI_InterruptPowerControl(state, &LPSPI14_InterruptDriverState);
3804 }
3805 
LPSPI14_InterruptSend(const void * data,uint32_t num)3806 static int32_t LPSPI14_InterruptSend(const void *data, uint32_t num)
3807 {
3808     return LPSPI_InterruptSend(data, num, &LPSPI14_InterruptDriverState);
3809 }
3810 
LPSPI14_InterruptReceive(void * data,uint32_t num)3811 static int32_t LPSPI14_InterruptReceive(void *data, uint32_t num)
3812 {
3813     return LPSPI_InterruptReceive(data, num, &LPSPI14_InterruptDriverState);
3814 }
3815 
LPSPI14_InterruptTransfer(const void * data_out,void * data_in,uint32_t num)3816 static int32_t LPSPI14_InterruptTransfer(const void *data_out, void *data_in, uint32_t num)
3817 {
3818     return LPSPI_InterruptTransfer(data_out, data_in, num, &LPSPI14_InterruptDriverState);
3819 }
3820 
LPSPI14_InterruptGetCount(void)3821 static uint32_t LPSPI14_InterruptGetCount(void)
3822 {
3823     return LPSPI_InterruptGetCount(&LPSPI14_InterruptDriverState);
3824 }
3825 
LPSPI14_InterruptControl(uint32_t control,uint32_t arg)3826 static int32_t LPSPI14_InterruptControl(uint32_t control, uint32_t arg)
3827 {
3828     return LPSPI_InterruptControl(control, arg, &LPSPI14_InterruptDriverState);
3829 }
3830 
LPSPI14_InterruptGetStatus(void)3831 static ARM_SPI_STATUS LPSPI14_InterruptGetStatus(void)
3832 {
3833     return LPSPI_InterruptGetStatus(&LPSPI14_InterruptDriverState);
3834 }
3835 
3836 #endif
3837 
3838 ARM_DRIVER_SPI Driver_SPI14 = {
3839     LPSPIx_GetVersion,      LPSPIx_GetCapabilities,
3840 #if defined(RTE_SPI14_DMA_EN) && RTE_SPI14_DMA_EN
3841     LPSPI14_EdmaInitialize, LPSPI14_EdmaUninitialize, LPSPI14_EdmaPowerControl, LPSPI14_EdmaSend,
3842     LPSPI14_EdmaReceive,    LPSPI14_EdmaTransfer,     LPSPI14_EdmaGetCount,     LPSPI14_EdmaControl,
3843     LPSPI14_EdmaGetStatus
3844 #else
3845     LPSPI14_InterruptInitialize, LPSPI14_InterruptUninitialize, LPSPI14_InterruptPowerControl, LPSPI14_InterruptSend,
3846     LPSPI14_InterruptReceive,    LPSPI14_InterruptTransfer,     LPSPI14_InterruptGetCount,     LPSPI14_InterruptControl,
3847     LPSPI14_InterruptGetStatus
3848 #endif
3849 };
3850 
3851 #endif /*  LPSPI14  */
3852 
3853 #if defined(LPSPI15) && defined(RTE_SPI15) && RTE_SPI15
3854 
3855 /* User needs to provide the implementation for LPSPI15_GetFreq/InitPins/DeinitPins
3856 in the application for enabling according instance. */
3857 extern uint32_t LPSPI15_GetFreq(void);
3858 
3859 static cmsis_lpspi_resource_t LPSPI15_Resource = {LPSPI15, 15, LPSPI15_GetFreq};
3860 
3861 #if defined(RTE_SPI15_DMA_EN) && RTE_SPI15_DMA_EN
3862 
3863 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
3864 static cmsis_lpspi_edma_resource_t LPSPI15_EdmaResource = {
3865     RTE_SPI15_DMA_TX_DMA_BASE,    RTE_SPI15_DMA_TX_CH,          (uint16_t)RTE_SPI15_DMA_TX_PERI_SEL,
3866     RTE_SPI15_DMA_RX_DMA_BASE,    RTE_SPI15_DMA_RX_CH,          (uint16_t)RTE_SPI15_DMA_RX_PERI_SEL,
3867 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
3868     RTE_SPI15_DMA_TX_DMAMUX_BASE, RTE_SPI15_DMA_RX_DMAMUX_BASE,
3869 #endif
3870 };
3871 
3872 AT_NONCACHEABLE_SECTION(static cmsis_lpspi_edma_handle_t LPSPI15_EdmaHandle);
3873 static edma_handle_t LPSPI15_EdmaTxDataToTxRegHandle;
3874 static edma_handle_t LPSPI15_EdmaRxRegToRxDataHandle;
3875 
3876 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
3877 ARMCC_SECTION("lpspi15_edma_driver_state")
3878 static cmsis_lpspi_edma_driver_state_t LPSPI15_EdmaDriverState = {
3879 #else
3880 static cmsis_lpspi_edma_driver_state_t LPSPI15_EdmaDriverState = {
3881 #endif
3882     &LPSPI15_Resource,
3883     &LPSPI15_EdmaResource,
3884     &LPSPI15_EdmaHandle,
3885     &LPSPI15_EdmaRxRegToRxDataHandle,
3886     &LPSPI15_EdmaTxDataToTxRegHandle,
3887 };
3888 
LPSPI15_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)3889 static int32_t LPSPI15_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)
3890 {
3891 #ifdef RTE_SPI15_PIN_INIT
3892     RTE_SPI15_PIN_INIT();
3893 #endif
3894     return LPSPI_EdmaInitialize(cb_event, &LPSPI15_EdmaDriverState);
3895 }
3896 
LPSPI15_EdmaUninitialize(void)3897 static int32_t LPSPI15_EdmaUninitialize(void)
3898 {
3899 #ifdef RTE_SPI15_PIN_DEINIT
3900     RTE_SPI15_PIN_DEINIT();
3901 #endif
3902     return LPSPI_EdmaUninitialize(&LPSPI15_EdmaDriverState);
3903 }
3904 
LPSPI15_EdmaPowerControl(ARM_POWER_STATE state)3905 static int32_t LPSPI15_EdmaPowerControl(ARM_POWER_STATE state)
3906 {
3907     return LPSPI_EdmaPowerControl(state, &LPSPI15_EdmaDriverState);
3908 }
3909 
LPSPI15_EdmaSend(const void * data,uint32_t num)3910 static int32_t LPSPI15_EdmaSend(const void *data, uint32_t num)
3911 {
3912     return LPSPI_EdmaSend(data, num, &LPSPI15_EdmaDriverState);
3913 }
3914 
LPSPI15_EdmaReceive(void * data,uint32_t num)3915 static int32_t LPSPI15_EdmaReceive(void *data, uint32_t num)
3916 {
3917     return LPSPI_EdmaReceive(data, num, &LPSPI15_EdmaDriverState);
3918 }
3919 
LPSPI15_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)3920 static int32_t LPSPI15_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
3921 {
3922     return LPSPI_EdmaTransfer(data_out, data_in, num, &LPSPI15_EdmaDriverState);
3923 }
3924 
LPSPI15_EdmaGetCount(void)3925 static uint32_t LPSPI15_EdmaGetCount(void)
3926 {
3927     return LPSPI_EdmaGetCount(&LPSPI15_EdmaDriverState);
3928 }
3929 
LPSPI15_EdmaControl(uint32_t control,uint32_t arg)3930 static int32_t LPSPI15_EdmaControl(uint32_t control, uint32_t arg)
3931 {
3932     return LPSPI_EdmaControl(control, arg, &LPSPI15_EdmaDriverState);
3933 }
3934 
LPSPI15_EdmaGetStatus(void)3935 static ARM_SPI_STATUS LPSPI15_EdmaGetStatus(void)
3936 {
3937     return LPSPI_EdmaGetStatus(&LPSPI15_EdmaDriverState);
3938 }
3939 
3940 #endif
3941 
3942 #else
3943 
3944 static cmsis_lpspi_handle_t LPSPI15_Handle;
3945 
3946 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
3947 ARMCC_SECTION("lpspi15_interrupt_driver_state")
3948 static cmsis_lpspi_interrupt_driver_state_t LPSPI15_InterruptDriverState = {
3949 #else
3950 static cmsis_lpspi_interrupt_driver_state_t LPSPI15_InterruptDriverState = {
3951 #endif
3952     &LPSPI15_Resource,
3953     &LPSPI15_Handle,
3954 };
3955 
LPSPI15_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)3956 static int32_t LPSPI15_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)
3957 {
3958 #ifdef RTE_SPI15_PIN_INIT
3959     RTE_SPI15_PIN_INIT();
3960 #endif
3961     return LPSPI_InterruptInitialize(cb_event, &LPSPI15_InterruptDriverState);
3962 }
3963 
LPSPI15_InterruptUninitialize(void)3964 static int32_t LPSPI15_InterruptUninitialize(void)
3965 {
3966 #ifdef RTE_SPI15_PIN_DEINIT
3967     RTE_SPI15_PIN_DEINIT();
3968 #endif
3969     return LPSPI_InterruptUninitialize(&LPSPI15_InterruptDriverState);
3970 }
3971 
LPSPI15_InterruptPowerControl(ARM_POWER_STATE state)3972 static int32_t LPSPI15_InterruptPowerControl(ARM_POWER_STATE state)
3973 {
3974     return LPSPI_InterruptPowerControl(state, &LPSPI15_InterruptDriverState);
3975 }
3976 
LPSPI15_InterruptSend(const void * data,uint32_t num)3977 static int32_t LPSPI15_InterruptSend(const void *data, uint32_t num)
3978 {
3979     return LPSPI_InterruptSend(data, num, &LPSPI15_InterruptDriverState);
3980 }
3981 
LPSPI15_InterruptReceive(void * data,uint32_t num)3982 static int32_t LPSPI15_InterruptReceive(void *data, uint32_t num)
3983 {
3984     return LPSPI_InterruptReceive(data, num, &LPSPI15_InterruptDriverState);
3985 }
3986 
LPSPI15_InterruptTransfer(const void * data_out,void * data_in,uint32_t num)3987 static int32_t LPSPI15_InterruptTransfer(const void *data_out, void *data_in, uint32_t num)
3988 {
3989     return LPSPI_InterruptTransfer(data_out, data_in, num, &LPSPI15_InterruptDriverState);
3990 }
3991 
LPSPI15_InterruptGetCount(void)3992 static uint32_t LPSPI15_InterruptGetCount(void)
3993 {
3994     return LPSPI_InterruptGetCount(&LPSPI15_InterruptDriverState);
3995 }
3996 
LPSPI15_InterruptControl(uint32_t control,uint32_t arg)3997 static int32_t LPSPI15_InterruptControl(uint32_t control, uint32_t arg)
3998 {
3999     return LPSPI_InterruptControl(control, arg, &LPSPI15_InterruptDriverState);
4000 }
4001 
LPSPI15_InterruptGetStatus(void)4002 static ARM_SPI_STATUS LPSPI15_InterruptGetStatus(void)
4003 {
4004     return LPSPI_InterruptGetStatus(&LPSPI15_InterruptDriverState);
4005 }
4006 
4007 #endif
4008 
4009 ARM_DRIVER_SPI Driver_SPI15 = {
4010     LPSPIx_GetVersion,      LPSPIx_GetCapabilities,
4011 #if defined(RTE_SPI15_DMA_EN) && RTE_SPI15_DMA_EN
4012     LPSPI15_EdmaInitialize, LPSPI15_EdmaUninitialize, LPSPI15_EdmaPowerControl, LPSPI15_EdmaSend,
4013     LPSPI15_EdmaReceive,    LPSPI15_EdmaTransfer,     LPSPI15_EdmaGetCount,     LPSPI15_EdmaControl,
4014     LPSPI15_EdmaGetStatus
4015 #else
4016     LPSPI15_InterruptInitialize, LPSPI15_InterruptUninitialize, LPSPI15_InterruptPowerControl, LPSPI15_InterruptSend,
4017     LPSPI15_InterruptReceive,    LPSPI15_InterruptTransfer,     LPSPI15_InterruptGetCount,     LPSPI15_InterruptControl,
4018     LPSPI15_InterruptGetStatus
4019 #endif
4020 };
4021 
4022 #endif /*  LPSPI15  */
4023 
4024 #if defined(LPSPI16) && defined(RTE_SPI16) && RTE_SPI16
4025 
4026 /* User needs to provide the implementation for LPSPI16_GetFreq/InitPins/DeinitPins
4027 in the application for enabling according instance. */
4028 extern uint32_t LPSPI16_GetFreq(void);
4029 
4030 static cmsis_lpspi_resource_t LPSPI16_Resource = {LPSPI16, 16, LPSPI16_GetFreq};
4031 
4032 #if defined(RTE_SPI16_DMA_EN) && RTE_SPI16_DMA_EN
4033 
4034 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
4035 static cmsis_lpspi_edma_resource_t LPSPI16_EdmaResource = {
4036     RTE_SPI16_DMA_TX_DMA_BASE,    RTE_SPI16_DMA_TX_CH,          (uint16_t)RTE_SPI16_DMA_TX_PERI_SEL,
4037     RTE_SPI16_DMA_RX_DMA_BASE,    RTE_SPI16_DMA_RX_CH,          (uint16_t)RTE_SPI16_DMA_RX_PERI_SEL,
4038 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
4039     RTE_SPI16_DMA_TX_DMAMUX_BASE, RTE_SPI16_DMA_RX_DMAMUX_BASE,
4040 #endif
4041 };
4042 
4043 AT_NONCACHEABLE_SECTION(static cmsis_lpspi_edma_handle_t LPSPI16_EdmaHandle);
4044 static edma_handle_t LPSPI16_EdmaTxDataToTxRegHandle;
4045 static edma_handle_t LPSPI16_EdmaRxRegToRxDataHandle;
4046 
4047 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
4048 ARMCC_SECTION("lpspi16_edma_driver_state")
4049 static cmsis_lpspi_edma_driver_state_t LPSPI16_EdmaDriverState = {
4050 #else
4051 static cmsis_lpspi_edma_driver_state_t LPSPI16_EdmaDriverState = {
4052 #endif
4053     &LPSPI16_Resource,
4054     &LPSPI16_EdmaResource,
4055     &LPSPI16_EdmaHandle,
4056     &LPSPI16_EdmaRxRegToRxDataHandle,
4057     &LPSPI16_EdmaTxDataToTxRegHandle,
4058 };
4059 
LPSPI16_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)4060 static int32_t LPSPI16_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)
4061 {
4062 #ifdef RTE_SPI16_PIN_INIT
4063     RTE_SPI16_PIN_INIT();
4064 #endif
4065     return LPSPI_EdmaInitialize(cb_event, &LPSPI16_EdmaDriverState);
4066 }
4067 
LPSPI16_EdmaUninitialize(void)4068 static int32_t LPSPI16_EdmaUninitialize(void)
4069 {
4070 #ifdef RTE_SPI16_PIN_DEINIT
4071     RTE_SPI16_PIN_DEINIT();
4072 #endif
4073     return LPSPI_EdmaUninitialize(&LPSPI16_EdmaDriverState);
4074 }
4075 
LPSPI16_EdmaPowerControl(ARM_POWER_STATE state)4076 static int32_t LPSPI16_EdmaPowerControl(ARM_POWER_STATE state)
4077 {
4078     return LPSPI_EdmaPowerControl(state, &LPSPI16_EdmaDriverState);
4079 }
4080 
LPSPI16_EdmaSend(const void * data,uint32_t num)4081 static int32_t LPSPI16_EdmaSend(const void *data, uint32_t num)
4082 {
4083     return LPSPI_EdmaSend(data, num, &LPSPI16_EdmaDriverState);
4084 }
4085 
LPSPI16_EdmaReceive(void * data,uint32_t num)4086 static int32_t LPSPI16_EdmaReceive(void *data, uint32_t num)
4087 {
4088     return LPSPI_EdmaReceive(data, num, &LPSPI16_EdmaDriverState);
4089 }
4090 
LPSPI16_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)4091 static int32_t LPSPI16_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
4092 {
4093     return LPSPI_EdmaTransfer(data_out, data_in, num, &LPSPI16_EdmaDriverState);
4094 }
4095 
LPSPI16_EdmaGetCount(void)4096 static uint32_t LPSPI16_EdmaGetCount(void)
4097 {
4098     return LPSPI_EdmaGetCount(&LPSPI16_EdmaDriverState);
4099 }
4100 
LPSPI16_EdmaControl(uint32_t control,uint32_t arg)4101 static int32_t LPSPI16_EdmaControl(uint32_t control, uint32_t arg)
4102 {
4103     return LPSPI_EdmaControl(control, arg, &LPSPI16_EdmaDriverState);
4104 }
4105 
LPSPI16_EdmaGetStatus(void)4106 static ARM_SPI_STATUS LPSPI16_EdmaGetStatus(void)
4107 {
4108     return LPSPI_EdmaGetStatus(&LPSPI16_EdmaDriverState);
4109 }
4110 
4111 #endif
4112 
4113 #else
4114 
4115 static cmsis_lpspi_handle_t LPSPI16_Handle;
4116 
4117 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
4118 ARMCC_SECTION("lpspi16_interrupt_driver_state")
4119 static cmsis_lpspi_interrupt_driver_state_t LPSPI16_InterruptDriverState = {
4120 #else
4121 static cmsis_lpspi_interrupt_driver_state_t LPSPI16_InterruptDriverState = {
4122 #endif
4123     &LPSPI16_Resource,
4124     &LPSPI16_Handle,
4125 };
4126 
LPSPI16_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)4127 static int32_t LPSPI16_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)
4128 {
4129 #ifdef RTE_SPI16_PIN_INIT
4130     RTE_SPI16_PIN_INIT();
4131 #endif
4132     return LPSPI_InterruptInitialize(cb_event, &LPSPI16_InterruptDriverState);
4133 }
4134 
LPSPI16_InterruptUninitialize(void)4135 static int32_t LPSPI16_InterruptUninitialize(void)
4136 {
4137 #ifdef RTE_SPI16_PIN_DEINIT
4138     RTE_SPI16_PIN_DEINIT();
4139 #endif
4140     return LPSPI_InterruptUninitialize(&LPSPI16_InterruptDriverState);
4141 }
4142 
LPSPI16_InterruptPowerControl(ARM_POWER_STATE state)4143 static int32_t LPSPI16_InterruptPowerControl(ARM_POWER_STATE state)
4144 {
4145     return LPSPI_InterruptPowerControl(state, &LPSPI16_InterruptDriverState);
4146 }
4147 
LPSPI16_InterruptSend(const void * data,uint32_t num)4148 static int32_t LPSPI16_InterruptSend(const void *data, uint32_t num)
4149 {
4150     return LPSPI_InterruptSend(data, num, &LPSPI16_InterruptDriverState);
4151 }
4152 
LPSPI16_InterruptReceive(void * data,uint32_t num)4153 static int32_t LPSPI16_InterruptReceive(void *data, uint32_t num)
4154 {
4155     return LPSPI_InterruptReceive(data, num, &LPSPI16_InterruptDriverState);
4156 }
4157 
LPSPI16_InterruptTransfer(const void * data_out,void * data_in,uint32_t num)4158 static int32_t LPSPI16_InterruptTransfer(const void *data_out, void *data_in, uint32_t num)
4159 {
4160     return LPSPI_InterruptTransfer(data_out, data_in, num, &LPSPI16_InterruptDriverState);
4161 }
4162 
LPSPI16_InterruptGetCount(void)4163 static uint32_t LPSPI16_InterruptGetCount(void)
4164 {
4165     return LPSPI_InterruptGetCount(&LPSPI16_InterruptDriverState);
4166 }
4167 
LPSPI16_InterruptControl(uint32_t control,uint32_t arg)4168 static int32_t LPSPI16_InterruptControl(uint32_t control, uint32_t arg)
4169 {
4170     return LPSPI_InterruptControl(control, arg, &LPSPI16_InterruptDriverState);
4171 }
4172 
LPSPI16_InterruptGetStatus(void)4173 static ARM_SPI_STATUS LPSPI16_InterruptGetStatus(void)
4174 {
4175     return LPSPI_InterruptGetStatus(&LPSPI16_InterruptDriverState);
4176 }
4177 
4178 #endif
4179 
4180 ARM_DRIVER_SPI Driver_SPI16 = {
4181     LPSPIx_GetVersion,      LPSPIx_GetCapabilities,
4182 #if defined(RTE_SPI16_DMA_EN) && RTE_SPI16_DMA_EN
4183     LPSPI16_EdmaInitialize, LPSPI16_EdmaUninitialize, LPSPI16_EdmaPowerControl, LPSPI16_EdmaSend,
4184     LPSPI16_EdmaReceive,    LPSPI16_EdmaTransfer,     LPSPI16_EdmaGetCount,     LPSPI16_EdmaControl,
4185     LPSPI16_EdmaGetStatus
4186 #else
4187     LPSPI16_InterruptInitialize, LPSPI16_InterruptUninitialize, LPSPI16_InterruptPowerControl, LPSPI16_InterruptSend,
4188     LPSPI16_InterruptReceive,    LPSPI16_InterruptTransfer,     LPSPI16_InterruptGetCount,     LPSPI16_InterruptControl,
4189     LPSPI16_InterruptGetStatus
4190 #endif
4191 };
4192 
4193 #endif /*  LPSPI16  */
4194 
4195 #if defined(LPSPI17) && defined(RTE_SPI17) && RTE_SPI17
4196 
4197 /* User needs to provide the implementation for LPSPI17_GetFreq/InitPins/DeinitPins
4198 in the application for enabling according instance. */
4199 extern uint32_t LPSPI17_GetFreq(void);
4200 
4201 static cmsis_lpspi_resource_t LPSPI17_Resource = {LPSPI17, 17, LPSPI17_GetFreq};
4202 
4203 #if defined(RTE_SPI17_DMA_EN) && RTE_SPI17_DMA_EN
4204 
4205 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
4206 static cmsis_lpspi_edma_resource_t LPSPI17_EdmaResource = {
4207     RTE_SPI17_DMA_TX_DMA_BASE,    RTE_SPI17_DMA_TX_CH,          (uint16_t)RTE_SPI17_DMA_TX_PERI_SEL,
4208     RTE_SPI17_DMA_RX_DMA_BASE,    RTE_SPI17_DMA_RX_CH,          (uint16_t)RTE_SPI17_DMA_RX_PERI_SEL,
4209 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
4210     RTE_SPI17_DMA_TX_DMAMUX_BASE, RTE_SPI17_DMA_RX_DMAMUX_BASE,
4211 #endif
4212 };
4213 
4214 AT_NONCACHEABLE_SECTION(static cmsis_lpspi_edma_handle_t LPSPI17_EdmaHandle);
4215 static edma_handle_t LPSPI17_EdmaTxDataToTxRegHandle;
4216 static edma_handle_t LPSPI17_EdmaRxRegToRxDataHandle;
4217 
4218 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
4219 ARMCC_SECTION("lpspi17_edma_driver_state")
4220 static cmsis_lpspi_edma_driver_state_t LPSPI17_EdmaDriverState = {
4221 #else
4222 static cmsis_lpspi_edma_driver_state_t LPSPI17_EdmaDriverState = {
4223 #endif
4224     &LPSPI17_Resource,
4225     &LPSPI17_EdmaResource,
4226     &LPSPI17_EdmaHandle,
4227     &LPSPI17_EdmaRxRegToRxDataHandle,
4228     &LPSPI17_EdmaTxDataToTxRegHandle,
4229 };
4230 
LPSPI17_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)4231 static int32_t LPSPI17_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)
4232 {
4233 #ifdef RTE_SPI17_PIN_INIT
4234     RTE_SPI17_PIN_INIT();
4235 #endif
4236     return LPSPI_EdmaInitialize(cb_event, &LPSPI17_EdmaDriverState);
4237 }
4238 
LPSPI17_EdmaUninitialize(void)4239 static int32_t LPSPI17_EdmaUninitialize(void)
4240 {
4241 #ifdef RTE_SPI17_PIN_DEINIT
4242     RTE_SPI17_PIN_DEINIT();
4243 #endif
4244     return LPSPI_EdmaUninitialize(&LPSPI17_EdmaDriverState);
4245 }
4246 
LPSPI17_EdmaPowerControl(ARM_POWER_STATE state)4247 static int32_t LPSPI17_EdmaPowerControl(ARM_POWER_STATE state)
4248 {
4249     return LPSPI_EdmaPowerControl(state, &LPSPI17_EdmaDriverState);
4250 }
4251 
LPSPI17_EdmaSend(const void * data,uint32_t num)4252 static int32_t LPSPI17_EdmaSend(const void *data, uint32_t num)
4253 {
4254     return LPSPI_EdmaSend(data, num, &LPSPI17_EdmaDriverState);
4255 }
4256 
LPSPI17_EdmaReceive(void * data,uint32_t num)4257 static int32_t LPSPI17_EdmaReceive(void *data, uint32_t num)
4258 {
4259     return LPSPI_EdmaReceive(data, num, &LPSPI17_EdmaDriverState);
4260 }
4261 
LPSPI17_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)4262 static int32_t LPSPI17_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
4263 {
4264     return LPSPI_EdmaTransfer(data_out, data_in, num, &LPSPI17_EdmaDriverState);
4265 }
4266 
LPSPI17_EdmaGetCount(void)4267 static uint32_t LPSPI17_EdmaGetCount(void)
4268 {
4269     return LPSPI_EdmaGetCount(&LPSPI17_EdmaDriverState);
4270 }
4271 
LPSPI17_EdmaControl(uint32_t control,uint32_t arg)4272 static int32_t LPSPI17_EdmaControl(uint32_t control, uint32_t arg)
4273 {
4274     return LPSPI_EdmaControl(control, arg, &LPSPI17_EdmaDriverState);
4275 }
4276 
LPSPI17_EdmaGetStatus(void)4277 static ARM_SPI_STATUS LPSPI17_EdmaGetStatus(void)
4278 {
4279     return LPSPI_EdmaGetStatus(&LPSPI17_EdmaDriverState);
4280 }
4281 
4282 #endif
4283 
4284 #else
4285 
4286 static cmsis_lpspi_handle_t LPSPI17_Handle;
4287 
4288 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
4289 ARMCC_SECTION("lpspi17_interrupt_driver_state")
4290 static cmsis_lpspi_interrupt_driver_state_t LPSPI17_InterruptDriverState = {
4291 #else
4292 static cmsis_lpspi_interrupt_driver_state_t LPSPI17_InterruptDriverState = {
4293 #endif
4294     &LPSPI17_Resource,
4295     &LPSPI17_Handle,
4296 };
4297 
LPSPI17_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)4298 static int32_t LPSPI17_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)
4299 {
4300 #ifdef RTE_SPI17_PIN_INIT
4301     RTE_SPI17_PIN_INIT();
4302 #endif
4303     return LPSPI_InterruptInitialize(cb_event, &LPSPI17_InterruptDriverState);
4304 }
4305 
LPSPI17_InterruptUninitialize(void)4306 static int32_t LPSPI17_InterruptUninitialize(void)
4307 {
4308 #ifdef RTE_SPI17_PIN_DEINIT
4309     RTE_SPI17_PIN_DEINIT();
4310 #endif
4311     return LPSPI_InterruptUninitialize(&LPSPI17_InterruptDriverState);
4312 }
4313 
LPSPI17_InterruptPowerControl(ARM_POWER_STATE state)4314 static int32_t LPSPI17_InterruptPowerControl(ARM_POWER_STATE state)
4315 {
4316     return LPSPI_InterruptPowerControl(state, &LPSPI17_InterruptDriverState);
4317 }
4318 
LPSPI17_InterruptSend(const void * data,uint32_t num)4319 static int32_t LPSPI17_InterruptSend(const void *data, uint32_t num)
4320 {
4321     return LPSPI_InterruptSend(data, num, &LPSPI17_InterruptDriverState);
4322 }
4323 
LPSPI17_InterruptReceive(void * data,uint32_t num)4324 static int32_t LPSPI17_InterruptReceive(void *data, uint32_t num)
4325 {
4326     return LPSPI_InterruptReceive(data, num, &LPSPI17_InterruptDriverState);
4327 }
4328 
LPSPI17_InterruptTransfer(const void * data_out,void * data_in,uint32_t num)4329 static int32_t LPSPI17_InterruptTransfer(const void *data_out, void *data_in, uint32_t num)
4330 {
4331     return LPSPI_InterruptTransfer(data_out, data_in, num, &LPSPI17_InterruptDriverState);
4332 }
4333 
LPSPI17_InterruptGetCount(void)4334 static uint32_t LPSPI17_InterruptGetCount(void)
4335 {
4336     return LPSPI_InterruptGetCount(&LPSPI17_InterruptDriverState);
4337 }
4338 
LPSPI17_InterruptControl(uint32_t control,uint32_t arg)4339 static int32_t LPSPI17_InterruptControl(uint32_t control, uint32_t arg)
4340 {
4341     return LPSPI_InterruptControl(control, arg, &LPSPI17_InterruptDriverState);
4342 }
4343 
LPSPI17_InterruptGetStatus(void)4344 static ARM_SPI_STATUS LPSPI17_InterruptGetStatus(void)
4345 {
4346     return LPSPI_InterruptGetStatus(&LPSPI17_InterruptDriverState);
4347 }
4348 
4349 #endif
4350 
4351 ARM_DRIVER_SPI Driver_SPI17 = {
4352     LPSPIx_GetVersion,      LPSPIx_GetCapabilities,
4353 #if defined(RTE_SPI17_DMA_EN) && RTE_SPI17_DMA_EN
4354     LPSPI17_EdmaInitialize, LPSPI17_EdmaUninitialize, LPSPI17_EdmaPowerControl, LPSPI17_EdmaSend,
4355     LPSPI17_EdmaReceive,    LPSPI17_EdmaTransfer,     LPSPI17_EdmaGetCount,     LPSPI17_EdmaControl,
4356     LPSPI17_EdmaGetStatus
4357 #else
4358     LPSPI17_InterruptInitialize, LPSPI17_InterruptUninitialize, LPSPI17_InterruptPowerControl, LPSPI17_InterruptSend,
4359     LPSPI17_InterruptReceive,    LPSPI17_InterruptTransfer,     LPSPI17_InterruptGetCount,     LPSPI17_InterruptControl,
4360     LPSPI17_InterruptGetStatus
4361 #endif
4362 };
4363 
4364 #endif /*  LPSPI17  */
4365 
4366 #if defined(LPSPI18) && defined(RTE_SPI18) && RTE_SPI18
4367 
4368 /* User needs to provide the implementation for LPSPI18_GetFreq/InitPins/DeinitPins
4369 in the application for enabling according instance. */
4370 extern uint32_t LPSPI18_GetFreq(void);
4371 
4372 static cmsis_lpspi_resource_t LPSPI18_Resource = {LPSPI18, 18, LPSPI18_GetFreq};
4373 
4374 #if defined(RTE_SPI18_DMA_EN) && RTE_SPI18_DMA_EN
4375 
4376 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
4377 static cmsis_lpspi_edma_resource_t LPSPI18_EdmaResource = {
4378     RTE_SPI18_DMA_TX_DMA_BASE,    RTE_SPI18_DMA_TX_CH,          (uint16_t)RTE_SPI18_DMA_TX_PERI_SEL,
4379     RTE_SPI18_DMA_RX_DMA_BASE,    RTE_SPI18_DMA_RX_CH,          (uint16_t)RTE_SPI18_DMA_RX_PERI_SEL,
4380 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
4381     RTE_SPI18_DMA_TX_DMAMUX_BASE, RTE_SPI18_DMA_RX_DMAMUX_BASE,
4382 #endif
4383 };
4384 
4385 AT_NONCACHEABLE_SECTION(static cmsis_lpspi_edma_handle_t LPSPI18_EdmaHandle);
4386 static edma_handle_t LPSPI18_EdmaTxDataToTxRegHandle;
4387 static edma_handle_t LPSPI18_EdmaRxRegToRxDataHandle;
4388 
4389 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
4390 ARMCC_SECTION("lpspi18_edma_driver_state")
4391 static cmsis_lpspi_edma_driver_state_t LPSPI18_EdmaDriverState = {
4392 #else
4393 static cmsis_lpspi_edma_driver_state_t LPSPI18_EdmaDriverState = {
4394 #endif
4395     &LPSPI18_Resource,
4396     &LPSPI18_EdmaResource,
4397     &LPSPI18_EdmaHandle,
4398     &LPSPI18_EdmaRxRegToRxDataHandle,
4399     &LPSPI18_EdmaTxDataToTxRegHandle,
4400 };
4401 
LPSPI18_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)4402 static int32_t LPSPI18_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)
4403 {
4404 #ifdef RTE_SPI18_PIN_INIT
4405     RTE_SPI18_PIN_INIT();
4406 #endif
4407     return LPSPI_EdmaInitialize(cb_event, &LPSPI18_EdmaDriverState);
4408 }
4409 
LPSPI18_EdmaUninitialize(void)4410 static int32_t LPSPI18_EdmaUninitialize(void)
4411 {
4412 #ifdef RTE_SPI18_PIN_DEINIT
4413     RTE_SPI18_PIN_DEINIT();
4414 #endif
4415     return LPSPI_EdmaUninitialize(&LPSPI18_EdmaDriverState);
4416 }
4417 
LPSPI18_EdmaPowerControl(ARM_POWER_STATE state)4418 static int32_t LPSPI18_EdmaPowerControl(ARM_POWER_STATE state)
4419 {
4420     return LPSPI_EdmaPowerControl(state, &LPSPI18_EdmaDriverState);
4421 }
4422 
LPSPI18_EdmaSend(const void * data,uint32_t num)4423 static int32_t LPSPI18_EdmaSend(const void *data, uint32_t num)
4424 {
4425     return LPSPI_EdmaSend(data, num, &LPSPI18_EdmaDriverState);
4426 }
4427 
LPSPI18_EdmaReceive(void * data,uint32_t num)4428 static int32_t LPSPI18_EdmaReceive(void *data, uint32_t num)
4429 {
4430     return LPSPI_EdmaReceive(data, num, &LPSPI18_EdmaDriverState);
4431 }
4432 
LPSPI18_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)4433 static int32_t LPSPI18_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
4434 {
4435     return LPSPI_EdmaTransfer(data_out, data_in, num, &LPSPI18_EdmaDriverState);
4436 }
4437 
LPSPI18_EdmaGetCount(void)4438 static uint32_t LPSPI18_EdmaGetCount(void)
4439 {
4440     return LPSPI_EdmaGetCount(&LPSPI18_EdmaDriverState);
4441 }
4442 
LPSPI18_EdmaControl(uint32_t control,uint32_t arg)4443 static int32_t LPSPI18_EdmaControl(uint32_t control, uint32_t arg)
4444 {
4445     return LPSPI_EdmaControl(control, arg, &LPSPI18_EdmaDriverState);
4446 }
4447 
LPSPI18_EdmaGetStatus(void)4448 static ARM_SPI_STATUS LPSPI18_EdmaGetStatus(void)
4449 {
4450     return LPSPI_EdmaGetStatus(&LPSPI18_EdmaDriverState);
4451 }
4452 
4453 #endif
4454 
4455 #else
4456 
4457 static cmsis_lpspi_handle_t LPSPI18_Handle;
4458 
4459 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
4460 ARMCC_SECTION("lpspi18_interrupt_driver_state")
4461 static cmsis_lpspi_interrupt_driver_state_t LPSPI18_InterruptDriverState = {
4462 #else
4463 static cmsis_lpspi_interrupt_driver_state_t LPSPI18_InterruptDriverState = {
4464 #endif
4465     &LPSPI18_Resource,
4466     &LPSPI18_Handle,
4467 };
4468 
LPSPI18_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)4469 static int32_t LPSPI18_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)
4470 {
4471 #ifdef RTE_SPI18_PIN_INIT
4472     RTE_SPI18_PIN_INIT();
4473 #endif
4474     return LPSPI_InterruptInitialize(cb_event, &LPSPI18_InterruptDriverState);
4475 }
4476 
LPSPI18_InterruptUninitialize(void)4477 static int32_t LPSPI18_InterruptUninitialize(void)
4478 {
4479 #ifdef RTE_SPI18_PIN_DEINIT
4480     RTE_SPI18_PIN_DEINIT();
4481 #endif
4482     return LPSPI_InterruptUninitialize(&LPSPI18_InterruptDriverState);
4483 }
4484 
LPSPI18_InterruptPowerControl(ARM_POWER_STATE state)4485 static int32_t LPSPI18_InterruptPowerControl(ARM_POWER_STATE state)
4486 {
4487     return LPSPI_InterruptPowerControl(state, &LPSPI18_InterruptDriverState);
4488 }
4489 
LPSPI18_InterruptSend(const void * data,uint32_t num)4490 static int32_t LPSPI18_InterruptSend(const void *data, uint32_t num)
4491 {
4492     return LPSPI_InterruptSend(data, num, &LPSPI18_InterruptDriverState);
4493 }
4494 
LPSPI18_InterruptReceive(void * data,uint32_t num)4495 static int32_t LPSPI18_InterruptReceive(void *data, uint32_t num)
4496 {
4497     return LPSPI_InterruptReceive(data, num, &LPSPI18_InterruptDriverState);
4498 }
4499 
LPSPI18_InterruptTransfer(const void * data_out,void * data_in,uint32_t num)4500 static int32_t LPSPI18_InterruptTransfer(const void *data_out, void *data_in, uint32_t num)
4501 {
4502     return LPSPI_InterruptTransfer(data_out, data_in, num, &LPSPI18_InterruptDriverState);
4503 }
4504 
LPSPI18_InterruptGetCount(void)4505 static uint32_t LPSPI18_InterruptGetCount(void)
4506 {
4507     return LPSPI_InterruptGetCount(&LPSPI18_InterruptDriverState);
4508 }
4509 
LPSPI18_InterruptControl(uint32_t control,uint32_t arg)4510 static int32_t LPSPI18_InterruptControl(uint32_t control, uint32_t arg)
4511 {
4512     return LPSPI_InterruptControl(control, arg, &LPSPI18_InterruptDriverState);
4513 }
4514 
LPSPI18_InterruptGetStatus(void)4515 static ARM_SPI_STATUS LPSPI18_InterruptGetStatus(void)
4516 {
4517     return LPSPI_InterruptGetStatus(&LPSPI18_InterruptDriverState);
4518 }
4519 
4520 #endif
4521 
4522 ARM_DRIVER_SPI Driver_SPI18 = {
4523     LPSPIx_GetVersion,      LPSPIx_GetCapabilities,
4524 #if defined(RTE_SPI18_DMA_EN) && RTE_SPI18_DMA_EN
4525     LPSPI18_EdmaInitialize, LPSPI18_EdmaUninitialize, LPSPI18_EdmaPowerControl, LPSPI18_EdmaSend,
4526     LPSPI18_EdmaReceive,    LPSPI18_EdmaTransfer,     LPSPI18_EdmaGetCount,     LPSPI18_EdmaControl,
4527     LPSPI18_EdmaGetStatus
4528 #else
4529     LPSPI18_InterruptInitialize, LPSPI18_InterruptUninitialize, LPSPI18_InterruptPowerControl, LPSPI18_InterruptSend,
4530     LPSPI18_InterruptReceive,    LPSPI18_InterruptTransfer,     LPSPI18_InterruptGetCount,     LPSPI18_InterruptControl,
4531     LPSPI18_InterruptGetStatus
4532 #endif
4533 };
4534 
4535 #endif /*  LPSPI18  */
4536 
4537 #if defined(LPSPI19) && defined(RTE_SPI19) && RTE_SPI19
4538 
4539 /* User needs to provide the implementation for LPSPI19_GetFreq/InitPins/DeinitPins
4540 in the application for enabling according instance. */
4541 extern uint32_t LPSPI19_GetFreq(void);
4542 
4543 static cmsis_lpspi_resource_t LPSPI19_Resource = {LPSPI19, 19, LPSPI19_GetFreq};
4544 
4545 #if defined(RTE_SPI19_DMA_EN) && RTE_SPI19_DMA_EN
4546 
4547 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
4548 static cmsis_lpspi_edma_resource_t LPSPI19_EdmaResource = {
4549     RTE_SPI19_DMA_TX_DMA_BASE,    RTE_SPI19_DMA_TX_CH,          (uint16_t)RTE_SPI19_DMA_TX_PERI_SEL,
4550     RTE_SPI19_DMA_RX_DMA_BASE,    RTE_SPI19_DMA_RX_CH,          (uint16_t)RTE_SPI19_DMA_RX_PERI_SEL,
4551 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
4552     RTE_SPI19_DMA_TX_DMAMUX_BASE, RTE_SPI19_DMA_RX_DMAMUX_BASE,
4553 #endif
4554 };
4555 
4556 AT_NONCACHEABLE_SECTION(static cmsis_lpspi_edma_handle_t LPSPI19_EdmaHandle);
4557 static edma_handle_t LPSPI19_EdmaTxDataToTxRegHandle;
4558 static edma_handle_t LPSPI19_EdmaRxRegToRxDataHandle;
4559 
4560 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
4561 ARMCC_SECTION("lpspi19_edma_driver_state")
4562 static cmsis_lpspi_edma_driver_state_t LPSPI19_EdmaDriverState = {
4563 #else
4564 static cmsis_lpspi_edma_driver_state_t LPSPI19_EdmaDriverState = {
4565 #endif
4566     &LPSPI19_Resource,
4567     &LPSPI19_EdmaResource,
4568     &LPSPI19_EdmaHandle,
4569     &LPSPI19_EdmaRxRegToRxDataHandle,
4570     &LPSPI19_EdmaTxDataToTxRegHandle,
4571 };
4572 
LPSPI19_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)4573 static int32_t LPSPI19_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)
4574 {
4575 #ifdef RTE_SPI19_PIN_INIT
4576     RTE_SPI19_PIN_INIT();
4577 #endif
4578     return LPSPI_EdmaInitialize(cb_event, &LPSPI19_EdmaDriverState);
4579 }
4580 
LPSPI19_EdmaUninitialize(void)4581 static int32_t LPSPI19_EdmaUninitialize(void)
4582 {
4583 #ifdef RTE_SPI19_PIN_DEINIT
4584     RTE_SPI19_PIN_DEINIT();
4585 #endif
4586     return LPSPI_EdmaUninitialize(&LPSPI19_EdmaDriverState);
4587 }
4588 
LPSPI19_EdmaPowerControl(ARM_POWER_STATE state)4589 static int32_t LPSPI19_EdmaPowerControl(ARM_POWER_STATE state)
4590 {
4591     return LPSPI_EdmaPowerControl(state, &LPSPI19_EdmaDriverState);
4592 }
4593 
LPSPI19_EdmaSend(const void * data,uint32_t num)4594 static int32_t LPSPI19_EdmaSend(const void *data, uint32_t num)
4595 {
4596     return LPSPI_EdmaSend(data, num, &LPSPI19_EdmaDriverState);
4597 }
4598 
LPSPI19_EdmaReceive(void * data,uint32_t num)4599 static int32_t LPSPI19_EdmaReceive(void *data, uint32_t num)
4600 {
4601     return LPSPI_EdmaReceive(data, num, &LPSPI19_EdmaDriverState);
4602 }
4603 
LPSPI19_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)4604 static int32_t LPSPI19_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
4605 {
4606     return LPSPI_EdmaTransfer(data_out, data_in, num, &LPSPI19_EdmaDriverState);
4607 }
4608 
LPSPI19_EdmaGetCount(void)4609 static uint32_t LPSPI19_EdmaGetCount(void)
4610 {
4611     return LPSPI_EdmaGetCount(&LPSPI19_EdmaDriverState);
4612 }
4613 
LPSPI19_EdmaControl(uint32_t control,uint32_t arg)4614 static int32_t LPSPI19_EdmaControl(uint32_t control, uint32_t arg)
4615 {
4616     return LPSPI_EdmaControl(control, arg, &LPSPI19_EdmaDriverState);
4617 }
4618 
LPSPI19_EdmaGetStatus(void)4619 static ARM_SPI_STATUS LPSPI19_EdmaGetStatus(void)
4620 {
4621     return LPSPI_EdmaGetStatus(&LPSPI19_EdmaDriverState);
4622 }
4623 
4624 #endif
4625 
4626 #else
4627 
4628 static cmsis_lpspi_handle_t LPSPI19_Handle;
4629 
4630 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
4631 ARMCC_SECTION("lpspi19_interrupt_driver_state")
4632 static cmsis_lpspi_interrupt_driver_state_t LPSPI19_InterruptDriverState = {
4633 #else
4634 static cmsis_lpspi_interrupt_driver_state_t LPSPI19_InterruptDriverState = {
4635 #endif
4636     &LPSPI19_Resource,
4637     &LPSPI19_Handle,
4638 };
4639 
LPSPI19_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)4640 static int32_t LPSPI19_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)
4641 {
4642 #ifdef RTE_SPI19_PIN_INIT
4643     RTE_SPI19_PIN_INIT();
4644 #endif
4645     return LPSPI_InterruptInitialize(cb_event, &LPSPI19_InterruptDriverState);
4646 }
4647 
LPSPI19_InterruptUninitialize(void)4648 static int32_t LPSPI19_InterruptUninitialize(void)
4649 {
4650 #ifdef RTE_SPI19_PIN_DEINIT
4651     RTE_SPI19_PIN_DEINIT();
4652 #endif
4653     return LPSPI_InterruptUninitialize(&LPSPI19_InterruptDriverState);
4654 }
4655 
LPSPI19_InterruptPowerControl(ARM_POWER_STATE state)4656 static int32_t LPSPI19_InterruptPowerControl(ARM_POWER_STATE state)
4657 {
4658     return LPSPI_InterruptPowerControl(state, &LPSPI19_InterruptDriverState);
4659 }
4660 
LPSPI19_InterruptSend(const void * data,uint32_t num)4661 static int32_t LPSPI19_InterruptSend(const void *data, uint32_t num)
4662 {
4663     return LPSPI_InterruptSend(data, num, &LPSPI19_InterruptDriverState);
4664 }
4665 
LPSPI19_InterruptReceive(void * data,uint32_t num)4666 static int32_t LPSPI19_InterruptReceive(void *data, uint32_t num)
4667 {
4668     return LPSPI_InterruptReceive(data, num, &LPSPI19_InterruptDriverState);
4669 }
4670 
LPSPI19_InterruptTransfer(const void * data_out,void * data_in,uint32_t num)4671 static int32_t LPSPI19_InterruptTransfer(const void *data_out, void *data_in, uint32_t num)
4672 {
4673     return LPSPI_InterruptTransfer(data_out, data_in, num, &LPSPI19_InterruptDriverState);
4674 }
4675 
LPSPI19_InterruptGetCount(void)4676 static uint32_t LPSPI19_InterruptGetCount(void)
4677 {
4678     return LPSPI_InterruptGetCount(&LPSPI19_InterruptDriverState);
4679 }
4680 
LPSPI19_InterruptControl(uint32_t control,uint32_t arg)4681 static int32_t LPSPI19_InterruptControl(uint32_t control, uint32_t arg)
4682 {
4683     return LPSPI_InterruptControl(control, arg, &LPSPI19_InterruptDriverState);
4684 }
4685 
LPSPI19_InterruptGetStatus(void)4686 static ARM_SPI_STATUS LPSPI19_InterruptGetStatus(void)
4687 {
4688     return LPSPI_InterruptGetStatus(&LPSPI19_InterruptDriverState);
4689 }
4690 
4691 #endif
4692 
4693 ARM_DRIVER_SPI Driver_SPI19 = {
4694     LPSPIx_GetVersion,      LPSPIx_GetCapabilities,
4695 #if defined(RTE_SPI19_DMA_EN) && RTE_SPI19_DMA_EN
4696     LPSPI19_EdmaInitialize, LPSPI19_EdmaUninitialize, LPSPI19_EdmaPowerControl, LPSPI19_EdmaSend,
4697     LPSPI19_EdmaReceive,    LPSPI19_EdmaTransfer,     LPSPI19_EdmaGetCount,     LPSPI19_EdmaControl,
4698     LPSPI19_EdmaGetStatus
4699 #else
4700     LPSPI19_InterruptInitialize, LPSPI19_InterruptUninitialize, LPSPI19_InterruptPowerControl, LPSPI19_InterruptSend,
4701     LPSPI19_InterruptReceive,    LPSPI19_InterruptTransfer,     LPSPI19_InterruptGetCount,     LPSPI19_InterruptControl,
4702     LPSPI19_InterruptGetStatus
4703 #endif
4704 };
4705 
4706 #endif /*  LPSPI19  */
4707 
4708 #if defined(LPSPI20) && defined(RTE_SPI20) && RTE_SPI20
4709 
4710 /* User needs to provide the implementation for LPSPI20_GetFreq/InitPins/DeinitPins
4711 in the application for enabling according instance. */
4712 extern uint32_t LPSPI20_GetFreq(void);
4713 
4714 static cmsis_lpspi_resource_t LPSPI20_Resource = {LPSPI20, 20, LPSPI20_GetFreq};
4715 
4716 #if defined(RTE_SPI20_DMA_EN) && RTE_SPI20_DMA_EN
4717 
4718 #if (defined(FSL_FEATURE_SOC_EDMA_COUNT) && FSL_FEATURE_SOC_EDMA_COUNT)
4719 static cmsis_lpspi_edma_resource_t LPSPI20_EdmaResource = {
4720     RTE_SPI20_DMA_TX_DMA_BASE,    RTE_SPI20_DMA_TX_CH,          (uint16_t)RTE_SPI20_DMA_TX_PERI_SEL,
4721     RTE_SPI20_DMA_RX_DMA_BASE,    RTE_SPI20_DMA_RX_CH,          (uint16_t)RTE_SPI20_DMA_RX_PERI_SEL,
4722 #if (defined(FSL_FEATURE_SOC_DMAMUX_COUNT) && FSL_FEATURE_SOC_DMAMUX_COUNT)
4723     RTE_SPI20_DMA_TX_DMAMUX_BASE, RTE_SPI20_DMA_RX_DMAMUX_BASE,
4724 #endif
4725 };
4726 
4727 AT_NONCACHEABLE_SECTION(static cmsis_lpspi_edma_handle_t LPSPI20_EdmaHandle);
4728 static edma_handle_t LPSPI20_EdmaTxDataToTxRegHandle;
4729 static edma_handle_t LPSPI20_EdmaRxRegToRxDataHandle;
4730 
4731 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
4732 ARMCC_SECTION("lpspi20_edma_driver_state")
4733 static cmsis_lpspi_edma_driver_state_t LPSPI20_EdmaDriverState = {
4734 #else
4735 static cmsis_lpspi_edma_driver_state_t LPSPI20_EdmaDriverState = {
4736 #endif
4737     &LPSPI20_Resource,
4738     &LPSPI20_EdmaResource,
4739     &LPSPI20_EdmaHandle,
4740     &LPSPI20_EdmaRxRegToRxDataHandle,
4741     &LPSPI20_EdmaTxDataToTxRegHandle,
4742 };
4743 
LPSPI20_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)4744 static int32_t LPSPI20_EdmaInitialize(ARM_SPI_SignalEvent_t cb_event)
4745 {
4746 #ifdef RTE_SPI20_PIN_INIT
4747     RTE_SPI20_PIN_INIT();
4748 #endif
4749     return LPSPI_EdmaInitialize(cb_event, &LPSPI20_EdmaDriverState);
4750 }
4751 
LPSPI20_EdmaUninitialize(void)4752 static int32_t LPSPI20_EdmaUninitialize(void)
4753 {
4754 #ifdef RTE_SPI20_PIN_DEINIT
4755     RTE_SPI20_PIN_DEINIT();
4756 #endif
4757     return LPSPI_EdmaUninitialize(&LPSPI20_EdmaDriverState);
4758 }
4759 
LPSPI20_EdmaPowerControl(ARM_POWER_STATE state)4760 static int32_t LPSPI20_EdmaPowerControl(ARM_POWER_STATE state)
4761 {
4762     return LPSPI_EdmaPowerControl(state, &LPSPI20_EdmaDriverState);
4763 }
4764 
LPSPI20_EdmaSend(const void * data,uint32_t num)4765 static int32_t LPSPI20_EdmaSend(const void *data, uint32_t num)
4766 {
4767     return LPSPI_EdmaSend(data, num, &LPSPI20_EdmaDriverState);
4768 }
4769 
LPSPI20_EdmaReceive(void * data,uint32_t num)4770 static int32_t LPSPI20_EdmaReceive(void *data, uint32_t num)
4771 {
4772     return LPSPI_EdmaReceive(data, num, &LPSPI20_EdmaDriverState);
4773 }
4774 
LPSPI20_EdmaTransfer(const void * data_out,void * data_in,uint32_t num)4775 static int32_t LPSPI20_EdmaTransfer(const void *data_out, void *data_in, uint32_t num)
4776 {
4777     return LPSPI_EdmaTransfer(data_out, data_in, num, &LPSPI20_EdmaDriverState);
4778 }
4779 
LPSPI20_EdmaGetCount(void)4780 static uint32_t LPSPI20_EdmaGetCount(void)
4781 {
4782     return LPSPI_EdmaGetCount(&LPSPI20_EdmaDriverState);
4783 }
4784 
LPSPI20_EdmaControl(uint32_t control,uint32_t arg)4785 static int32_t LPSPI20_EdmaControl(uint32_t control, uint32_t arg)
4786 {
4787     return LPSPI_EdmaControl(control, arg, &LPSPI20_EdmaDriverState);
4788 }
4789 
LPSPI20_EdmaGetStatus(void)4790 static ARM_SPI_STATUS LPSPI20_EdmaGetStatus(void)
4791 {
4792     return LPSPI_EdmaGetStatus(&LPSPI20_EdmaDriverState);
4793 }
4794 
4795 #endif
4796 
4797 #else
4798 
4799 static cmsis_lpspi_handle_t LPSPI20_Handle;
4800 
4801 #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
4802 ARMCC_SECTION("lpspi20_interrupt_driver_state")
4803 static cmsis_lpspi_interrupt_driver_state_t LPSPI20_InterruptDriverState = {
4804 #else
4805 static cmsis_lpspi_interrupt_driver_state_t LPSPI20_InterruptDriverState = {
4806 #endif
4807     &LPSPI20_Resource,
4808     &LPSPI20_Handle,
4809 };
4810 
LPSPI20_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)4811 static int32_t LPSPI20_InterruptInitialize(ARM_SPI_SignalEvent_t cb_event)
4812 {
4813 #ifdef RTE_SPI20_PIN_INIT
4814     RTE_SPI20_PIN_INIT();
4815 #endif
4816     return LPSPI_InterruptInitialize(cb_event, &LPSPI20_InterruptDriverState);
4817 }
4818 
LPSPI20_InterruptUninitialize(void)4819 static int32_t LPSPI20_InterruptUninitialize(void)
4820 {
4821 #ifdef RTE_SPI20_PIN_DEINIT
4822     RTE_SPI20_PIN_DEINIT();
4823 #endif
4824     return LPSPI_InterruptUninitialize(&LPSPI20_InterruptDriverState);
4825 }
4826 
LPSPI20_InterruptPowerControl(ARM_POWER_STATE state)4827 static int32_t LPSPI20_InterruptPowerControl(ARM_POWER_STATE state)
4828 {
4829     return LPSPI_InterruptPowerControl(state, &LPSPI20_InterruptDriverState);
4830 }
4831 
LPSPI20_InterruptSend(const void * data,uint32_t num)4832 static int32_t LPSPI20_InterruptSend(const void *data, uint32_t num)
4833 {
4834     return LPSPI_InterruptSend(data, num, &LPSPI20_InterruptDriverState);
4835 }
4836 
LPSPI20_InterruptReceive(void * data,uint32_t num)4837 static int32_t LPSPI20_InterruptReceive(void *data, uint32_t num)
4838 {
4839     return LPSPI_InterruptReceive(data, num, &LPSPI20_InterruptDriverState);
4840 }
4841 
LPSPI20_InterruptTransfer(const void * data_out,void * data_in,uint32_t num)4842 static int32_t LPSPI20_InterruptTransfer(const void *data_out, void *data_in, uint32_t num)
4843 {
4844     return LPSPI_InterruptTransfer(data_out, data_in, num, &LPSPI20_InterruptDriverState);
4845 }
4846 
LPSPI20_InterruptGetCount(void)4847 static uint32_t LPSPI20_InterruptGetCount(void)
4848 {
4849     return LPSPI_InterruptGetCount(&LPSPI20_InterruptDriverState);
4850 }
4851 
LPSPI20_InterruptControl(uint32_t control,uint32_t arg)4852 static int32_t LPSPI20_InterruptControl(uint32_t control, uint32_t arg)
4853 {
4854     return LPSPI_InterruptControl(control, arg, &LPSPI20_InterruptDriverState);
4855 }
4856 
LPSPI20_InterruptGetStatus(void)4857 static ARM_SPI_STATUS LPSPI20_InterruptGetStatus(void)
4858 {
4859     return LPSPI_InterruptGetStatus(&LPSPI20_InterruptDriverState);
4860 }
4861 
4862 #endif
4863 
4864 ARM_DRIVER_SPI Driver_SPI20 = {
4865     LPSPIx_GetVersion,      LPSPIx_GetCapabilities,
4866 #if defined(RTE_SPI20_DMA_EN) && RTE_SPI20_DMA_EN
4867     LPSPI20_EdmaInitialize, LPSPI20_EdmaUninitialize, LPSPI20_EdmaPowerControl, LPSPI20_EdmaSend,
4868     LPSPI20_EdmaReceive,    LPSPI20_EdmaTransfer,     LPSPI20_EdmaGetCount,     LPSPI20_EdmaControl,
4869     LPSPI20_EdmaGetStatus
4870 #else
4871     LPSPI20_InterruptInitialize, LPSPI20_InterruptUninitialize, LPSPI20_InterruptPowerControl, LPSPI20_InterruptSend,
4872     LPSPI20_InterruptReceive,    LPSPI20_InterruptTransfer,     LPSPI20_InterruptGetCount,     LPSPI20_InterruptControl,
4873     LPSPI20_InterruptGetStatus
4874 #endif
4875 };
4876 
4877 #endif /*  LPSPI20  */
4878