void up_enable_irq(int irq) { uintptr_t regaddr; uint32_t regval; uint32_t bit; if (lpc43_irqinfo(irq, ®addr, &bit, NVIC_ENA_OFFSET) == 0) { /* Modify the appropriate bit in the register to enable the interrupt. * For normal interrupts, we need to set the bit in the associated * Interrupt Set Enable register. For other exceptions, we need to * set the bit in the System Handler Control and State Register. */ if (irq >= LPC43_IRQ_EXTINT) { putreg32(bit, regaddr); } else { regval = getreg32(regaddr); regval |= bit; putreg32(regval, regaddr); } } lpc43_dumpnvic("enable", irq); }
void up_enable_irq(int irq) { uintptr_t regaddr; uint32_t regval; uint32_t bit; if (lpc43_irqinfo(irq, ®addr, &bit, NVIC_ENA_OFFSET) == 0) { /* Modify the appropriate bit in the register to enable the interrupt. * For normal interrupts, we need to set the bit in the associated * Interrupt Set Enable register. For other exceptions, we need to * set the bit in the System Handler Control and State Register. */ if (irq >= LPC43_IRQ_EXTINT) { putreg32(bit, regaddr); } else { regval = getreg32(regaddr); regval |= bit; putreg32(regval, regaddr); } } #ifdef CONFIG_GPIO_IRQ else if (irq >= LPC43_VALID_FIRST0L) { /* Maybe it is a (derived) GPIO IRQ */ lpc43_gpioint_enable(irq); } #endif lpc43_dumpnvic("enable", irq); }