Skip to content

Commit 5db499a

Browse files
authored
Update drv_hw_i2c.c
1 parent 10008de commit 5db499a

File tree

1 file changed

+42
-26
lines changed

1 file changed

+42
-26
lines changed

bsp/gd32/arm/libraries/gd32_drivers/drv_hw_i2c.c

Lines changed: 42 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -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-
192167
static 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+
275291
static 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
}
335351
INIT_BOARD_EXPORT(rt_hw_i2c_init);
336352

337-
#endif /* RT_USING_I2C */
353+
#endif /* RT_USING_I2C */

0 commit comments

Comments
 (0)