1 | /* SPDX-License-Identifier: GPL-2.0 */ |
---|---|
2 | /* |
3 | * Internal header to deal with irq_desc->status which will be renamed |
4 | * to irq_desc->settings. |
5 | */ |
6 | enum { |
7 | _IRQ_DEFAULT_INIT_FLAGS = IRQ_DEFAULT_INIT_FLAGS, |
8 | _IRQ_PER_CPU = IRQ_PER_CPU, |
9 | _IRQ_LEVEL = IRQ_LEVEL, |
10 | _IRQ_NOPROBE = IRQ_NOPROBE, |
11 | _IRQ_NOREQUEST = IRQ_NOREQUEST, |
12 | _IRQ_NOTHREAD = IRQ_NOTHREAD, |
13 | _IRQ_NOAUTOEN = IRQ_NOAUTOEN, |
14 | _IRQ_NO_BALANCING = IRQ_NO_BALANCING, |
15 | _IRQ_NESTED_THREAD = IRQ_NESTED_THREAD, |
16 | _IRQ_PER_CPU_DEVID = IRQ_PER_CPU_DEVID, |
17 | _IRQ_IS_POLLED = IRQ_IS_POLLED, |
18 | _IRQ_DISABLE_UNLAZY = IRQ_DISABLE_UNLAZY, |
19 | _IRQ_HIDDEN = IRQ_HIDDEN, |
20 | _IRQ_NO_DEBUG = IRQ_NO_DEBUG, |
21 | _IRQF_MODIFY_MASK = IRQF_MODIFY_MASK, |
22 | }; |
23 | |
24 | #define IRQ_PER_CPU GOT_YOU_MORON |
25 | #define IRQ_NO_BALANCING GOT_YOU_MORON |
26 | #define IRQ_LEVEL GOT_YOU_MORON |
27 | #define IRQ_NOPROBE GOT_YOU_MORON |
28 | #define IRQ_NOREQUEST GOT_YOU_MORON |
29 | #define IRQ_NOTHREAD GOT_YOU_MORON |
30 | #define IRQ_NOAUTOEN GOT_YOU_MORON |
31 | #define IRQ_NESTED_THREAD GOT_YOU_MORON |
32 | #define IRQ_PER_CPU_DEVID GOT_YOU_MORON |
33 | #define IRQ_IS_POLLED GOT_YOU_MORON |
34 | #define IRQ_DISABLE_UNLAZY GOT_YOU_MORON |
35 | #define IRQ_HIDDEN GOT_YOU_MORON |
36 | #define IRQ_NO_DEBUG GOT_YOU_MORON |
37 | #undef IRQF_MODIFY_MASK |
38 | #define IRQF_MODIFY_MASK GOT_YOU_MORON |
39 | |
40 | static inline void |
41 | irq_settings_clr_and_set(struct irq_desc *desc, u32 clr, u32 set) |
42 | { |
43 | desc->status_use_accessors &= ~(clr & _IRQF_MODIFY_MASK); |
44 | desc->status_use_accessors |= (set & _IRQF_MODIFY_MASK); |
45 | } |
46 | |
47 | static inline bool irq_settings_is_per_cpu(struct irq_desc *desc) |
48 | { |
49 | return desc->status_use_accessors & _IRQ_PER_CPU; |
50 | } |
51 | |
52 | static inline bool irq_settings_is_per_cpu_devid(struct irq_desc *desc) |
53 | { |
54 | return desc->status_use_accessors & _IRQ_PER_CPU_DEVID; |
55 | } |
56 | |
57 | static inline void irq_settings_set_per_cpu(struct irq_desc *desc) |
58 | { |
59 | desc->status_use_accessors |= _IRQ_PER_CPU; |
60 | } |
61 | |
62 | static inline void irq_settings_set_no_balancing(struct irq_desc *desc) |
63 | { |
64 | desc->status_use_accessors |= _IRQ_NO_BALANCING; |
65 | } |
66 | |
67 | static inline bool irq_settings_has_no_balance_set(struct irq_desc *desc) |
68 | { |
69 | return desc->status_use_accessors & _IRQ_NO_BALANCING; |
70 | } |
71 | |
72 | static inline u32 irq_settings_get_trigger_mask(struct irq_desc *desc) |
73 | { |
74 | return desc->status_use_accessors & IRQ_TYPE_SENSE_MASK; |
75 | } |
76 | |
77 | static inline void |
78 | irq_settings_set_trigger_mask(struct irq_desc *desc, u32 mask) |
79 | { |
80 | desc->status_use_accessors &= ~IRQ_TYPE_SENSE_MASK; |
81 | desc->status_use_accessors |= mask & IRQ_TYPE_SENSE_MASK; |
82 | } |
83 | |
84 | static inline bool irq_settings_is_level(struct irq_desc *desc) |
85 | { |
86 | return desc->status_use_accessors & _IRQ_LEVEL; |
87 | } |
88 | |
89 | static inline void irq_settings_clr_level(struct irq_desc *desc) |
90 | { |
91 | desc->status_use_accessors &= ~_IRQ_LEVEL; |
92 | } |
93 | |
94 | static inline void irq_settings_set_level(struct irq_desc *desc) |
95 | { |
96 | desc->status_use_accessors |= _IRQ_LEVEL; |
97 | } |
98 | |
99 | static inline bool irq_settings_can_request(struct irq_desc *desc) |
100 | { |
101 | return !(desc->status_use_accessors & _IRQ_NOREQUEST); |
102 | } |
103 | |
104 | static inline void irq_settings_clr_norequest(struct irq_desc *desc) |
105 | { |
106 | desc->status_use_accessors &= ~_IRQ_NOREQUEST; |
107 | } |
108 | |
109 | static inline void irq_settings_set_norequest(struct irq_desc *desc) |
110 | { |
111 | desc->status_use_accessors |= _IRQ_NOREQUEST; |
112 | } |
113 | |
114 | static inline bool irq_settings_can_thread(struct irq_desc *desc) |
115 | { |
116 | return !(desc->status_use_accessors & _IRQ_NOTHREAD); |
117 | } |
118 | |
119 | static inline void irq_settings_clr_nothread(struct irq_desc *desc) |
120 | { |
121 | desc->status_use_accessors &= ~_IRQ_NOTHREAD; |
122 | } |
123 | |
124 | static inline void irq_settings_set_nothread(struct irq_desc *desc) |
125 | { |
126 | desc->status_use_accessors |= _IRQ_NOTHREAD; |
127 | } |
128 | |
129 | static inline bool irq_settings_can_probe(struct irq_desc *desc) |
130 | { |
131 | return !(desc->status_use_accessors & _IRQ_NOPROBE); |
132 | } |
133 | |
134 | static inline void irq_settings_clr_noprobe(struct irq_desc *desc) |
135 | { |
136 | desc->status_use_accessors &= ~_IRQ_NOPROBE; |
137 | } |
138 | |
139 | static inline void irq_settings_set_noprobe(struct irq_desc *desc) |
140 | { |
141 | desc->status_use_accessors |= _IRQ_NOPROBE; |
142 | } |
143 | |
144 | static inline bool irq_settings_can_autoenable(struct irq_desc *desc) |
145 | { |
146 | return !(desc->status_use_accessors & _IRQ_NOAUTOEN); |
147 | } |
148 | |
149 | static inline bool irq_settings_is_nested_thread(struct irq_desc *desc) |
150 | { |
151 | return desc->status_use_accessors & _IRQ_NESTED_THREAD; |
152 | } |
153 | |
154 | static inline bool irq_settings_is_polled(struct irq_desc *desc) |
155 | { |
156 | return desc->status_use_accessors & _IRQ_IS_POLLED; |
157 | } |
158 | |
159 | static inline bool irq_settings_disable_unlazy(struct irq_desc *desc) |
160 | { |
161 | return desc->status_use_accessors & _IRQ_DISABLE_UNLAZY; |
162 | } |
163 | |
164 | static inline void irq_settings_clr_disable_unlazy(struct irq_desc *desc) |
165 | { |
166 | desc->status_use_accessors &= ~_IRQ_DISABLE_UNLAZY; |
167 | } |
168 | |
169 | static inline bool irq_settings_is_hidden(struct irq_desc *desc) |
170 | { |
171 | return desc->status_use_accessors & _IRQ_HIDDEN; |
172 | } |
173 | |
174 | static inline void irq_settings_set_no_debug(struct irq_desc *desc) |
175 | { |
176 | desc->status_use_accessors |= _IRQ_NO_DEBUG; |
177 | } |
178 | |
179 | static inline bool irq_settings_no_debug(struct irq_desc *desc) |
180 | { |
181 | return desc->status_use_accessors & _IRQ_NO_DEBUG; |
182 | } |
183 |
Definitions
- irq_settings_clr_and_set
- irq_settings_is_per_cpu
- irq_settings_is_per_cpu_devid
- irq_settings_set_per_cpu
- irq_settings_set_no_balancing
- irq_settings_has_no_balance_set
- irq_settings_get_trigger_mask
- irq_settings_set_trigger_mask
- irq_settings_is_level
- irq_settings_clr_level
- irq_settings_set_level
- irq_settings_can_request
- irq_settings_clr_norequest
- irq_settings_set_norequest
- irq_settings_can_thread
- irq_settings_clr_nothread
- irq_settings_set_nothread
- irq_settings_can_probe
- irq_settings_clr_noprobe
- irq_settings_set_noprobe
- irq_settings_can_autoenable
- irq_settings_is_nested_thread
- irq_settings_is_polled
- irq_settings_disable_unlazy
- irq_settings_clr_disable_unlazy
- irq_settings_is_hidden
- irq_settings_set_no_debug
Improve your Profiling and Debugging skills
Find out more