SemiDrive SSDK Appication Program Interface PTG3.0
irq.h
Go to the documentation of this file.
1
12#ifndef INCLUDE_DRV_IRQ_H
13#define INCLUDE_DRV_IRQ_H
14
15#include <types.h>
16#include <compiler.h>
17
18#include "armv7-r/irq.h"
19
20/* trigger mode */
21#define TRIGGER_MODE_LEVEL 0
22#define TRIGGER_MODE_EDGE 1
23
24#ifndef ASSEMBLY
25
26__BEGIN_CDECLS
27
28/* irq callback type */
29typedef int (*irq_handler)(uint32_t irq, void *arg);
30
31/*
32 * irq initialize.
33 *
34 * @base irq base
35 * @intr_num irq number
36 */
37#if CONFIG_IRQ
38void irq_initialize(uint32_t base, uint32_t intr_num);
39#else
40static inline void irq_initialize(uint32_t base, uint32_t intr_num)
41{
42
43}
44#endif
45
46/*
47 * irq attach.
48 *
49 * @irq irq id.
50 * @handler irq callback handler.
51 * @arg irq callback arg.
52 * @return result.
53 */
54#if CONFIG_IRQ
55int irq_attach(uint32_t irq, irq_handler handler, void *arg);
56#else
57static inline int irq_attach(uint32_t irq, irq_handler handler, void *arg)
58{
59 return -1;
60}
61#endif
62
63/*
64 * irq detach.
65 *
66 * @irq irq id.
67 * @return result.
68 */
69#if CONFIG_IRQ
70int irq_detach(uint32_t irq);
71#else
72static inline int irq_detach(uint32_t irq)
73{
74 return -1;
75}
76#endif
77
78/*
79 * interrupt dispatch.
80 *
81 * @return irq dispatch result.
82 */
83#if CONFIG_IRQ
84int irq_dispatch(void);
85#else
86static inline int irq_dispatch(void)
87{
88 return -1;
89}
90#endif
91
92/*
93 * irq enable.
94 *
95 * @irq irq number.
96 */
97#if CONFIG_IRQ
98void irq_enable(uint32_t irq);
99#else
100static inline void irq_enable(uint32_t irq)
101{
102
103}
104#endif
105
106/*
107 * irq disable.
108 *
109 * @irq irq number.
110 */
111#if CONFIG_IRQ
112void irq_disable(uint32_t irq);
113#else
114static inline void irq_disable(uint32_t irq)
115{
116
117}
118#endif
119
120/*
121 * interrupt set priority mask.
122 *
123 * @mask int priority mask.
124 * @return old int priority mask.
125 */
126#if CONFIG_IRQ
127uint32_t irq_mask(uint32_t mask);
128#else
129static inline uint32_t irq_mask(uint32_t mask)
130{
131 return ~0;
132}
133#endif
134
135/*
136 * interrupt unmask all int.
137 */
138#if CONFIG_IRQ
139void irq_unmask(void);
140#else
141static inline void irq_unmask(void)
142{
143
144}
145#endif
146
147/*
148 * set irq priority.
149 *
150 * @irq irq number.
151 * @priority irq priority.
152 */
153#if CONFIG_IRQ
154void irq_set_priority(uint32_t irq, uint32_t priority);
155#else
156static inline void irq_set_priority(uint32_t irq, uint32_t priority)
157{
158
159}
160#endif
161
162/*
163 * get irq priority.
164 *
165 * @irq irq number.
166 * @return irq priority.
167 */
168#if CONFIG_IRQ
169int irq_get_priority(uint32_t irq);
170#else
171static inline int irq_get_priority(uint32_t irq)
172{
173 return 0xFF;
174}
175#endif
176
177/*
178 * interrupt get current int priority.
179 *
180 * @return int priority.
181 */
182#if CONFIG_IRQ
184#else
185static inline uint32_t irq_get_current_priority(void)
186{
187 return 0xFF;
188}
189#endif
190
191/*
192 * irq save.
193 *
194 * @return old irq state.
195 */
196#if CONFIG_IRQ
197#define IRQ_SAVE \
198 irq_state_t irq_flags; \
199 irq_flags = arch_irq_save();
200#else
201#define IRQ_SAVE
202#endif
203
204/*
205 * irq restore.
206 *
207 * @flags old irq state.
208 */
209#if CONFIG_IRQ
210#define IRQ_RESTORE \
211 arch_irq_restore(irq_flags);
212#else
213#define IRQ_RESTORE
214#endif
215
216__END_CDECLS
217
218#endif
219
220#endif
int irq_get_priority(uint32_t irq)
uint32_t irq_mask(uint32_t mask)
uint32_t irq_get_current_priority(void)
void irq_unmask(void)
int irq_detach(uint32_t irq)
__BEGIN_CDECLS typedef int(* irq_handler)(uint32_t irq, void *arg)
Definition: irq.h:29
int irq_attach(uint32_t irq, irq_handler handler, void *arg)
int irq_dispatch(void)
void irq_initialize(uint32_t base, uint32_t intr_num)
void irq_set_priority(uint32_t irq, uint32_t priority)
void irq_disable(uint32_t irq)
void irq_enable(uint32_t irq)