@@ -164,31 +164,6 @@ static void gd32_i2c_err_irq_handler(struct gd32_i2c *i2c_obj)
164164}
165165
166166
167- #ifdef BSP_USING_HW_I2C0
168- void I2C0_EV_IRQHandler (void ) {
169- rt_interrupt_enter ();
170- gd32_i2c_irq_handler (& i2c_objs [0 ]);
171- rt_interrupt_leave ();
172- }
173- void I2C0_ER_IRQHandler (void ) {
174- rt_interrupt_enter ();
175- gd32_i2c_err_irq_handler (& i2c_objs [0 ]);
176- rt_interrupt_leave ();
177- }
178- #endif
179- #ifdef BSP_USING_HW_I2C1
180- void I2C1_EV_IRQHandler (void ) {
181- rt_interrupt_enter ();
182- gd32_i2c_irq_handler (& i2c_objs [0 ]);
183- rt_interrupt_leave ();
184- }
185- void I2C1_ER_IRQHandler (void ) {
186- rt_interrupt_enter ();
187- gd32_i2c_err_irq_handler (& i2c_objs [0 ]);
188- rt_interrupt_leave (); }
189- #endif
190-
191-
192167static rt_ssize_t gd32_i2c_master_xfer (struct rt_i2c_bus_device * bus , struct rt_i2c_msg msgs [], rt_uint32_t num )
193168{
194169 struct gd32_i2c * i2c_obj = rt_container_of (bus , struct gd32_i2c , parent );
@@ -272,6 +247,47 @@ static rt_ssize_t gd32_i2c_master_xfer(struct rt_i2c_bus_device *bus, struct rt_
272247 return num ;
273248}
274249
250+
251+ #if defined(BSP_USING_HW_I2C0 )
252+ #define I2C0_ENABLED_INDEX 0
253+ #if defined(BSP_USING_HW_I2C1 )
254+ #define I2C1_ENABLED_INDEX 1
255+ #else
256+ #define I2C1_ENABLED_INDEX -1
257+ #endif
258+ #else
259+ #define I2C0_ENABLED_INDEX -1
260+ #if defined(BSP_USING_HW_I2C1 )
261+ #define I2C1_ENABLED_INDEX 0
262+ #else
263+ #define I2C1_ENABLED_INDEX -1
264+ #endif
265+ #endif
266+
267+ #ifdef BSP_USING_HW_I2C0
268+ void I2C0_EV_IRQHandler (void ) {
269+ rt_interrupt_enter ();
270+ gd32_i2c_irq_handler (& i2c_objs [I2C0_ENABLED_INDEX ]);
271+ rt_interrupt_leave ();
272+ }
273+ void I2C0_ER_IRQHandler (void ) {
274+ rt_interrupt_enter ();
275+ gd32_i2c_err_irq_handler (& i2c_objs [I2C0_ENABLED_INDEX ]);
276+ rt_interrupt_leave ();
277+ }
278+ #endif
279+ #ifdef BSP_USING_HW_I2C1
280+ void I2C1_EV_IRQHandler (void ) {
281+ rt_interrupt_enter ();
282+ gd32_i2c_irq_handler (& i2c_objs [I2C1_ENABLED_INDEX ]);
283+ rt_interrupt_leave ();
284+ }
285+ void I2C1_ER_IRQHandler (void ) {
286+ rt_interrupt_enter ();
287+ gd32_i2c_err_irq_handler (& i2c_objs [I2C1_ENABLED_INDEX ]);
288+ rt_interrupt_leave (); }
289+ #endif
290+
275291static const struct rt_i2c_bus_device_ops gd32_i2c_ops =
276292{
277293 .master_xfer = gd32_i2c_master_xfer ,
@@ -334,4 +350,4 @@ int rt_hw_i2c_init(void)
334350}
335351INIT_BOARD_EXPORT (rt_hw_i2c_init );
336352
337- #endif /* RT_USING_I2C */
353+ #endif /* RT_USING_I2C */
0 commit comments