root/include/linux/of_irq.h

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

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. of_irq_parse_oldworld
  2. of_irq_count
  3. of_irq_get
  4. of_irq_get_byname
  5. of_irq_to_resource_table
  6. of_irq_find_parent
  7. of_msi_get_domain
  8. of_msi_map_get_device_domain
  9. of_msi_configure
  10. of_msi_map_rid
  11. irq_of_parse_and_map

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #ifndef __OF_IRQ_H
   3 #define __OF_IRQ_H
   4 
   5 #include <linux/types.h>
   6 #include <linux/errno.h>
   7 #include <linux/irq.h>
   8 #include <linux/irqdomain.h>
   9 #include <linux/ioport.h>
  10 #include <linux/of.h>
  11 
  12 typedef int (*of_irq_init_cb_t)(struct device_node *, struct device_node *);
  13 
  14 /*
  15  * Workarounds only applied to 32bit powermac machines
  16  */
  17 #define OF_IMAP_OLDWORLD_MAC    0x00000001
  18 #define OF_IMAP_NO_PHANDLE      0x00000002
  19 
  20 #if defined(CONFIG_PPC32) && defined(CONFIG_PPC_PMAC)
  21 extern unsigned int of_irq_workarounds;
  22 extern struct device_node *of_irq_dflt_pic;
  23 extern int of_irq_parse_oldworld(struct device_node *device, int index,
  24                                struct of_phandle_args *out_irq);
  25 #else /* CONFIG_PPC32 && CONFIG_PPC_PMAC */
  26 #define of_irq_workarounds (0)
  27 #define of_irq_dflt_pic (NULL)
  28 static inline int of_irq_parse_oldworld(struct device_node *device, int index,
  29                                       struct of_phandle_args *out_irq)
  30 {
  31         return -EINVAL;
  32 }
  33 #endif /* CONFIG_PPC32 && CONFIG_PPC_PMAC */
  34 
  35 extern int of_irq_parse_raw(const __be32 *addr, struct of_phandle_args *out_irq);
  36 extern int of_irq_parse_one(struct device_node *device, int index,
  37                           struct of_phandle_args *out_irq);
  38 extern unsigned int irq_create_of_mapping(struct of_phandle_args *irq_data);
  39 extern int of_irq_to_resource(struct device_node *dev, int index,
  40                               struct resource *r);
  41 
  42 extern void of_irq_init(const struct of_device_id *matches);
  43 
  44 #ifdef CONFIG_OF_IRQ
  45 extern int of_irq_count(struct device_node *dev);
  46 extern int of_irq_get(struct device_node *dev, int index);
  47 extern int of_irq_get_byname(struct device_node *dev, const char *name);
  48 extern int of_irq_to_resource_table(struct device_node *dev,
  49                 struct resource *res, int nr_irqs);
  50 extern struct device_node *of_irq_find_parent(struct device_node *child);
  51 extern struct irq_domain *of_msi_get_domain(struct device *dev,
  52                                             struct device_node *np,
  53                                             enum irq_domain_bus_token token);
  54 extern struct irq_domain *of_msi_map_get_device_domain(struct device *dev,
  55                                                        u32 rid);
  56 extern void of_msi_configure(struct device *dev, struct device_node *np);
  57 u32 of_msi_map_rid(struct device *dev, struct device_node *msi_np, u32 rid_in);
  58 #else
  59 static inline int of_irq_count(struct device_node *dev)
  60 {
  61         return 0;
  62 }
  63 static inline int of_irq_get(struct device_node *dev, int index)
  64 {
  65         return 0;
  66 }
  67 static inline int of_irq_get_byname(struct device_node *dev, const char *name)
  68 {
  69         return 0;
  70 }
  71 static inline int of_irq_to_resource_table(struct device_node *dev,
  72                                            struct resource *res, int nr_irqs)
  73 {
  74         return 0;
  75 }
  76 static inline void *of_irq_find_parent(struct device_node *child)
  77 {
  78         return NULL;
  79 }
  80 
  81 static inline struct irq_domain *of_msi_get_domain(struct device *dev,
  82                                                    struct device_node *np,
  83                                                    enum irq_domain_bus_token token)
  84 {
  85         return NULL;
  86 }
  87 static inline struct irq_domain *of_msi_map_get_device_domain(struct device *dev,
  88                                                               u32 rid)
  89 {
  90         return NULL;
  91 }
  92 static inline void of_msi_configure(struct device *dev, struct device_node *np)
  93 {
  94 }
  95 static inline u32 of_msi_map_rid(struct device *dev,
  96                                  struct device_node *msi_np, u32 rid_in)
  97 {
  98         return rid_in;
  99 }
 100 #endif
 101 
 102 #if defined(CONFIG_OF_IRQ) || defined(CONFIG_SPARC)
 103 /*
 104  * irq_of_parse_and_map() is used by all OF enabled platforms; but SPARC
 105  * implements it differently.  However, the prototype is the same for all,
 106  * so declare it here regardless of the CONFIG_OF_IRQ setting.
 107  */
 108 extern unsigned int irq_of_parse_and_map(struct device_node *node, int index);
 109 
 110 #else /* !CONFIG_OF && !CONFIG_SPARC */
 111 static inline unsigned int irq_of_parse_and_map(struct device_node *dev,
 112                                                 int index)
 113 {
 114         return 0;
 115 }
 116 #endif /* !CONFIG_OF */
 117 
 118 #endif /* __OF_IRQ_H */

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