mirror of https://github.com/ARMmbed/mbed-os.git
Add GIC_SetConfigration function to satisfy Cortex-A interrupt spec
By updating to the codes of CMSIS5/RTX5, GIC_SetConfigration() function was added for Cortex-A, this function is set the interrupt configuration using GIC's ICFGR register. Therefore, I added this function to satisfy Cortex-A interrupt spec in the below files. "can_api.c", "ethernet_api.c", "gpio_irq_api.c", "i2c_api.c", "spi_api.c" and "us_ticker.c"pull/5767/head
parent
c30e107f6e
commit
2661bc27a9
|
@ -340,6 +340,7 @@ void can_irq_set(can_t *obj, CanIrqType type, uint32_t enable) {
|
||||||
}
|
}
|
||||||
InterruptHandlerRegister(can_int_info[obj->ch][type].int_num, can_int_info[obj->ch][type].handler);
|
InterruptHandlerRegister(can_int_info[obj->ch][type].int_num, can_int_info[obj->ch][type].handler);
|
||||||
GIC_SetPriority(can_int_info[obj->ch][type].int_num, 5);
|
GIC_SetPriority(can_int_info[obj->ch][type].int_num, 5);
|
||||||
|
GIC_SetConfiguration(can_int_info[obj->ch][type].int_num, 1);
|
||||||
GIC_EnableIRQ(can_int_info[obj->ch][type].int_num);
|
GIC_EnableIRQ(can_int_info[obj->ch][type].int_num);
|
||||||
} else {
|
} else {
|
||||||
GIC_DisableIRQ(can_int_info[obj->ch][type].int_num);
|
GIC_DisableIRQ(can_int_info[obj->ch][type].int_num);
|
||||||
|
|
|
@ -582,6 +582,7 @@ static void lan_reg_set(int32_t link) {
|
||||||
ETHERECSIPR0 &= ~0x00000011; /* PFROIP Disable, ICDIP Disable */
|
ETHERECSIPR0 &= ~0x00000011; /* PFROIP Disable, ICDIP Disable */
|
||||||
InterruptHandlerRegister(ETHERI_IRQn, INT_Ether); /* Ethernet interrupt handler registration */
|
InterruptHandlerRegister(ETHERI_IRQn, INT_Ether); /* Ethernet interrupt handler registration */
|
||||||
GIC_SetPriority(ETHERI_IRQn, Interrupt_priority); /* Ethernet interrupt priority */
|
GIC_SetPriority(ETHERI_IRQn, Interrupt_priority); /* Ethernet interrupt priority */
|
||||||
|
GIC_SetConfiguration(ETHERI_IRQn, 1);
|
||||||
GIC_EnableIRQ(ETHERI_IRQn); /* Enables the E-DMAC interrupt */
|
GIC_EnableIRQ(ETHERI_IRQn); /* Enables the E-DMAC interrupt */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -166,6 +166,7 @@ int gpio_irq_init(gpio_irq_t *obj, PinName pin, gpio_irq_handler handler, uint32
|
||||||
InterruptHandlerRegister((IRQn_Type)(nIRQn_h+obj->ch), (void (*)(uint32_t))irq_tbl[obj->ch]);
|
InterruptHandlerRegister((IRQn_Type)(nIRQn_h+obj->ch), (void (*)(uint32_t))irq_tbl[obj->ch]);
|
||||||
INTCICR1 &= ~(0x3 << shift);
|
INTCICR1 &= ~(0x3 << shift);
|
||||||
GIC_SetPriority((IRQn_Type)(nIRQn_h+obj->ch), 5);
|
GIC_SetPriority((IRQn_Type)(nIRQn_h+obj->ch), 5);
|
||||||
|
GIC_SetConfiguration((IRQn_Type)(nIRQn_h + obj->ch), 1);
|
||||||
obj->int_enable = 1;
|
obj->int_enable = 1;
|
||||||
__enable_irq();
|
__enable_irq();
|
||||||
|
|
||||||
|
|
|
@ -1062,6 +1062,11 @@ static void i2c_irqs_set(i2c_t *obj, uint32_t enable)
|
||||||
if (enable) {
|
if (enable) {
|
||||||
InterruptHandlerRegister(irqTable[i], handlerTable[i]);
|
InterruptHandlerRegister(irqTable[i], handlerTable[i]);
|
||||||
GIC_SetPriority(irqTable[i], 5);
|
GIC_SetPriority(irqTable[i], 5);
|
||||||
|
if (i == 1) {
|
||||||
|
GIC_SetConfiguration(irqTable[i], 3);
|
||||||
|
} else {
|
||||||
|
GIC_SetConfiguration(irqTable[i], 1);
|
||||||
|
}
|
||||||
GIC_EnableIRQ(irqTable[i]);
|
GIC_EnableIRQ(irqTable[i]);
|
||||||
} else {
|
} else {
|
||||||
GIC_DisableIRQ(irqTable[i]);
|
GIC_DisableIRQ(irqTable[i]);
|
||||||
|
|
|
@ -447,6 +447,7 @@ static void spi_irqs_set(spi_t *obj, uint32_t enable)
|
||||||
if (enable) {
|
if (enable) {
|
||||||
InterruptHandlerRegister(irqTable[i], handlerTable[i]);
|
InterruptHandlerRegister(irqTable[i], handlerTable[i]);
|
||||||
GIC_SetPriority(irqTable[i], 5);
|
GIC_SetPriority(irqTable[i], 5);
|
||||||
|
GIC_SetConfiguration(irqTable[i], 1);
|
||||||
GIC_EnableIRQ(irqTable[i]);
|
GIC_EnableIRQ(irqTable[i]);
|
||||||
} else {
|
} else {
|
||||||
GIC_DisableIRQ(irqTable[i]);
|
GIC_DisableIRQ(irqTable[i]);
|
||||||
|
|
|
@ -62,6 +62,7 @@ void us_ticker_init(void) {
|
||||||
// INTC settings
|
// INTC settings
|
||||||
InterruptHandlerRegister(US_TICKER_TIMER_IRQn, (void (*)(uint32_t))us_ticker_interrupt);
|
InterruptHandlerRegister(US_TICKER_TIMER_IRQn, (void (*)(uint32_t))us_ticker_interrupt);
|
||||||
GIC_SetPriority(US_TICKER_TIMER_IRQn, 5);
|
GIC_SetPriority(US_TICKER_TIMER_IRQn, 5);
|
||||||
|
GIC_SetConfiguration(US_TICKER_TIMER_IRQn, 3);
|
||||||
GIC_EnableIRQ(US_TICKER_TIMER_IRQn);
|
GIC_EnableIRQ(US_TICKER_TIMER_IRQn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue