root/include/linux/irqchip/irq-madera.h

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

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. madera_get_irq_mapping
  2. madera_request_irq
  3. madera_free_irq
  4. madera_set_irq_wake

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 /*
   3  * Interrupt support for Cirrus Logic Madera codecs
   4  *
   5  * Copyright (C) 2016-2018 Cirrus Logic, Inc. and
   6  *                         Cirrus Logic International Semiconductor Ltd.
   7  */
   8 
   9 #ifndef IRQCHIP_MADERA_H
  10 #define IRQCHIP_MADERA_H
  11 
  12 #include <linux/interrupt.h>
  13 #include <linux/mfd/madera/core.h>
  14 
  15 #define MADERA_IRQ_FLL1_LOCK            0
  16 #define MADERA_IRQ_FLL2_LOCK            1
  17 #define MADERA_IRQ_FLL3_LOCK            2
  18 #define MADERA_IRQ_FLLAO_LOCK           3
  19 #define MADERA_IRQ_CLK_SYS_ERR          4
  20 #define MADERA_IRQ_CLK_ASYNC_ERR        5
  21 #define MADERA_IRQ_CLK_DSP_ERR          6
  22 #define MADERA_IRQ_HPDET                7
  23 #define MADERA_IRQ_MICDET1              8
  24 #define MADERA_IRQ_MICDET2              9
  25 #define MADERA_IRQ_JD1_RISE             10
  26 #define MADERA_IRQ_JD1_FALL             11
  27 #define MADERA_IRQ_JD2_RISE             12
  28 #define MADERA_IRQ_JD2_FALL             13
  29 #define MADERA_IRQ_MICD_CLAMP_RISE      14
  30 #define MADERA_IRQ_MICD_CLAMP_FALL      15
  31 #define MADERA_IRQ_DRC2_SIG_DET         16
  32 #define MADERA_IRQ_DRC1_SIG_DET         17
  33 #define MADERA_IRQ_ASRC1_IN1_LOCK       18
  34 #define MADERA_IRQ_ASRC1_IN2_LOCK       19
  35 #define MADERA_IRQ_ASRC2_IN1_LOCK       20
  36 #define MADERA_IRQ_ASRC2_IN2_LOCK       21
  37 #define MADERA_IRQ_DSP_IRQ1             22
  38 #define MADERA_IRQ_DSP_IRQ2             23
  39 #define MADERA_IRQ_DSP_IRQ3             24
  40 #define MADERA_IRQ_DSP_IRQ4             25
  41 #define MADERA_IRQ_DSP_IRQ5             26
  42 #define MADERA_IRQ_DSP_IRQ6             27
  43 #define MADERA_IRQ_DSP_IRQ7             28
  44 #define MADERA_IRQ_DSP_IRQ8             29
  45 #define MADERA_IRQ_DSP_IRQ9             30
  46 #define MADERA_IRQ_DSP_IRQ10            31
  47 #define MADERA_IRQ_DSP_IRQ11            32
  48 #define MADERA_IRQ_DSP_IRQ12            33
  49 #define MADERA_IRQ_DSP_IRQ13            34
  50 #define MADERA_IRQ_DSP_IRQ14            35
  51 #define MADERA_IRQ_DSP_IRQ15            36
  52 #define MADERA_IRQ_DSP_IRQ16            37
  53 #define MADERA_IRQ_HP1L_SC              38
  54 #define MADERA_IRQ_HP1R_SC              39
  55 #define MADERA_IRQ_HP2L_SC              40
  56 #define MADERA_IRQ_HP2R_SC              41
  57 #define MADERA_IRQ_HP3L_SC              42
  58 #define MADERA_IRQ_HP3R_SC              43
  59 #define MADERA_IRQ_SPKOUTL_SC           44
  60 #define MADERA_IRQ_SPKOUTR_SC           45
  61 #define MADERA_IRQ_HP1L_ENABLE_DONE     46
  62 #define MADERA_IRQ_HP1R_ENABLE_DONE     47
  63 #define MADERA_IRQ_HP2L_ENABLE_DONE     48
  64 #define MADERA_IRQ_HP2R_ENABLE_DONE     49
  65 #define MADERA_IRQ_HP3L_ENABLE_DONE     50
  66 #define MADERA_IRQ_HP3R_ENABLE_DONE     51
  67 #define MADERA_IRQ_SPKOUTL_ENABLE_DONE  52
  68 #define MADERA_IRQ_SPKOUTR_ENABLE_DONE  53
  69 #define MADERA_IRQ_SPK_SHUTDOWN         54
  70 #define MADERA_IRQ_SPK_OVERHEAT         55
  71 #define MADERA_IRQ_SPK_OVERHEAT_WARN    56
  72 #define MADERA_IRQ_GPIO1                57
  73 #define MADERA_IRQ_GPIO2                58
  74 #define MADERA_IRQ_GPIO3                59
  75 #define MADERA_IRQ_GPIO4                60
  76 #define MADERA_IRQ_GPIO5                61
  77 #define MADERA_IRQ_GPIO6                62
  78 #define MADERA_IRQ_GPIO7                63
  79 #define MADERA_IRQ_GPIO8                64
  80 #define MADERA_IRQ_DSP1_BUS_ERR         65
  81 #define MADERA_IRQ_DSP2_BUS_ERR         66
  82 #define MADERA_IRQ_DSP3_BUS_ERR         67
  83 #define MADERA_IRQ_DSP4_BUS_ERR         68
  84 #define MADERA_IRQ_DSP5_BUS_ERR         69
  85 #define MADERA_IRQ_DSP6_BUS_ERR         70
  86 #define MADERA_IRQ_DSP7_BUS_ERR         71
  87 
  88 #define MADERA_NUM_IRQ                  72
  89 
  90 /*
  91  * These wrapper functions are for use by other child drivers of the
  92  * same parent MFD.
  93  */
  94 static inline int madera_get_irq_mapping(struct madera *madera, int irq)
  95 {
  96         if (!madera->irq_dev)
  97                 return -ENODEV;
  98 
  99         return regmap_irq_get_virq(madera->irq_data, irq);
 100 }
 101 
 102 static inline int madera_request_irq(struct madera *madera, int irq,
 103                                      const char *name,
 104                                      irq_handler_t handler, void *data)
 105 {
 106         irq = madera_get_irq_mapping(madera, irq);
 107         if (irq < 0)
 108                 return irq;
 109 
 110         return request_threaded_irq(irq, NULL, handler, IRQF_ONESHOT, name,
 111                                     data);
 112 }
 113 
 114 static inline void madera_free_irq(struct madera *madera, int irq, void *data)
 115 {
 116         irq = madera_get_irq_mapping(madera, irq);
 117         if (irq < 0)
 118                 return;
 119 
 120         free_irq(irq, data);
 121 }
 122 
 123 static inline int madera_set_irq_wake(struct madera *madera, int irq, int on)
 124 {
 125         irq = madera_get_irq_mapping(madera, irq);
 126         if (irq < 0)
 127                 return irq;
 128 
 129         return irq_set_irq_wake(irq, on);
 130 }
 131 
 132 #endif

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