1 /*
2  * Copyright (C) 2022-2024, Xiaohua Semiconductor Co., Ltd.
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  *
6  * Change Logs:
7  * Date           Author       Notes
8  * 2024-02-20     CDT          first version
9  */
10 
11 #ifndef __SPI_CONFIG_H__
12 #define __SPI_CONFIG_H__
13 
14 #include <rtthread.h>
15 #include "irq_config.h"
16 
17 #ifdef __cplusplus
18 extern "C" {
19 #endif
20 
21 
22 #ifdef BSP_USING_SPI1
23 #ifndef SPI1_BUS_CONFIG
24 #define SPI1_BUS_CONFIG                                     \
25     {                                                       \
26         .Instance = CM_SPI,                                 \
27         .bus_name = "spi1",                                 \
28         .clock    = FCG1_PERIPH_SPI,                        \
29         .timeout  = 5000UL,                                 \
30         .err_irq.irq_config =                               \
31         {                                                   \
32             .irq_num    = BSP_SPI1_ERR_IRQ_NUM,             \
33             .irq_prio   = BSP_SPI1_ERR_IRQ_PRIO,            \
34             .int_src    = INT_SRC_SPI_SPEI,                 \
35         },                                                  \
36     }
37 #endif /* SPI1_BUS_CONFIG */
38 #endif /* BSP_USING_SPI1 */
39 
40 #ifdef BSP_SPI1_TX_USING_DMA
41 #ifndef SPI1_TX_DMA_CONFIG
42 #define SPI1_TX_DMA_CONFIG                                  \
43     {                                                       \
44         .Instance       = SPI1_TX_DMA_INSTANCE,             \
45         .channel        = SPI1_TX_DMA_CHANNEL,              \
46         .clock          = SPI1_TX_DMA_CLOCK,                \
47         .trigger_select = SPI1_TX_DMA_TRIG_SELECT,          \
48         .trigger_event  = EVT_SRC_SPI_SPTI,                 \
49         .flag           = SPI1_TX_DMA_TRANS_FLAG,           \
50         .irq_config     =                                   \
51         {                                                   \
52             .irq_num    = SPI1_TX_DMA_IRQn,                 \
53             .irq_prio   = SPI1_TX_DMA_INT_PRIO,             \
54             .int_src    = SPI1_TX_DMA_INT_SRC,              \
55         }                                                   \
56     }
57 #endif /* SPI1_TX_DMA_CONFIG */
58 #endif /* BSP_SPI1_TX_USING_DMA */
59 
60 #ifdef BSP_SPI1_RX_USING_DMA
61 #ifndef SPI1_RX_DMA_CONFIG
62 #define SPI1_RX_DMA_CONFIG                                  \
63     {                                                       \
64         .Instance       = SPI1_RX_DMA_INSTANCE,             \
65         .channel        = SPI1_RX_DMA_CHANNEL,              \
66         .clock          = SPI1_RX_DMA_CLOCK,                \
67         .trigger_select = SPI1_RX_DMA_TRIG_SELECT,          \
68         .trigger_event  = EVT_SRC_SPI_SPRI,                 \
69         .flag           = SPI1_RX_DMA_TRANS_FLAG,           \
70         .irq_config     =                                   \
71         {                                                   \
72             .irq_num    = SPI1_RX_DMA_IRQn,                 \
73             .irq_prio   = SPI1_RX_DMA_INT_PRIO,             \
74             .int_src    = SPI1_RX_DMA_INT_SRC,              \
75         }                                                   \
76     }
77 #endif /* SPI1_RX_DMA_CONFIG */
78 #endif /* BSP_SPI1_RX_USING_DMA */
79 
80 #ifdef __cplusplus
81 }
82 #endif
83 
84 #endif /*__SPI_CONFIG_H__ */
85