.. | .. |
---|
17 | 17 | _IRQ_PER_CPU_DEVID = IRQ_PER_CPU_DEVID, |
---|
18 | 18 | _IRQ_IS_POLLED = IRQ_IS_POLLED, |
---|
19 | 19 | _IRQ_DISABLE_UNLAZY = IRQ_DISABLE_UNLAZY, |
---|
| 20 | + _IRQ_HIDDEN = IRQ_HIDDEN, |
---|
| 21 | + _IRQ_RAW = IRQ_RAW, |
---|
20 | 22 | _IRQF_MODIFY_MASK = IRQF_MODIFY_MASK, |
---|
21 | 23 | }; |
---|
22 | 24 | |
---|
.. | .. |
---|
31 | 33 | #define IRQ_PER_CPU_DEVID GOT_YOU_MORON |
---|
32 | 34 | #define IRQ_IS_POLLED GOT_YOU_MORON |
---|
33 | 35 | #define IRQ_DISABLE_UNLAZY GOT_YOU_MORON |
---|
| 36 | +#define IRQ_HIDDEN GOT_YOU_MORON |
---|
| 37 | +#define IRQ_RAW GOT_YOU_MORON |
---|
34 | 38 | #undef IRQF_MODIFY_MASK |
---|
35 | 39 | #define IRQF_MODIFY_MASK GOT_YOU_MORON |
---|
36 | 40 | |
---|
37 | 41 | 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 |
---|
38 | 49 | irq_settings_clr_and_set(struct irq_desc *desc, u32 clr, u32 set) |
---|
39 | 50 | { |
---|
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); |
---|
42 | 52 | } |
---|
43 | 53 | |
---|
44 | 54 | static inline bool irq_settings_is_per_cpu(struct irq_desc *desc) |
---|
.. | .. |
---|
167 | 177 | { |
---|
168 | 178 | desc->status_use_accessors &= ~_IRQ_DISABLE_UNLAZY; |
---|
169 | 179 | } |
---|
| 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 | +} |
---|