1 /*
2  * Copyright (c) 2006-2023, RT-Thread Development Team
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  *
6  * Change Logs:
7  * Date           Author       Notes
8  * 2024-02-06     Dyyt587   first version
9  * 2024-04-23     Zeidan    Add I2Cx_xx_DMA_CONFIG
10  */
11 #ifndef __I2C_HARD_CONFIG_H__
12 #define __I2C_HARD_CONFIG_H__
13 
14 #include <rtthread.h>
15 
16 #ifdef __cplusplus
17 extern "C" {
18 #endif
19 
20 #ifdef BSP_USING_HARD_I2C1
21 #ifndef I2C1_BUS_CONFIG
22 #define I2C1_BUS_CONFIG                             \
23     {                                               \
24         .Instance = I2C1,                           \
25         .timeout=0x1000,                            \
26         .name = "hwi2c1",                           \
27         .evirq_type = I2C1_EV_IRQn,                 \
28         .erirq_type = I2C1_ER_IRQn,                 \
29     }
30 #endif /* I2C1_BUS_CONFIG */
31 #endif /* BSP_USING_HARD_I2C1 */
32 
33 #ifdef BSP_I2C1_TX_USING_DMA
34 #ifndef I2C1_TX_DMA_CONFIG
35 #define I2C1_TX_DMA_CONFIG                          \
36     {                                               \
37         .dma_rcc = I2C1_TX_DMA_RCC,                 \
38         .Instance = I2C1_TX_DMA_INSTANCE,           \
39         .dma_irq = I2C1_TX_DMA_IRQ,                 \
40     }
41 #endif /* I2C1_TX_DMA_CONFIG */
42 #endif /* BSP_I2C1_TX_USING_DMA */
43 
44 #ifdef BSP_I2C1_RX_USING_DMA
45 #ifndef I2C1_RX_DMA_CONFIG
46 #define I2C1_RX_DMA_CONFIG                          \
47     {                                               \
48         .dma_rcc = I2C1_RX_DMA_RCC,                 \
49         .Instance = I2C1_RX_DMA_INSTANCE,           \
50         .dma_irq = I2C1_RX_DMA_IRQ,                 \
51     }
52 #endif /* I2C1_RX_DMA_CONFIG */
53 #endif /* BSP_I2C1_RX_USING_DMA */
54 
55 #ifdef BSP_USING_HARD_I2C2
56 #ifndef I2C2_BUS_CONFIG
57 #define I2C2_BUS_CONFIG                             \
58     {                                               \
59         .Instance = I2C2,                           \
60         .timeout=0x1000,                            \
61         .name = "hwi2c2",                           \
62         .evirq_type = I2C2_EV_IRQn,                 \
63         .erirq_type = I2C2_ER_IRQn,                 \
64     }
65 #endif /* I2C2_BUS_CONFIG */
66 #endif /* BSP_USING_HARD_I2C2 */
67 
68 #ifdef BSP_I2C2_TX_USING_DMA
69 #ifndef I2C2_TX_DMA_CONFIG
70 #define I2C2_TX_DMA_CONFIG                          \
71     {                                               \
72         .dma_rcc = I2C2_TX_DMA_RCC,                 \
73         .Instance = I2C2_TX_DMA_INSTANCE,           \
74         .dma_irq = I2C2_TX_DMA_IRQ,                 \
75     }
76 #endif /* I2C2_TX_DMA_CONFIG */
77 #endif /* BSP_I2C2_TX_USING_DMA */
78 
79 #ifdef BSP_I2C2_RX_USING_DMA
80 #ifndef I2C2_RX_DMA_CONFIG
81 #define I2C2_RX_DMA_CONFIG                          \
82     {                                               \
83         .dma_rcc = I2C2_RX_DMA_RCC,                 \
84         .Instance = I2C2_RX_DMA_INSTANCE,           \
85         .dma_irq = I2C2_RX_DMA_IRQ,                 \
86     }
87 #endif /* I2C2_RX_DMA_CONFIG */
88 #endif /* BSP_I2C2_RX_USING_DMA */
89 
90 #ifdef BSP_USING_HARD_I2C3
91 #ifndef I2C3_BUS_CONFIG
92 #define I2C3_BUS_CONFIG                             \
93     {                                               \
94         .Instance = I2C3,                           \
95         .timeout=0x1000,                            \
96         .name = "hwi2c3",                           \
97         .evirq_type = I2C3_EV_IRQn,                 \
98         .erirq_type = I2C3_ER_IRQn,                 \
99     }
100 #endif /* I2C3_BUS_CONFIG */
101 #endif /* BSP_USING_HARD_I2C3 */
102 
103 #ifdef BSP_I2C3_TX_USING_DMA
104 #ifndef I2C3_TX_DMA_CONFIG
105 #define I2C3_TX_DMA_CONFIG                          \
106     {                                               \
107         .dma_rcc = I2C3_TX_DMA_RCC,                 \
108         .Instance = I2C3_TX_DMA_INSTANCE,           \
109         .dma_irq = I2C3_TX_DMA_IRQ,                 \
110     }
111 #endif /* I2C3_TX_DMA_CONFIG */
112 #endif /* BSP_I2C3_TX_USING_DMA */
113 
114 #ifdef BSP_I2C3_RX_USING_DMA
115 #ifndef I2C3_RX_DMA_CONFIG
116 #define I2C3_RX_DMA_CONFIG                          \
117     {                                               \
118         .dma_rcc = I2C3_RX_DMA_RCC,                 \
119         .Instance = I2C3_RX_DMA_INSTANCE,           \
120         .dma_irq = I2C3_RX_DMA_IRQ,                 \
121     }
122 #endif /* I2C3_RX_DMA_CONFIG */
123 #endif /* BSP_I2C3_RX_USING_DMA */
124 
125 #ifdef __cplusplus
126 }
127 #endif
128 
129 #endif /*__I2C_HARD_CONFIG_H__ */
130