Skip to content

Commit a562473

Browse files
authored
Merge pull request #10798 from ThunderSoft123/master
TARGET_TT:Add GPIO INT pin with PT1
2 parents 8765225 + edeeb33 commit a562473

File tree

1 file changed

+31
-2
lines changed

1 file changed

+31
-2
lines changed

targets/TARGET_TT/TARGET_TT_M3HQ/gpio_irq_api.c

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ const PinMap PinMap_GPIO_IRQ[] = {
4343
{PV2, GPIO_IRQ_17_18, PIN_DATA(0, 0)},
4444
{PH4, GPIO_IRQ_19_22, PIN_DATA(0, 0)},
4545
{PT0, GPIO_IRQ_23_26, PIN_DATA(0, 0)},
46+
{PT1, GPIO_IRQ_23_26, PIN_DATA(0, 0)},
4647
{PG2, GPIO_IRQ_27_28, PIN_DATA(0, 0)},
4748
{PT7, GPIO_IRQ_29, PIN_DATA(0, 0)},
4849
{PU0, GPIO_IRQ_30_31, PIN_DATA(0, 0)},
@@ -54,6 +55,7 @@ static gpio_irq_handler hal_irq_handler[CHANNEL_NUM] = {NULL};
5455
static void SetSTBYReleaseINTSrc(cg_intsrc, cg_intactivestate, FunctionalState );
5556
cg_intactivestate CurrentState;
5657
static void INT_IRQHandler(PinName pin, uint32_t index);
58+
static uint32_t CheckPinNameIRQSRC(PinName pin);
5759

5860
// Initialize gpio IRQ pin
5961
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
138140
obj->irq_src = CG_INT_SRC_14;
139141
break;
140142
case GPIO_IRQ_23_26:
141-
obj->irq_src = CG_INT_SRC_18;
143+
obj->irq_src = CheckPinNameIRQSRC(pin);
142144
break;
143145
case GPIO_IRQ_27_28:
144146
obj->irq_src = CG_INT_SRC_1C;
@@ -391,9 +393,16 @@ void INT19_22_IRQHandler(void)
391393
INT_IRQHandler(PH4, 19);
392394
}
393395

396+
#define BIT22 (0x1 << 22)
397+
#define BIT21 (0x1 << 21)
394398
void INT23_26_IRQHandler(void)
395399
{
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+
}
397406
}
398407

399408
void INT27_28_IRQHandler(void)
@@ -435,3 +444,23 @@ static void SetSTBYReleaseINTSrc(cg_intsrc intsource, cg_intactivestate ActiveSt
435444
__IO uint8_t imc = *p_imc;
436445
}
437446
}
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

Comments
 (0)