root/kernel/irq/settings.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. irq_settings_clr_and_set
  2. irq_settings_is_per_cpu
  3. irq_settings_is_per_cpu_devid
  4. irq_settings_set_per_cpu
  5. irq_settings_set_no_balancing
  6. irq_settings_has_no_balance_set
  7. irq_settings_get_trigger_mask
  8. irq_settings_set_trigger_mask
  9. irq_settings_is_level
  10. irq_settings_clr_level
  11. irq_settings_set_level
  12. irq_settings_can_request
  13. irq_settings_clr_norequest
  14. irq_settings_set_norequest
  15. irq_settings_can_thread
  16. irq_settings_clr_nothread
  17. irq_settings_set_nothread
  18. irq_settings_can_probe
  19. irq_settings_clr_noprobe
  20. irq_settings_set_noprobe
  21. irq_settings_can_move_pcntxt
  22. irq_settings_can_autoenable
  23. irq_settings_is_nested_thread
  24. irq_settings_is_polled
  25. irq_settings_disable_unlazy
  26. irq_settings_clr_disable_unlazy

   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_MOVE_PCNTXT        = IRQ_MOVE_PCNTXT,
  15         _IRQ_NO_BALANCING       = IRQ_NO_BALANCING,
  16         _IRQ_NESTED_THREAD      = IRQ_NESTED_THREAD,
  17         _IRQ_PER_CPU_DEVID      = IRQ_PER_CPU_DEVID,
  18         _IRQ_IS_POLLED          = IRQ_IS_POLLED,
  19         _IRQ_DISABLE_UNLAZY     = IRQ_DISABLE_UNLAZY,
  20         _IRQF_MODIFY_MASK       = IRQF_MODIFY_MASK,
  21 };
  22 
  23 #define IRQ_PER_CPU             GOT_YOU_MORON
  24 #define IRQ_NO_BALANCING        GOT_YOU_MORON
  25 #define IRQ_LEVEL               GOT_YOU_MORON
  26 #define IRQ_NOPROBE             GOT_YOU_MORON
  27 #define IRQ_NOREQUEST           GOT_YOU_MORON
  28 #define IRQ_NOTHREAD            GOT_YOU_MORON
  29 #define IRQ_NOAUTOEN            GOT_YOU_MORON
  30 #define IRQ_NESTED_THREAD       GOT_YOU_MORON
  31 #define IRQ_PER_CPU_DEVID       GOT_YOU_MORON
  32 #define IRQ_IS_POLLED           GOT_YOU_MORON
  33 #define IRQ_DISABLE_UNLAZY      GOT_YOU_MORON
  34 #undef IRQF_MODIFY_MASK
  35 #define IRQF_MODIFY_MASK        GOT_YOU_MORON
  36 
  37 static inline void
  38 irq_settings_clr_and_set(struct irq_desc *desc, u32 clr, u32 set)
  39 {
  40         desc->status_use_accessors &= ~(clr & _IRQF_MODIFY_MASK);
  41         desc->status_use_accessors |= (set & _IRQF_MODIFY_MASK);
  42 }
  43 
  44 static inline bool irq_settings_is_per_cpu(struct irq_desc *desc)
  45 {
  46         return desc->status_use_accessors & _IRQ_PER_CPU;
  47 }
  48 
  49 static inline bool irq_settings_is_per_cpu_devid(struct irq_desc *desc)
  50 {
  51         return desc->status_use_accessors & _IRQ_PER_CPU_DEVID;
  52 }
  53 
  54 static inline void irq_settings_set_per_cpu(struct irq_desc *desc)
  55 {
  56         desc->status_use_accessors |= _IRQ_PER_CPU;
  57 }
  58 
  59 static inline void irq_settings_set_no_balancing(struct irq_desc *desc)
  60 {
  61         desc->status_use_accessors |= _IRQ_NO_BALANCING;
  62 }
  63 
  64 static inline bool irq_settings_has_no_balance_set(struct irq_desc *desc)
  65 {
  66         return desc->status_use_accessors & _IRQ_NO_BALANCING;
  67 }
  68 
  69 static inline u32 irq_settings_get_trigger_mask(struct irq_desc *desc)
  70 {
  71         return desc->status_use_accessors & IRQ_TYPE_SENSE_MASK;
  72 }
  73 
  74 static inline void
  75 irq_settings_set_trigger_mask(struct irq_desc *desc, u32 mask)
  76 {
  77         desc->status_use_accessors &= ~IRQ_TYPE_SENSE_MASK;
  78         desc->status_use_accessors |= mask & IRQ_TYPE_SENSE_MASK;
  79 }
  80 
  81 static inline bool irq_settings_is_level(struct irq_desc *desc)
  82 {
  83         return desc->status_use_accessors & _IRQ_LEVEL;
  84 }
  85 
  86 static inline void irq_settings_clr_level(struct irq_desc *desc)
  87 {
  88         desc->status_use_accessors &= ~_IRQ_LEVEL;
  89 }
  90 
  91 static inline void irq_settings_set_level(struct irq_desc *desc)
  92 {
  93         desc->status_use_accessors |= _IRQ_LEVEL;
  94 }
  95 
  96 static inline bool irq_settings_can_request(struct irq_desc *desc)
  97 {
  98         return !(desc->status_use_accessors & _IRQ_NOREQUEST);
  99 }
 100 
 101 static inline void irq_settings_clr_norequest(struct irq_desc *desc)
 102 {
 103         desc->status_use_accessors &= ~_IRQ_NOREQUEST;
 104 }
 105 
 106 static inline void irq_settings_set_norequest(struct irq_desc *desc)
 107 {
 108         desc->status_use_accessors |= _IRQ_NOREQUEST;
 109 }
 110 
 111 static inline bool irq_settings_can_thread(struct irq_desc *desc)
 112 {
 113         return !(desc->status_use_accessors & _IRQ_NOTHREAD);
 114 }
 115 
 116 static inline void irq_settings_clr_nothread(struct irq_desc *desc)
 117 {
 118         desc->status_use_accessors &= ~_IRQ_NOTHREAD;
 119 }
 120 
 121 static inline void irq_settings_set_nothread(struct irq_desc *desc)
 122 {
 123         desc->status_use_accessors |= _IRQ_NOTHREAD;
 124 }
 125 
 126 static inline bool irq_settings_can_probe(struct irq_desc *desc)
 127 {
 128         return !(desc->status_use_accessors & _IRQ_NOPROBE);
 129 }
 130 
 131 static inline void irq_settings_clr_noprobe(struct irq_desc *desc)
 132 {
 133         desc->status_use_accessors &= ~_IRQ_NOPROBE;
 134 }
 135 
 136 static inline void irq_settings_set_noprobe(struct irq_desc *desc)
 137 {
 138         desc->status_use_accessors |= _IRQ_NOPROBE;
 139 }
 140 
 141 static inline bool irq_settings_can_move_pcntxt(struct irq_desc *desc)
 142 {
 143         return desc->status_use_accessors & _IRQ_MOVE_PCNTXT;
 144 }
 145 
 146 static inline bool irq_settings_can_autoenable(struct irq_desc *desc)
 147 {
 148         return !(desc->status_use_accessors & _IRQ_NOAUTOEN);
 149 }
 150 
 151 static inline bool irq_settings_is_nested_thread(struct irq_desc *desc)
 152 {
 153         return desc->status_use_accessors & _IRQ_NESTED_THREAD;
 154 }
 155 
 156 static inline bool irq_settings_is_polled(struct irq_desc *desc)
 157 {
 158         return desc->status_use_accessors & _IRQ_IS_POLLED;
 159 }
 160 
 161 static inline bool irq_settings_disable_unlazy(struct irq_desc *desc)
 162 {
 163         return desc->status_use_accessors & _IRQ_DISABLE_UNLAZY;
 164 }
 165 
 166 static inline void irq_settings_clr_disable_unlazy(struct irq_desc *desc)
 167 {
 168         desc->status_use_accessors &= ~_IRQ_DISABLE_UNLAZY;
 169 }

/* [<][>][^][v][top][bottom][index][help] */