diff options
author | Grant Likely <grant.likely@secretlab.ca> | 2010-06-18 13:09:59 -0400 |
---|---|---|
committer | Grant Likely <grant.likely@secretlab.ca> | 2010-06-28 15:41:33 -0400 |
commit | e3873444990dd6f8a095d1f72b5ad45192f8c506 (patch) | |
tree | 9e9fbc43fd4ffde3ac7d41827e0ab9c5f98363f0 /drivers/of | |
parent | b505ff5e7291cca6379549297e3852ce3622d550 (diff) |
of/irq: Move irq_of_parse_and_map() to common code
Merge common code between PowerPC and Microblaze. SPARC implements
irq_of_parse_and_map(), but the implementation is different, so it
does not use this code.
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Michal Simek <monstr@monstr.eu>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Stephen Rothwell <sfr@canb.auug.org.au>
Cc: Jeremy Kerr <jeremy.kerr@canonical.com>
Diffstat (limited to 'drivers/of')
-rw-r--r-- | drivers/of/Kconfig | 4 | ||||
-rw-r--r-- | drivers/of/Makefile | 1 | ||||
-rw-r--r-- | drivers/of/irq.c | 45 | ||||
-rw-r--r-- | drivers/of/of_mdio.c | 1 | ||||
-rw-r--r-- | drivers/of/of_spi.c | 1 |
5 files changed, 52 insertions, 0 deletions
diff --git a/drivers/of/Kconfig b/drivers/of/Kconfig index 7cecc8fea9bd..b87495efa16e 100644 --- a/drivers/of/Kconfig +++ b/drivers/of/Kconfig | |||
@@ -6,6 +6,10 @@ config OF_DYNAMIC | |||
6 | def_bool y | 6 | def_bool y |
7 | depends on OF && PPC_OF | 7 | depends on OF && PPC_OF |
8 | 8 | ||
9 | config OF_IRQ | ||
10 | def_bool y | ||
11 | depends on OF && !SPARC | ||
12 | |||
9 | config OF_DEVICE | 13 | config OF_DEVICE |
10 | def_bool y | 14 | def_bool y |
11 | depends on OF && (SPARC || PPC_OF || MICROBLAZE) | 15 | depends on OF && (SPARC || PPC_OF || MICROBLAZE) |
diff --git a/drivers/of/Makefile b/drivers/of/Makefile index f232cc98ce00..3631a5ea0b47 100644 --- a/drivers/of/Makefile +++ b/drivers/of/Makefile | |||
@@ -1,5 +1,6 @@ | |||
1 | obj-y = base.o | 1 | obj-y = base.o |
2 | obj-$(CONFIG_OF_FLATTREE) += fdt.o | 2 | obj-$(CONFIG_OF_FLATTREE) += fdt.o |
3 | obj-$(CONFIG_OF_IRQ) += irq.o | ||
3 | obj-$(CONFIG_OF_DEVICE) += device.o platform.o | 4 | obj-$(CONFIG_OF_DEVICE) += device.o platform.o |
4 | obj-$(CONFIG_OF_GPIO) += gpio.o | 5 | obj-$(CONFIG_OF_GPIO) += gpio.o |
5 | obj-$(CONFIG_OF_I2C) += of_i2c.o | 6 | obj-$(CONFIG_OF_I2C) += of_i2c.o |
diff --git a/drivers/of/irq.c b/drivers/of/irq.c new file mode 100644 index 000000000000..9b3397c27096 --- /dev/null +++ b/drivers/of/irq.c | |||
@@ -0,0 +1,45 @@ | |||
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); | ||
diff --git a/drivers/of/of_mdio.c b/drivers/of/of_mdio.c index 42a6715f8e84..1fce00eb421b 100644 --- a/drivers/of/of_mdio.c +++ b/drivers/of/of_mdio.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/err.h> | 15 | #include <linux/err.h> |
16 | #include <linux/phy.h> | 16 | #include <linux/phy.h> |
17 | #include <linux/of.h> | 17 | #include <linux/of.h> |
18 | #include <linux/of_irq.h> | ||
18 | #include <linux/of_mdio.h> | 19 | #include <linux/of_mdio.h> |
19 | #include <linux/module.h> | 20 | #include <linux/module.h> |
20 | 21 | ||
diff --git a/drivers/of/of_spi.c b/drivers/of/of_spi.c index 5fed7e3c7da3..d504f1d1324b 100644 --- a/drivers/of/of_spi.c +++ b/drivers/of/of_spi.c | |||
@@ -9,6 +9,7 @@ | |||
9 | #include <linux/of.h> | 9 | #include <linux/of.h> |
10 | #include <linux/device.h> | 10 | #include <linux/device.h> |
11 | #include <linux/spi/spi.h> | 11 | #include <linux/spi/spi.h> |
12 | #include <linux/of_irq.h> | ||
12 | #include <linux/of_spi.h> | 13 | #include <linux/of_spi.h> |
13 | 14 | ||
14 | /** | 15 | /** |