diff options
-rw-r--r-- | arch/arm/mach-mxs/Makefile | 2 | ||||
-rw-r--r-- | arch/arm/mach-mxs/include/mach/common.h | 3 | ||||
-rw-r--r-- | arch/arm/mach-mxs/mach-mxs.c | 6 | ||||
-rw-r--r-- | drivers/irqchip/Makefile | 1 | ||||
-rw-r--r-- | drivers/irqchip/irq-mxs.c (renamed from arch/arm/mach-mxs/icoll.c) | 13 | ||||
-rw-r--r-- | include/linux/irqchip/mxs.h | 14 |
6 files changed, 23 insertions, 16 deletions
diff --git a/arch/arm/mach-mxs/Makefile b/arch/arm/mach-mxs/Makefile index 76c336e6f5b5..b934603e2765 100644 --- a/arch/arm/mach-mxs/Makefile +++ b/arch/arm/mach-mxs/Makefile | |||
@@ -1,5 +1,5 @@ | |||
1 | # Common support | 1 | # Common support |
2 | obj-y := icoll.o ocotp.o system.o mm.o | 2 | obj-y := ocotp.o system.o mm.o |
3 | 3 | ||
4 | obj-$(CONFIG_PM) += pm.o | 4 | obj-$(CONFIG_PM) += pm.o |
5 | 5 | ||
diff --git a/arch/arm/mach-mxs/include/mach/common.h b/arch/arm/mach-mxs/include/mach/common.h index e043c4735b5a..df2a4ef14dae 100644 --- a/arch/arm/mach-mxs/include/mach/common.h +++ b/arch/arm/mach-mxs/include/mach/common.h | |||
@@ -22,7 +22,4 @@ extern void mx23_map_io(void); | |||
22 | extern int mx28_clocks_init(void); | 22 | extern int mx28_clocks_init(void); |
23 | extern void mx28_map_io(void); | 23 | extern void mx28_map_io(void); |
24 | 24 | ||
25 | extern void icoll_init_irq(void); | ||
26 | extern void icoll_handle_irq(struct pt_regs *); | ||
27 | |||
28 | #endif /* __MACH_MXS_COMMON_H__ */ | 25 | #endif /* __MACH_MXS_COMMON_H__ */ |
diff --git a/arch/arm/mach-mxs/mach-mxs.c b/arch/arm/mach-mxs/mach-mxs.c index c1c0fb414c28..10506381b446 100644 --- a/arch/arm/mach-mxs/mach-mxs.c +++ b/arch/arm/mach-mxs/mach-mxs.c | |||
@@ -18,6 +18,8 @@ | |||
18 | #include <linux/err.h> | 18 | #include <linux/err.h> |
19 | #include <linux/gpio.h> | 19 | #include <linux/gpio.h> |
20 | #include <linux/init.h> | 20 | #include <linux/init.h> |
21 | #include <linux/irqchip.h> | ||
22 | #include <linux/irqchip/mxs.h> | ||
21 | #include <linux/micrel_phy.h> | 23 | #include <linux/micrel_phy.h> |
22 | #include <linux/mxsfb.h> | 24 | #include <linux/mxsfb.h> |
23 | #include <linux/of_platform.h> | 25 | #include <linux/of_platform.h> |
@@ -469,7 +471,7 @@ static const char *imx28_dt_compat[] __initdata = { | |||
469 | 471 | ||
470 | DT_MACHINE_START(IMX23, "Freescale i.MX23 (Device Tree)") | 472 | DT_MACHINE_START(IMX23, "Freescale i.MX23 (Device Tree)") |
471 | .map_io = mx23_map_io, | 473 | .map_io = mx23_map_io, |
472 | .init_irq = icoll_init_irq, | 474 | .init_irq = irqchip_init, |
473 | .handle_irq = icoll_handle_irq, | 475 | .handle_irq = icoll_handle_irq, |
474 | .init_time = imx23_timer_init, | 476 | .init_time = imx23_timer_init, |
475 | .init_machine = mxs_machine_init, | 477 | .init_machine = mxs_machine_init, |
@@ -479,7 +481,7 @@ MACHINE_END | |||
479 | 481 | ||
480 | DT_MACHINE_START(IMX28, "Freescale i.MX28 (Device Tree)") | 482 | DT_MACHINE_START(IMX28, "Freescale i.MX28 (Device Tree)") |
481 | .map_io = mx28_map_io, | 483 | .map_io = mx28_map_io, |
482 | .init_irq = icoll_init_irq, | 484 | .init_irq = irqchip_init, |
483 | .handle_irq = icoll_handle_irq, | 485 | .handle_irq = icoll_handle_irq, |
484 | .init_time = imx28_timer_init, | 486 | .init_time = imx28_timer_init, |
485 | .init_machine = mxs_machine_init, | 487 | .init_machine = mxs_machine_init, |
diff --git a/drivers/irqchip/Makefile b/drivers/irqchip/Makefile index 98e3b87bdf1b..9d8f4f1c6e39 100644 --- a/drivers/irqchip/Makefile +++ b/drivers/irqchip/Makefile | |||
@@ -2,6 +2,7 @@ obj-$(CONFIG_IRQCHIP) += irqchip.o | |||
2 | 2 | ||
3 | obj-$(CONFIG_ARCH_BCM2835) += irq-bcm2835.o | 3 | obj-$(CONFIG_ARCH_BCM2835) += irq-bcm2835.o |
4 | obj-$(CONFIG_ARCH_EXYNOS) += exynos-combiner.o | 4 | obj-$(CONFIG_ARCH_EXYNOS) += exynos-combiner.o |
5 | obj-$(CONFIG_ARCH_MXS) += irq-mxs.o | ||
5 | obj-$(CONFIG_METAG) += irq-metag-ext.o | 6 | obj-$(CONFIG_METAG) += irq-metag-ext.o |
6 | obj-$(CONFIG_METAG_PERFCOUNTER_IRQS) += irq-metag.o | 7 | obj-$(CONFIG_METAG_PERFCOUNTER_IRQS) += irq-metag.o |
7 | obj-$(CONFIG_ARCH_SUNXI) += irq-sunxi.o | 8 | obj-$(CONFIG_ARCH_SUNXI) += irq-sunxi.o |
diff --git a/arch/arm/mach-mxs/icoll.c b/drivers/irqchip/irq-mxs.c index b4d620765cf1..29889bbdcc6d 100644 --- a/arch/arm/mach-mxs/icoll.c +++ b/drivers/irqchip/irq-mxs.c | |||
@@ -27,6 +27,8 @@ | |||
27 | #include <linux/stmp_device.h> | 27 | #include <linux/stmp_device.h> |
28 | #include <asm/exception.h> | 28 | #include <asm/exception.h> |
29 | 29 | ||
30 | #include "irqchip.h" | ||
31 | |||
30 | #define HW_ICOLL_VECTOR 0x0000 | 32 | #define HW_ICOLL_VECTOR 0x0000 |
31 | #define HW_ICOLL_LEVELACK 0x0010 | 33 | #define HW_ICOLL_LEVELACK 0x0010 |
32 | #define HW_ICOLL_CTRL 0x0020 | 34 | #define HW_ICOLL_CTRL 0x0020 |
@@ -116,13 +118,4 @@ static void __init icoll_of_init(struct device_node *np, | |||
116 | &icoll_irq_domain_ops, NULL); | 118 | &icoll_irq_domain_ops, NULL); |
117 | WARN_ON(!icoll_domain); | 119 | WARN_ON(!icoll_domain); |
118 | } | 120 | } |
119 | 121 | IRQCHIP_DECLARE(mxs, "fsl,icoll", icoll_of_init); | |
120 | static const struct of_device_id icoll_of_match[] __initconst = { | ||
121 | {.compatible = "fsl,icoll", .data = icoll_of_init}, | ||
122 | { /* sentinel */ } | ||
123 | }; | ||
124 | |||
125 | void __init icoll_init_irq(void) | ||
126 | { | ||
127 | of_irq_init(icoll_of_match); | ||
128 | } | ||
diff --git a/include/linux/irqchip/mxs.h b/include/linux/irqchip/mxs.h new file mode 100644 index 000000000000..9039a538a919 --- /dev/null +++ b/include/linux/irqchip/mxs.h | |||
@@ -0,0 +1,14 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2013 Freescale Semiconductor, Inc. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License version 2 as | ||
6 | * published by the Free Software Foundation. | ||
7 | */ | ||
8 | |||
9 | #ifndef __LINUX_IRQCHIP_MXS_H | ||
10 | #define __LINUX_IRQCHIP_MXS_H | ||
11 | |||
12 | extern void icoll_handle_irq(struct pt_regs *); | ||
13 | |||
14 | #endif | ||