blob: 54585fb98bd0f146917401cc5d5f1d15be7a4cb6 [file] [log] [blame]
Xiaohu.Huanga2c5a042022-03-12 22:41:09 +08001/*
2 * Copyright (c) 2021-2022 Amlogic, Inc. All rights reserved.
3 *
4 * SPDX-License-Identifier: MIT
5 */
6
7#ifndef INTERRUPT_CONTROL_H_
8#define INTERRUPT_CONTROL_H_
9
10#include <stdint.h>
11#include "n200_eclic.h"
12#include "interrupt.h"
13///////////////////////////////////////////////////////////////////
14/////// ECLIC relevant functions
15///////
xiaohu.huang38262102022-05-06 22:21:48 +080016void eclic_init(uint32_t num_irq);
Xiaohu.Huanga2c5a042022-03-12 22:41:09 +080017
xiaohu.huang38262102022-05-06 22:21:48 +080018void eclic_enable_interrupt(uint32_t source);
19void eclic_disable_interrupt(uint32_t source);
Xiaohu.Huanga2c5a042022-03-12 22:41:09 +080020
21void eclic_set_pending(uint32_t source);
22void eclic_clear_pending(uint32_t source);
23
xiaohu.huang38262102022-05-06 22:21:48 +080024void eclic_set_intctrl(uint32_t source, uint8_t intctrl);
25uint8_t eclic_get_intctrl(uint32_t source);
Xiaohu.Huanga2c5a042022-03-12 22:41:09 +080026
xiaohu.huang38262102022-05-06 22:21:48 +080027void eclic_set_intattr(uint32_t source, uint8_t intattr);
28uint8_t eclic_get_intattr(uint32_t source);
Xiaohu.Huanga2c5a042022-03-12 22:41:09 +080029
xiaohu.huang38262102022-05-06 22:21:48 +080030void eclic_set_cliccfg(uint8_t cliccfg);
31uint8_t eclic_get_cliccfg(void);
Xiaohu.Huanga2c5a042022-03-12 22:41:09 +080032
bangzheng.liu68c01152022-09-29 16:57:22 +080033uint32_t eclic_get_clicinfo(void);
34
35uint8_t eclic_get_clicintctlbits(void);
36
xiaohu.huang38262102022-05-06 22:21:48 +080037void eclic_set_mth(uint8_t mth);
Xiaohu.Huanga2c5a042022-03-12 22:41:09 +080038uint8_t eclic_get_mth(void);
39
40//sets nlbits
41void eclic_set_nlbits(uint8_t nlbits);
42
Xiaohu.Huanga2c5a042022-03-12 22:41:09 +080043//get nlbits
44uint8_t eclic_get_nlbits(void);
45
46void eclic_set_irq_lvl(uint32_t source, uint8_t lvl);
47uint8_t eclic_get_irq_lvl(uint32_t source);
48
49void eclic_set_irq_lvl_abs(uint32_t source, uint8_t lvl_abs);
50uint8_t eclic_get_irq_lvl_abs(uint32_t source);
51
52void eclic_set_irq_pri(uint32_t source, uint8_t pri);
53
54void eclic_mode_enable(void);
55
56void eclic_set_vmode(uint32_t source);
57void eclic_set_nonvmode(uint32_t source);
58
59void eclic_set_level_trig(uint32_t source);
60void eclic_set_posedge_trig(uint32_t source);
61void eclic_set_negedge_trig(uint32_t source);
62
63int eclic_map_interrupt(uint32_t ulIrq, uint32_t src);
64
65void print_eclic(void);
66
67void clean_int_src(void);
68int int_src_sel(uint32_t ulIrq, uint32_t src);
69int int_src_clean(uint32_t ulIrq);
70
xiaohu.huang38262102022-05-06 22:21:48 +080071extern uint32_t vector_base;
72
Xiaohu.Huanga2c5a042022-03-12 22:41:09 +080073#endif