LCOV - code coverage report
Current view: top level - kernel/irq - settings.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 9 26 34.6 %
Date: 2023-08-24 13:40:31 Functions: 0 0 -

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

Generated by: LCOV version 1.14