| 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); |