Commit | Line | Data |
---|---|---|
e3873444 GL |
1 | /* |
2 | * Derived from arch/i386/kernel/irq.c | |
3 | * Copyright (C) 1992 Linus Torvalds | |
4 | * Adapted from arch/i386 by Gary Thomas | |
5 | * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org) | |
6 | * Updated and modified by Cort Dougan <cort@fsmlabs.com> | |
7 | * Copyright (C) 1996-2001 Cort Dougan | |
8 | * Adapted for Power Macintosh by Paul Mackerras | |
9 | * Copyright (C) 1996 Paul Mackerras (paulus@cs.anu.edu.au) | |
10 | * | |
11 | * This program is free software; you can redistribute it and/or | |
12 | * modify it under the terms of the GNU General Public License | |
13 | * as published by the Free Software Foundation; either version | |
14 | * 2 of the License, or (at your option) any later version. | |
15 | * | |
16 | * This file contains the code used to make IRQ descriptions in the | |
17 | * device tree to actual irq numbers on an interrupt controller | |
18 | * driver. | |
19 | */ | |
20 | ||
21 | #include <linux/errno.h> | |
22 | #include <linux/module.h> | |
23 | #include <linux/of.h> | |
24 | #include <linux/of_irq.h> | |
25 | #include <linux/string.h> | |
26 | ||
27 | /** | |
28 | * irq_of_parse_and_map - Parse and map an interrupt into linux virq space | |
29 | * @device: Device node of the device whose interrupt is to be mapped | |
30 | * @index: Index of the interrupt to map | |
31 | * | |
32 | * This function is a wrapper that chains of_irq_map_one() and | |
33 | * irq_create_of_mapping() to make things easier to callers | |
34 | */ | |
35 | unsigned int irq_of_parse_and_map(struct device_node *dev, int index) | |
36 | { | |
37 | struct of_irq oirq; | |
38 | ||
39 | if (of_irq_map_one(dev, index, &oirq)) | |
40 | return NO_IRQ; | |
41 | ||
42 | return irq_create_of_mapping(oirq.controller, oirq.specifier, | |
43 | oirq.size); | |
44 | } | |
45 | EXPORT_SYMBOL_GPL(irq_of_parse_and_map); |