|
@@ -23,6 +23,7 @@
|
|
|
#include <linux/kernel.h>
|
|
|
#include <linux/of_platform.h>
|
|
|
#include <linux/serial_sci.h>
|
|
|
+#include <linux/platform_data/irq-renesas-irqc.h>
|
|
|
#include <mach/common.h>
|
|
|
#include <mach/irqs.h>
|
|
|
#include <mach/r8a7790.h>
|
|
@@ -74,6 +75,25 @@ static inline void r8a7790_register_scif(int idx)
|
|
|
sizeof(struct plat_sci_port));
|
|
|
}
|
|
|
|
|
|
+static struct renesas_irqc_config irqc0_data = {
|
|
|
+ .irq_base = irq_pin(0), /* IRQ0 -> IRQ3 */
|
|
|
+};
|
|
|
+
|
|
|
+static struct resource irqc0_resources[] = {
|
|
|
+ DEFINE_RES_MEM(0xe61c0000, 0x200), /* IRQC Event Detector Block_0 */
|
|
|
+ DEFINE_RES_IRQ(gic_spi(0)), /* IRQ0 */
|
|
|
+ DEFINE_RES_IRQ(gic_spi(1)), /* IRQ1 */
|
|
|
+ DEFINE_RES_IRQ(gic_spi(2)), /* IRQ2 */
|
|
|
+ DEFINE_RES_IRQ(gic_spi(3)), /* IRQ3 */
|
|
|
+};
|
|
|
+
|
|
|
+#define r8a7790_register_irqc(idx) \
|
|
|
+ platform_device_register_resndata(&platform_bus, "renesas_irqc", \
|
|
|
+ idx, irqc##idx##_resources, \
|
|
|
+ ARRAY_SIZE(irqc##idx##_resources), \
|
|
|
+ &irqc##idx##_data, \
|
|
|
+ sizeof(struct renesas_irqc_config))
|
|
|
+
|
|
|
void __init r8a7790_add_standard_devices(void)
|
|
|
{
|
|
|
r8a7790_register_scif(SCIFA0);
|
|
@@ -84,6 +104,7 @@ void __init r8a7790_add_standard_devices(void)
|
|
|
r8a7790_register_scif(SCIFA2);
|
|
|
r8a7790_register_scif(SCIF0);
|
|
|
r8a7790_register_scif(SCIF1);
|
|
|
+ r8a7790_register_irqc(0);
|
|
|
}
|
|
|
|
|
|
#ifdef CONFIG_USE_OF
|