summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/linux/irqdomain.h6
-rw-r--r--kernel/irq/debugfs.c2
-rw-r--r--kernel/irq/irqdomain.c2
3 files changed, 9 insertions, 1 deletions
diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h
index 81e4889ca6dd..1fb50438a868 100644
--- a/include/linux/irqdomain.h
+++ b/include/linux/irqdomain.h
@@ -40,6 +40,7 @@ struct of_device_id;
40struct irq_chip; 40struct irq_chip;
41struct irq_data; 41struct irq_data;
42struct cpumask; 42struct cpumask;
43struct seq_file;
43 44
44/* Number of irqs reserved for a legacy isa controller */ 45/* Number of irqs reserved for a legacy isa controller */
45#define NUM_ISA_INTERRUPTS 16 46#define NUM_ISA_INTERRUPTS 16
@@ -104,7 +105,6 @@ struct irq_domain_ops {
104 int (*xlate)(struct irq_domain *d, struct device_node *node, 105 int (*xlate)(struct irq_domain *d, struct device_node *node,
105 const u32 *intspec, unsigned int intsize, 106 const u32 *intspec, unsigned int intsize,
106 unsigned long *out_hwirq, unsigned int *out_type); 107 unsigned long *out_hwirq, unsigned int *out_type);
107
108#ifdef CONFIG_IRQ_DOMAIN_HIERARCHY 108#ifdef CONFIG_IRQ_DOMAIN_HIERARCHY
109 /* extended V2 interfaces to support hierarchy irq_domains */ 109 /* extended V2 interfaces to support hierarchy irq_domains */
110 int (*alloc)(struct irq_domain *d, unsigned int virq, 110 int (*alloc)(struct irq_domain *d, unsigned int virq,
@@ -116,6 +116,10 @@ struct irq_domain_ops {
116 int (*translate)(struct irq_domain *d, struct irq_fwspec *fwspec, 116 int (*translate)(struct irq_domain *d, struct irq_fwspec *fwspec,
117 unsigned long *out_hwirq, unsigned int *out_type); 117 unsigned long *out_hwirq, unsigned int *out_type);
118#endif 118#endif
119#ifdef CONFIG_GENERIC_IRQ_DEBUGFS
120 void (*debug_show)(struct seq_file *m, struct irq_domain *d,
121 struct irq_data *irqd, int ind);
122#endif
119}; 123};
120 124
121extern struct irq_domain_ops irq_generic_chip_ops; 125extern struct irq_domain_ops irq_generic_chip_ops;
diff --git a/kernel/irq/debugfs.c b/kernel/irq/debugfs.c
index b7d1023b9b22..7f608ac39653 100644
--- a/kernel/irq/debugfs.c
+++ b/kernel/irq/debugfs.c
@@ -81,6 +81,8 @@ irq_debug_show_data(struct seq_file *m, struct irq_data *data, int ind)
81 data->domain ? data->domain->name : ""); 81 data->domain ? data->domain->name : "");
82 seq_printf(m, "%*shwirq: 0x%lx\n", ind + 1, "", data->hwirq); 82 seq_printf(m, "%*shwirq: 0x%lx\n", ind + 1, "", data->hwirq);
83 irq_debug_show_chip(m, data, ind + 1); 83 irq_debug_show_chip(m, data, ind + 1);
84 if (data->domain && data->domain->ops && data->domain->ops->debug_show)
85 data->domain->ops->debug_show(m, NULL, data, ind + 1);
84#ifdef CONFIG_IRQ_DOMAIN_HIERARCHY 86#ifdef CONFIG_IRQ_DOMAIN_HIERARCHY
85 if (!data->parent_data) 87 if (!data->parent_data)
86 return; 88 return;
diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c
index e84b7056bb08..1a75a00ee01f 100644
--- a/kernel/irq/irqdomain.c
+++ b/kernel/irq/irqdomain.c
@@ -1810,6 +1810,8 @@ irq_domain_debug_show_one(struct seq_file *m, struct irq_domain *d, int ind)
1810 d->revmap_size + d->revmap_direct_max_irq); 1810 d->revmap_size + d->revmap_direct_max_irq);
1811 seq_printf(m, "%*smapped: %u\n", ind + 1, "", d->mapcount); 1811 seq_printf(m, "%*smapped: %u\n", ind + 1, "", d->mapcount);
1812 seq_printf(m, "%*sflags: 0x%08x\n", ind +1 , "", d->flags); 1812 seq_printf(m, "%*sflags: 0x%08x\n", ind +1 , "", d->flags);
1813 if (d->ops && d->ops->debug_show)
1814 d->ops->debug_show(m, d, NULL, ind + 1);
1813#ifdef CONFIG_IRQ_DOMAIN_HIERARCHY 1815#ifdef CONFIG_IRQ_DOMAIN_HIERARCHY
1814 if (!d->parent) 1816 if (!d->parent)
1815 return; 1817 return;