Skip to content

Commit 4f107cc

Browse files
Add GPIO INT pin with PT1
1 parent ed81f8e commit 4f107cc

File tree

1 file changed

+39
-2
lines changed

1 file changed

+39
-2
lines changed

targets/TARGET_TT/TARGET_TT_M3HQ/gpio_irq_api.c

Lines changed: 39 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,19 @@ 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+
{
403+
INT_IRQHandler(PT1, 24);
404+
}
405+
else if(int_num & BIT21)
406+
{
407+
INT_IRQHandler(PT0, 23);
408+
}
397409
}
398410

399411
void INT27_28_IRQHandler(void)
@@ -435,3 +447,28 @@ static void SetSTBYReleaseINTSrc(cg_intsrc intsource, cg_intactivestate ActiveSt
435447
__IO uint8_t imc = *p_imc;
436448
}
437449
}
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

Comments
 (0)