1 /*
2  * Copyright (c) 2006-2021, RT-Thread Development Team
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  *
6  * Change Logs:
7  * Date           Author       Notes
8  * 2024-04-12     shelton      first version
9  */
10 
11 #ifndef __SPI_CONFIG_H__
12 #define __SPI_CONFIG_H__
13 
14 #include <rtthread.h>
15 #include "dma_config.h"
16 
17 #ifdef __cplusplus
18 extern "C" {
19 #endif
20 
21 #define SPI1_IRQHandler      SPI1_IRQHandler
22 #define SPI2_IRQHandler      SPI2_I2S2EXT_IRQHandler
23 #define SPI3_IRQHandler      SPI3_I2S3EXT_IRQHandler
24 #define SPI4_IRQHandler      SPI4_IRQHandler
25 
26 #ifdef BSP_USING_SPI1
27 #define SPI1_CONFIG                                 \
28     {                                               \
29         .spi_x = SPI1,                              \
30         .spi_name = "spi1",                         \
31         .irqn = SPI1_IRQn,                          \
32     }
33 #endif /* BSP_USING_SPI1 */
34 
35 #ifdef BSP_SPI1_RX_USING_DMA
36 #define SPI1_RX_DMA_CONFIG                          \
37     {                                               \
38         .dma_channel = SPI1_RX_DMA_CHANNEL,         \
39         .dma_clock = SPI1_RX_DMA_CLOCK,             \
40         .dma_irqn = SPI1_RX_DMA_IRQ,                \
41     }
42 #endif /* BSP_SPI1_RX_USING_DMA */
43 
44 #ifdef BSP_SPI1_TX_USING_DMA
45 #define SPI1_TX_DMA_CONFIG                          \
46     {                                               \
47         .dma_channel = SPI1_TX_DMA_CHANNEL,         \
48         .dma_clock = SPI1_TX_DMA_CLOCK,             \
49         .dma_irqn = SPI1_TX_DMA_IRQ,                \
50     }
51 #endif /* BSP_SPI1_TX_USING_DMA */
52 
53 #ifdef BSP_USING_SPI2
54 #define SPI2_CONFIG                                 \
55     {                                               \
56         .spi_x = SPI2,                              \
57         .spi_name = "spi2",                         \
58         .irqn = SPI2_I2S2EXT_IRQn,                  \
59     }
60 #endif /* BSP_USING_SPI2 */
61 
62 #ifdef BSP_SPI2_RX_USING_DMA
63 #define SPI2_RX_DMA_CONFIG                          \
64     {                                               \
65         .dma_channel = SPI2_RX_DMA_CHANNEL,         \
66         .dma_clock = SPI2_RX_DMA_CLOCK,             \
67         .dma_irqn = SPI2_RX_DMA_IRQ,                \
68     }
69 #endif /* BSP_SPI2_RX_USING_DMA */
70 
71 #ifdef BSP_SPI2_TX_USING_DMA
72 #define SPI2_TX_DMA_CONFIG                          \
73     {                                               \
74         .dma_channel = SPI2_TX_DMA_CHANNEL,         \
75         .dma_clock = SPI2_TX_DMA_CLOCK,             \
76         .dma_irqn = SPI2_TX_DMA_IRQ,                \
77     }
78 #endif /* BSP_SPI2_TX_USING_DMA */
79 
80 #ifdef BSP_USING_SPI3
81 #define SPI3_CONFIG                                 \
82     {                                               \
83         .spi_x = SPI3,                              \
84         .spi_name = "spi3",                         \
85         .irqn = SPI3_I2S3EXT_IRQn,                  \
86     }
87 #endif /* BSP_USING_SPI3 */
88 
89 #ifdef BSP_SPI3_RX_USING_DMA
90 #define SPI3_RX_DMA_CONFIG                          \
91     {                                               \
92         .dma_channel = SPI3_RX_DMA_CHANNEL,         \
93         .dma_clock = SPI3_RX_DMA_CLOCK,             \
94         .dma_irqn = SPI3_RX_DMA_IRQ,                \
95     }
96 #endif /* BSP_SPI3_RX_USING_DMA */
97 
98 #ifdef BSP_SPI3_TX_USING_DMA
99 #define SPI3_TX_DMA_CONFIG                          \
100     {                                               \
101         .dma_channel = SPI3_TX_DMA_CHANNEL,         \
102         .dma_clock = SPI3_TX_DMA_CLOCK,             \
103         .dma_irqn = SPI3_TX_DMA_IRQ,                \
104     }
105 #endif /* BSP_SPI3_TX_USING_DMA */
106 
107 #ifdef BSP_USING_SPI4
108 #define SPI4_CONFIG                                 \
109     {                                               \
110         .spi_x = SPI4,                              \
111         .spi_name = "spi4",                         \
112         .irqn = SPI4_IRQn,                          \
113     }
114 #endif /* BSP_USING_SPI4 */
115 
116 #ifdef BSP_SPI4_RX_USING_DMA
117 #define SPI4_RX_DMA_CONFIG                          \
118     {                                               \
119         .dma_channel = SPI4_RX_DMA_CHANNEL,         \
120         .dma_clock = SPI4_RX_DMA_CLOCK,             \
121         .dma_irqn = SPI4_RX_DMA_IRQ,                \
122     }
123 #endif /* BSP_SPI4_RX_USING_DMA */
124 
125 #ifdef BSP_SPI4_TX_USING_DMA
126 #define SPI4_TX_DMA_CONFIG                          \
127     {                                               \
128         .dma_channel = SPI4_TX_DMA_CHANNEL,         \
129         .dma_clock = SPI4_TX_DMA_CLOCK,             \
130         .dma_irqn = SPI4_TX_DMA_IRQ,                \
131     }
132 #endif /* BSP_SPI4_TX_USING_DMA */
133 
134 #ifdef __cplusplus
135 }
136 #endif
137 
138 #endif /*__SPI_CONFIG_H__ */
139 
140 
141 
142