summaryrefslogtreecommitdiff
path: root/bsp/allwinner/libraries/sunxi-hal/hal/source/intc/hal_intc.c
blob: 5d90ca9794c6cd61f70b551dd59402a83c3f98bc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdint.h>
#include <hal_interrupt.h>
#include <hal_intc.h>

#include "intc.h"

static irqreturn_t intc_dispatcher(int dev, void *arg)
{
    interrupt_entry();

    return IRQ_HANDLED;
}

hal_intc_status_t hal_intc_init(uint32_t irq_no)
{
    hal_intc_status_t ret = HAL_INTC_STATUS_OK;

    /* initialize interrupt manager */
    interrupt_init();

    /* register intc main dispatcher handler */
    if (request_irq(irq_no, intc_dispatcher, 0, NULL, NULL) < 0) {
        ret = HAL_INTC_STATUS_FAIL;
        goto end;
    }

    enable_irq(irq_no);

end:
    return ret;
}