summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhao Puhan <[email protected]>2025-05-10 18:02:51 +0800
committerGitHub <[email protected]>2025-05-10 18:02:51 +0800
commit3fb3be8ad80f595c0426c8021dc3bfeed227232c (patch)
tree5796c83d44dfa2c7dcb0e4758a8c24738b131068
parentf0609c1b06adb1f3bd0c8054f405614080fb318c (diff)
[infineon]fix ifx_pin_irq_enable
-rw-r--r--bsp/Infineon/libraries/HAL_Drivers/drv_gpio.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/bsp/Infineon/libraries/HAL_Drivers/drv_gpio.c b/bsp/Infineon/libraries/HAL_Drivers/drv_gpio.c
index 83c6617ff1..327fcd230b 100644
--- a/bsp/Infineon/libraries/HAL_Drivers/drv_gpio.c
+++ b/bsp/Infineon/libraries/HAL_Drivers/drv_gpio.c
@@ -321,7 +321,7 @@ static rt_err_t ifx_pin_irq_enable(struct rt_device *device, rt_base_t pin,
irqmap = &pin_irq_map[gpio_port];
#if !defined(COMPONENT_CAT1C)
- IRQn_Type irqn = (IRQn_Type)(irqmap->irqno + PORT_GET(irqmap->port));
+ IRQn_Type irqn = irqmap->irqno;
irq_cb_data[irqn].callback = irq_callback;
irq_cb_data[irqn].callback_arg = (rt_uint16_t *)&pin_irq_map[gpio_port].port;
cyhal_gpio_register_callback(gpio_pin, &irq_cb_data[irqn]);
@@ -357,7 +357,12 @@ static rt_err_t ifx_pin_irq_enable(struct rt_device *device, rt_base_t pin,
irqmap = &pin_irq_map[gpio_port];
#if !defined(COMPONENT_CAT1C)
- IRQn_Type irqn = (IRQn_Type)(irqmap->irqno + PORT_GET(irqmap->port));
+ IRQn_Type irqn = irqmap->irqno;
+ if (irqn < 0 || irqn >= PIN_IFXPORT_MAX)
+ {
+ rt_hw_interrupt_enable(level);
+ return -RT_EINVAL;
+ }
_cyhal_irq_disable(irqn);
#endif
rt_hw_interrupt_enable(level);