hc
2024-09-20 cf4ce59b3b70238352c7f1729f0f7223214828ad
kernel/kernel/irq/settings.h
....@@ -17,6 +17,8 @@
1717 _IRQ_PER_CPU_DEVID = IRQ_PER_CPU_DEVID,
1818 _IRQ_IS_POLLED = IRQ_IS_POLLED,
1919 _IRQ_DISABLE_UNLAZY = IRQ_DISABLE_UNLAZY,
20
+ _IRQ_HIDDEN = IRQ_HIDDEN,
21
+ _IRQ_RAW = IRQ_RAW,
2022 _IRQF_MODIFY_MASK = IRQF_MODIFY_MASK,
2123 };
2224
....@@ -31,14 +33,22 @@
3133 #define IRQ_PER_CPU_DEVID GOT_YOU_MORON
3234 #define IRQ_IS_POLLED GOT_YOU_MORON
3335 #define IRQ_DISABLE_UNLAZY GOT_YOU_MORON
36
+#define IRQ_HIDDEN GOT_YOU_MORON
37
+#define IRQ_RAW GOT_YOU_MORON
3438 #undef IRQF_MODIFY_MASK
3539 #define IRQF_MODIFY_MASK GOT_YOU_MORON
3640
3741 static inline void
42
+__irq_settings_clr_and_set(struct irq_desc *desc, u32 clr, u32 set, u32 mask)
43
+{
44
+ desc->status_use_accessors &= ~(clr & mask);
45
+ desc->status_use_accessors |= (set & mask);
46
+}
47
+
48
+static inline void
3849 irq_settings_clr_and_set(struct irq_desc *desc, u32 clr, u32 set)
3950 {
40
- desc->status_use_accessors &= ~(clr & _IRQF_MODIFY_MASK);
41
- desc->status_use_accessors |= (set & _IRQF_MODIFY_MASK);
51
+ __irq_settings_clr_and_set(desc, clr, set, _IRQF_MODIFY_MASK);
4252 }
4353
4454 static inline bool irq_settings_is_per_cpu(struct irq_desc *desc)
....@@ -167,3 +177,21 @@
167177 {
168178 desc->status_use_accessors &= ~_IRQ_DISABLE_UNLAZY;
169179 }
180
+
181
+static inline bool irq_settings_is_hidden(struct irq_desc *desc)
182
+{
183
+ return desc->status_use_accessors & _IRQ_HIDDEN;
184
+}
185
+
186
+static inline bool irq_settings_is_raw(struct irq_desc *desc)
187
+{
188
+ if (IS_ENABLED(CONFIG_ARCH_WANTS_IRQ_RAW))
189
+ return desc->status_use_accessors & _IRQ_RAW;
190
+
191
+ /*
192
+ * Using IRQ_RAW on architectures that don't expect it is
193
+ * likely to be wrong.
194
+ */
195
+ WARN_ON_ONCE(1);
196
+ return false;
197
+}