1 | /* |
2 | * Support for virtual IRQ subgroups debugfs mapping. |
3 | * |
4 | * Copyright (C) 2010 Paul Mundt |
5 | * |
6 | * Modelled after arch/powerpc/kernel/irq.c. |
7 | * |
8 | * This file is subject to the terms and conditions of the GNU General Public |
9 | * License. See the file "COPYING" in the main directory of this archive |
10 | * for more details. |
11 | */ |
12 | #include <linux/seq_file.h> |
13 | #include <linux/fs.h> |
14 | #include <linux/init.h> |
15 | #include <linux/irq.h> |
16 | #include <linux/debugfs.h> |
17 | #include "internals.h" |
18 | |
19 | static int intc_irq_xlate_show(struct seq_file *m, void *priv) |
20 | { |
21 | int i; |
22 | |
23 | seq_printf(m, fmt: "%-5s %-7s %-15s\n" , "irq" , "enum" , "chip name" ); |
24 | |
25 | for (i = 1; i < nr_irqs; i++) { |
26 | struct intc_map_entry *entry = intc_irq_xlate_get(irq: i); |
27 | struct intc_desc_int *desc = entry->desc; |
28 | |
29 | if (!desc) |
30 | continue; |
31 | |
32 | seq_printf(m, fmt: "%5d " , i); |
33 | seq_printf(m, fmt: "0x%05x " , entry->enum_id); |
34 | seq_printf(m, fmt: "%-15s\n" , desc->chip.name); |
35 | } |
36 | |
37 | return 0; |
38 | } |
39 | |
40 | DEFINE_SHOW_ATTRIBUTE(intc_irq_xlate); |
41 | |
42 | static int __init intc_irq_xlate_init(void) |
43 | { |
44 | /* |
45 | * XXX.. use arch_debugfs_dir here when all of the intc users are |
46 | * converted. |
47 | */ |
48 | if (debugfs_create_file(name: "intc_irq_xlate" , S_IRUGO, NULL, NULL, |
49 | fops: &intc_irq_xlate_fops) == NULL) |
50 | return -ENOMEM; |
51 | |
52 | return 0; |
53 | } |
54 | fs_initcall(intc_irq_xlate_init); |
55 | |