@@ -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,19 @@ 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
+ {
403
+ INT_IRQHandler (PT1 , 24 );
404
+ }
405
+ else if (int_num & BIT21 )
406
+ {
407
+ INT_IRQHandler (PT0 , 23 );
408
+ }
397
409
}
398
410
399
411
void INT27_28_IRQHandler (void )
@@ -435,3 +447,28 @@ static void SetSTBYReleaseINTSrc(cg_intsrc intsource, cg_intactivestate ActiveSt
435
447
__IO uint8_t imc = * p_imc ;
436
448
}
437
449
}
450
+
451
+ /**
452
+ * @brief Return INTSRC for gpio INT that enable more than one pin.
453
+ * @param pin PinName.
454
+ * @return GPIO IRQn_Type .
455
+ * @note You can expand func CheckPinNameIRQSRC if need to add other GPIO INT.
456
+ */
457
+ static uint32_t CheckPinNameIRQSRC (PinName pin )
458
+ {
459
+ switch (pin )
460
+ {
461
+ case PT0 :
462
+ return CG_INT_SRC_18 ;
463
+ case PT1 :
464
+ return CG_INT_SRC_19 ;
465
+ //Expand:
466
+ //case PT2:
467
+ // return CG_INT_SRC_20;
468
+ //case PT3:
469
+ // return CG_INT_SRC_21;
470
+ default :
471
+ break ;
472
+ }
473
+ return -1 ;
474
+ }
0 commit comments