hal_intc.c 583 B

12345678910111213141516171819202122232425262728293031
  1. #include <stdint.h>
  2. #include <hal_interrupt.h>
  3. #include <hal_intc.h>
  4. #include "intc.h"
  5. static irqreturn_t intc_dispatcher(int dev, void *arg)
  6. {
  7. interrupt_entry();
  8. return IRQ_HANDLED;
  9. }
  10. hal_intc_status_t hal_intc_init(uint32_t irq_no)
  11. {
  12. hal_intc_status_t ret = HAL_INTC_STATUS_OK;
  13. /* initialize interrupt manager */
  14. interrupt_init();
  15. /* register intc main dispatcher handler */
  16. if (request_irq(irq_no, intc_dispatcher, 0, NULL, NULL) < 0) {
  17. ret = HAL_INTC_STATUS_FAIL;
  18. goto end;
  19. }
  20. enable_irq(irq_no);
  21. end:
  22. return ret;
  23. }