aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/boot/dts/r8a7790.dtsi9
-rw-r--r--arch/arm/mach-shmobile/Kconfig1
-rw-r--r--arch/arm/mach-shmobile/setup-r8a7790.c21
3 files changed, 31 insertions, 0 deletions
diff --git a/arch/arm/boot/dts/r8a7790.dtsi b/arch/arm/boot/dts/r8a7790.dtsi
index 1c58ffb6cccf..a1e0e0c64c3c 100644
--- a/arch/arm/boot/dts/r8a7790.dtsi
+++ b/arch/arm/boot/dts/r8a7790.dtsi
@@ -51,4 +51,13 @@
51 <1 11 0xf08>, 51 <1 11 0xf08>,
52 <1 10 0xf08>; 52 <1 10 0xf08>;
53 }; 53 };
54
55 irqc0: interrupt-controller@e61c0000 {
56 compatible = "renesas,irqc";
57 #interrupt-cells = <2>;
58 interrupt-controller;
59 reg = <0xe61c0000 0x200>;
60 interrupt-parent = <&gic>;
61 interrupts = <0 0 4>, <0 1 4>, <0 2 4>, <0 3 4>;
62 };
54}; 63};
diff --git a/arch/arm/mach-shmobile/Kconfig b/arch/arm/mach-shmobile/Kconfig
index 749dfb4c63c0..ccaea6aecea0 100644
--- a/arch/arm/mach-shmobile/Kconfig
+++ b/arch/arm/mach-shmobile/Kconfig
@@ -57,6 +57,7 @@ config ARCH_R8A7790
57 select CPU_V7 57 select CPU_V7
58 select ARM_ARCH_TIMER 58 select ARM_ARCH_TIMER
59 select SH_CLK_CPG 59 select SH_CLK_CPG
60 select RENESAS_IRQC
60 61
61config ARCH_EMEV2 62config ARCH_EMEV2
62 bool "Emma Mobile EV2" 63 bool "Emma Mobile EV2"
diff --git a/arch/arm/mach-shmobile/setup-r8a7790.c b/arch/arm/mach-shmobile/setup-r8a7790.c
index 3bb5bf16000c..9b4ccd7b5031 100644
--- a/arch/arm/mach-shmobile/setup-r8a7790.c
+++ b/arch/arm/mach-shmobile/setup-r8a7790.c
@@ -23,6 +23,7 @@
23#include <linux/kernel.h> 23#include <linux/kernel.h>
24#include <linux/of_platform.h> 24#include <linux/of_platform.h>
25#include <linux/serial_sci.h> 25#include <linux/serial_sci.h>
26#include <linux/platform_data/irq-renesas-irqc.h>
26#include <mach/common.h> 27#include <mach/common.h>
27#include <mach/irqs.h> 28#include <mach/irqs.h>
28#include <mach/r8a7790.h> 29#include <mach/r8a7790.h>
@@ -74,6 +75,25 @@ static inline void r8a7790_register_scif(int idx)
74 sizeof(struct plat_sci_port)); 75 sizeof(struct plat_sci_port));
75} 76}
76 77
78static struct renesas_irqc_config irqc0_data = {
79 .irq_base = irq_pin(0), /* IRQ0 -> IRQ3 */
80};
81
82static struct resource irqc0_resources[] = {
83 DEFINE_RES_MEM(0xe61c0000, 0x200), /* IRQC Event Detector Block_0 */
84 DEFINE_RES_IRQ(gic_spi(0)), /* IRQ0 */
85 DEFINE_RES_IRQ(gic_spi(1)), /* IRQ1 */
86 DEFINE_RES_IRQ(gic_spi(2)), /* IRQ2 */
87 DEFINE_RES_IRQ(gic_spi(3)), /* IRQ3 */
88};
89
90#define r8a7790_register_irqc(idx) \
91 platform_device_register_resndata(&platform_bus, "renesas_irqc", \
92 idx, irqc##idx##_resources, \
93 ARRAY_SIZE(irqc##idx##_resources), \
94 &irqc##idx##_data, \
95 sizeof(struct renesas_irqc_config))
96
77void __init r8a7790_add_standard_devices(void) 97void __init r8a7790_add_standard_devices(void)
78{ 98{
79 r8a7790_register_scif(SCIFA0); 99 r8a7790_register_scif(SCIFA0);
@@ -84,6 +104,7 @@ void __init r8a7790_add_standard_devices(void)
84 r8a7790_register_scif(SCIFA2); 104 r8a7790_register_scif(SCIFA2);
85 r8a7790_register_scif(SCIF0); 105 r8a7790_register_scif(SCIF0);
86 r8a7790_register_scif(SCIF1); 106 r8a7790_register_scif(SCIF1);
107 r8a7790_register_irqc(0);
87} 108}
88 109
89#ifdef CONFIG_USE_OF 110#ifdef CONFIG_USE_OF