@@ -43,6 +43,7 @@ const PinMap PinMap_GPIO_IRQ[] = {
43
43
{PV2 , GPIO_IRQ_17_18 , PIN_DATA (0 , 0 )},
44
44
{PH4 , GPIO_IRQ_19_22 , PIN_DATA (0 , 0 )},
45
45
{PT0 , GPIO_IRQ_23_26 , PIN_DATA (0 , 0 )},
46
+ {PT1 , GPIO_IRQ_23_26 , PIN_DATA (0 , 0 )},
46
47
{PG2 , GPIO_IRQ_27_28 , PIN_DATA (0 , 0 )},
47
48
{PT7 , GPIO_IRQ_29 , PIN_DATA (0 , 0 )},
48
49
{PU0 , GPIO_IRQ_30_31 , PIN_DATA (0 , 0 )},
@@ -54,6 +55,7 @@ static gpio_irq_handler hal_irq_handler[CHANNEL_NUM] = {NULL};
54
55
static void SetSTBYReleaseINTSrc (cg_intsrc , cg_intactivestate , FunctionalState );
55
56
cg_intactivestate CurrentState ;
56
57
static void INT_IRQHandler (PinName pin , uint32_t index );
58
+ static uint32_t CheckPinNameIRQSRC (PinName pin );
57
59
58
60
// Initialize gpio IRQ pin
59
61
int gpio_irq_init (gpio_irq_t * obj , PinName pin , gpio_irq_handler handler , uint32_t id )
@@ -138,7 +140,7 @@ int gpio_irq_init(gpio_irq_t *obj, PinName pin, gpio_irq_handler handler, uint32
138
140
obj -> irq_src = CG_INT_SRC_14 ;
139
141
break ;
140
142
case GPIO_IRQ_23_26 :
141
- obj -> irq_src = CG_INT_SRC_18 ;
143
+ obj -> irq_src = CheckPinNameIRQSRC ( pin ) ;
142
144
break ;
143
145
case GPIO_IRQ_27_28 :
144
146
obj -> irq_src = CG_INT_SRC_1C ;
@@ -391,9 +393,16 @@ void INT19_22_IRQHandler(void)
391
393
INT_IRQHandler (PH4 , 19 );
392
394
}
393
395
396
+ #define BIT22 (0x1 << 22)
397
+ #define BIT21 (0x1 << 21)
394
398
void INT23_26_IRQHandler (void )
395
399
{
396
- INT_IRQHandler (PT0 , 23 );
400
+ uint32_t int_num = TSB_IMN -> FLG5 ;
401
+ if ( int_num & BIT22 ) {
402
+ INT_IRQHandler (PT1 , 24 );
403
+ } else if (int_num & BIT21 ) {
404
+ INT_IRQHandler (PT0 , 23 );
405
+ }
397
406
}
398
407
399
408
void INT27_28_IRQHandler (void )
@@ -435,3 +444,23 @@ static void SetSTBYReleaseINTSrc(cg_intsrc intsource, cg_intactivestate ActiveSt
435
444
__IO uint8_t imc = * p_imc ;
436
445
}
437
446
}
447
+
448
+ /**
449
+ * @brief Return INTSRC for gpio INT that enable more than one pin.
450
+ * @param pin PinName.
451
+ * @return GPIO IRQn_Type .
452
+ * @note You can expand func CheckPinNameIRQSRC if need to add other GPIO INT.
453
+ */
454
+ static uint32_t CheckPinNameIRQSRC (PinName pin )
455
+ {
456
+ switch (pin )
457
+ {
458
+ case PT0 :
459
+ return CG_INT_SRC_18 ;
460
+ case PT1 :
461
+ return CG_INT_SRC_19 ;
462
+ default :
463
+ break ;
464
+ }
465
+ return -1 ;
466
+ }
0 commit comments