void can_irq_set(can_t *obj, CanIrqType type, uint32_t enable) { __IO uint32_t *dmy_ctr; /* Wake-up Irq is not supported */ if (type != IRQ_WAKEUP) { if (enable) { dmy_ctr = CTR_MATCH[obj->ch]; if (type == IRQ_ERROR) { /* EWIE interrupts is enable */ *dmy_ctr |= 0x00000200; } else if (type == IRQ_OVERRUN) { /* OLIE interrupts is enable */ *dmy_ctr |= 0x00002000; } else if (type == IRQ_PASSIVE) { /* EPIE interrupts is enable */ *dmy_ctr |= 0x00000400; } else if (type == IRQ_ARB) { /* ALIE interrupts is enable */ *dmy_ctr |= 0x00008000; } else if (type == IRQ_BUS) { /* BEIE interrupts is enable */ *dmy_ctr |= 0x00000100; } 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_SetConfiguration(can_int_info[obj->ch][type].int_num, 1); GIC_EnableIRQ(can_int_info[obj->ch][type].int_num); } else { GIC_DisableIRQ(can_int_info[obj->ch][type].int_num); } } }
void us_ticker_free(void) { GIC_DisableIRQ(OSTMI1TINT_IRQn); GIC_ClearPendingIRQ(OSTMI1TINT_IRQn); /* Power Control for Peripherals */ CPGSTBCR5 |= (CPG_STBCR5_BIT_MSTP50); /* disable OSTM1 clock */ }
void lp_ticker_free(void) { GIC_DisableIRQ(LP_TICKER_TIMER_IRQn); GIC_ClearPendingIRQ(LP_TICKER_TIMER_IRQn); MTU2TIER &= ~MTU2_TIER_n_TGIEA; lp_ticker_inited = 0; mtu2_free(); }
static void serial_irq_set_irq(IRQn_Type IRQn, IRQHandler handler, uint32_t enable) { if (enable) { InterruptHandlerRegister(IRQn, (void (*)(uint32_t))handler); GIC_SetPriority(IRQn, 5); GIC_EnableIRQ(IRQn); } else { GIC_DisableIRQ(IRQn); } }
static void i2c_irqs_set(i2c_t *obj, uint32_t enable) { int i; const IRQn_Type *irqTable = irq_set_tbl[obj->i2c.i2c]; const IRQHandler *handlerTable = hander_set_tbl[obj->i2c.i2c]; for (i = 0; i < IRQ_NUM; ++i) { if (enable) { InterruptHandlerRegister(irqTable[i], handlerTable[i]); GIC_SetPriority(irqTable[i], 5); GIC_EnableIRQ(irqTable[i]); } else { GIC_DisableIRQ(irqTable[i]); } } REG(IER.UINT8[0]) = enable ? 0x63 : 0x00; }
static void serial_irq_set_internal(serial_t *obj, SerialIrq irq, uint32_t enable) { IRQn_Type IRQn; IRQHandler handler; IRQn = irq_set_tbl[obj->index][irq]; handler = hander_set_tbl[obj->index][irq]; if ((obj->index >= 0) && (obj->index <= 7)) { if (enable) { InterruptHandlerRegister(IRQn, (void (*)(uint32_t))handler); GIC_SetPriority(IRQn, 5); GIC_EnableIRQ(IRQn); } else { GIC_DisableIRQ(IRQn); } } }
void lp_ticker_init(void) { GIC_DisableIRQ(LP_TICKER_TIMER_IRQn); GIC_ClearPendingIRQ(LP_TICKER_TIMER_IRQn); /* Power Control for Peripherals */ mtu2_init(); if (lp_ticker_inited) return; lp_ticker_inited = 1; MTU2TCR = MTU2_TCR_TPSC; MTU2TSTR |= MTU2_TSTR_CST; MTU2TIER |= MTU2_TIER_n_TGIEA; // INTC settings InterruptHandlerRegister(LP_TICKER_TIMER_IRQn, (void (*)(uint32_t))lp_ticker_irq_handler); GIC_SetPriority(LP_TICKER_TIMER_IRQn, 5); GIC_SetConfiguration(LP_TICKER_TIMER_IRQn, 3); }
static void spi_irqs_set(spi_t *obj, uint32_t enable) { int i; const IRQn_Type *irqTable = irq_set_tbl[obj->spi.index]; const IRQHandler *handlerTable = hander_set_tbl[obj->spi.index]; for (i = 0; i < IRQ_NUM; ++i) { if (enable) { InterruptHandlerRegister(irqTable[i], handlerTable[i]); GIC_SetPriority(irqTable[i], 5); GIC_EnableIRQ(irqTable[i]); } else { GIC_DisableIRQ(irqTable[i]); } } if (enable) { obj->spi.spi->SPCR |= (1 << 4) | (1 << 7); } else { obj->spi.spi->SPCR &= ~((1 << 4) | (1 << 7)); } }
void us_ticker_init(void) { GIC_DisableIRQ(OSTMI1TINT_IRQn); GIC_ClearPendingIRQ(OSTMI1TINT_IRQn); /* Power Control for Peripherals */ CPGSTBCR5 &= ~(CPG_STBCR5_BIT_MSTP50); /* enable OSTM1 clock */ if (us_ticker_inited) return; us_ticker_inited = 1; // timer settings OSTM1TT = 0x01; /* Stop the counter and clears the OSTM1TE bit. */ OSTM1CTL = 0x02; /* Free running timer mode. Interrupt disabled when star counter */ OSTM1TS = 0x1; /* Start the counter and sets the OSTM0TE bit. */ // INTC settings InterruptHandlerRegister(OSTMI1TINT_IRQn, (void (*)(uint32_t))us_ticker_irq_handler); GIC_SetPriority(OSTMI1TINT_IRQn, 5); GIC_SetConfiguration(OSTMI1TINT_IRQn, 3); }
void us_ticker_disable_interrupt(void) { GIC_DisableIRQ(US_TICKER_TIMER_IRQn); }
void lp_ticker_disable_interrupt(void) { GIC_DisableIRQ(LP_TICKER_TIMER_IRQn); }
void us_ticker_disable_interrupt(void) { GIC_DisableIRQ(OSTMI1TINT_IRQn); }