diff options
author | Jason Cooper <jason@lakedaemon.net> | 2015-04-10 18:58:19 -0400 |
---|---|---|
committer | Jason Cooper <jason@lakedaemon.net> | 2015-04-10 18:58:19 -0400 |
commit | a01e7b3258bea93fbf1f028fab1c739d80c61823 (patch) | |
tree | f78d0d13faa406524a58d9ce64756ffdabb64400 | |
parent | fb414e908b15ae3d704aa0572f77981a516279b9 (diff) | |
parent | 008e4d6735091bfe5be12918cb66c55e178361bf (diff) |
Merge branch 'irqchip/stacked-irq_set_wake' into irqchip/core
Conflicts:
drivers/irqchip/irq-gic.c
-rw-r--r-- | arch/arm/mach-shmobile/intc-sh73a0.c | 7 | ||||
-rw-r--r-- | arch/arm/mach-shmobile/setup-r8a7779.c | 7 | ||||
-rw-r--r-- | arch/arm/mach-ux500/cpu.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-zynq/common.c | 2 | ||||
-rw-r--r-- | drivers/irqchip/irq-gic.c | 5 | ||||
-rw-r--r-- | include/linux/irqchip/arm-gic.h | 1 |
6 files changed, 10 insertions, 14 deletions
diff --git a/arch/arm/mach-shmobile/intc-sh73a0.c b/arch/arm/mach-shmobile/intc-sh73a0.c index 9e3618028acc..fd63ae6532fc 100644 --- a/arch/arm/mach-shmobile/intc-sh73a0.c +++ b/arch/arm/mach-shmobile/intc-sh73a0.c | |||
@@ -252,11 +252,6 @@ static irqreturn_t sh73a0_intcs_demux(int irq, void *dev_id) | |||
252 | return IRQ_HANDLED; | 252 | return IRQ_HANDLED; |
253 | } | 253 | } |
254 | 254 | ||
255 | static int sh73a0_set_wake(struct irq_data *data, unsigned int on) | ||
256 | { | ||
257 | return 0; /* always allow wakeup */ | ||
258 | } | ||
259 | |||
260 | #define PINTER0_PHYS 0xe69000a0 | 255 | #define PINTER0_PHYS 0xe69000a0 |
261 | #define PINTER1_PHYS 0xe69000a4 | 256 | #define PINTER1_PHYS 0xe69000a4 |
262 | #define PINTER0_VIRT IOMEM(0xe69000a0) | 257 | #define PINTER0_VIRT IOMEM(0xe69000a0) |
@@ -318,8 +313,8 @@ void __init sh73a0_init_irq(void) | |||
318 | void __iomem *gic_cpu_base = IOMEM(0xf0000100); | 313 | void __iomem *gic_cpu_base = IOMEM(0xf0000100); |
319 | void __iomem *intevtsa = ioremap_nocache(0xffd20100, PAGE_SIZE); | 314 | void __iomem *intevtsa = ioremap_nocache(0xffd20100, PAGE_SIZE); |
320 | 315 | ||
316 | gic_set_irqchip_flags(IRQCHIP_SKIP_SET_WAKE); | ||
321 | gic_init(0, 29, gic_dist_base, gic_cpu_base); | 317 | gic_init(0, 29, gic_dist_base, gic_cpu_base); |
322 | gic_arch_extn.irq_set_wake = sh73a0_set_wake; | ||
323 | 318 | ||
324 | register_intc_controller(&intcs_desc); | 319 | register_intc_controller(&intcs_desc); |
325 | register_intc_controller(&intc_pint0_desc); | 320 | register_intc_controller(&intc_pint0_desc); |
diff --git a/arch/arm/mach-shmobile/setup-r8a7779.c b/arch/arm/mach-shmobile/setup-r8a7779.c index 27dceaf9e688..c03e562be12b 100644 --- a/arch/arm/mach-shmobile/setup-r8a7779.c +++ b/arch/arm/mach-shmobile/setup-r8a7779.c | |||
@@ -713,18 +713,13 @@ void __init r8a7779_init_late(void) | |||
713 | } | 713 | } |
714 | 714 | ||
715 | #ifdef CONFIG_USE_OF | 715 | #ifdef CONFIG_USE_OF |
716 | static int r8a7779_set_wake(struct irq_data *data, unsigned int on) | ||
717 | { | ||
718 | return 0; /* always allow wakeup */ | ||
719 | } | ||
720 | |||
721 | void __init r8a7779_init_irq_dt(void) | 716 | void __init r8a7779_init_irq_dt(void) |
722 | { | 717 | { |
723 | #ifdef CONFIG_ARCH_SHMOBILE_LEGACY | 718 | #ifdef CONFIG_ARCH_SHMOBILE_LEGACY |
724 | void __iomem *gic_dist_base = ioremap_nocache(0xf0001000, 0x1000); | 719 | void __iomem *gic_dist_base = ioremap_nocache(0xf0001000, 0x1000); |
725 | void __iomem *gic_cpu_base = ioremap_nocache(0xf0000100, 0x1000); | 720 | void __iomem *gic_cpu_base = ioremap_nocache(0xf0000100, 0x1000); |
726 | #endif | 721 | #endif |
727 | gic_arch_extn.irq_set_wake = r8a7779_set_wake; | 722 | gic_set_irqchip_flags(IRQCHIP_SKIP_SET_WAKE); |
728 | 723 | ||
729 | #ifdef CONFIG_ARCH_SHMOBILE_LEGACY | 724 | #ifdef CONFIG_ARCH_SHMOBILE_LEGACY |
730 | gic_init(0, 29, gic_dist_base, gic_cpu_base); | 725 | gic_init(0, 29, gic_dist_base, gic_cpu_base); |
diff --git a/arch/arm/mach-ux500/cpu.c b/arch/arm/mach-ux500/cpu.c index dbb2970ee7da..6ced0f680262 100644 --- a/arch/arm/mach-ux500/cpu.c +++ b/arch/arm/mach-ux500/cpu.c | |||
@@ -52,7 +52,7 @@ void ux500_restart(enum reboot_mode mode, const char *cmd) | |||
52 | */ | 52 | */ |
53 | void __init ux500_init_irq(void) | 53 | void __init ux500_init_irq(void) |
54 | { | 54 | { |
55 | gic_arch_extn.flags = IRQCHIP_SKIP_SET_WAKE | IRQCHIP_MASK_ON_SUSPEND; | 55 | gic_set_irqchip_flags(IRQCHIP_SKIP_SET_WAKE | IRQCHIP_MASK_ON_SUSPEND); |
56 | irqchip_init(); | 56 | irqchip_init(); |
57 | 57 | ||
58 | /* | 58 | /* |
diff --git a/arch/arm/mach-zynq/common.c b/arch/arm/mach-zynq/common.c index c887196cfdbe..58ef2a700414 100644 --- a/arch/arm/mach-zynq/common.c +++ b/arch/arm/mach-zynq/common.c | |||
@@ -186,7 +186,7 @@ static void __init zynq_map_io(void) | |||
186 | 186 | ||
187 | static void __init zynq_irq_init(void) | 187 | static void __init zynq_irq_init(void) |
188 | { | 188 | { |
189 | gic_arch_extn.flags = IRQCHIP_SKIP_SET_WAKE | IRQCHIP_MASK_ON_SUSPEND; | 189 | gic_set_irqchip_flags(IRQCHIP_SKIP_SET_WAKE | IRQCHIP_MASK_ON_SUSPEND); |
190 | irqchip_init(); | 190 | irqchip_init(); |
191 | } | 191 | } |
192 | 192 | ||
diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c index 868983c6aa5e..61ffbbc92f37 100644 --- a/drivers/irqchip/irq-gic.c +++ b/drivers/irqchip/irq-gic.c | |||
@@ -880,6 +880,11 @@ static const struct irq_domain_ops gic_irq_domain_ops = { | |||
880 | .xlate = gic_irq_domain_xlate, | 880 | .xlate = gic_irq_domain_xlate, |
881 | }; | 881 | }; |
882 | 882 | ||
883 | void gic_set_irqchip_flags(unsigned long flags) | ||
884 | { | ||
885 | gic_chip.flags |= flags; | ||
886 | } | ||
887 | |||
883 | void __init gic_init_bases(unsigned int gic_nr, int irq_start, | 888 | void __init gic_init_bases(unsigned int gic_nr, int irq_start, |
884 | void __iomem *dist_base, void __iomem *cpu_base, | 889 | void __iomem *dist_base, void __iomem *cpu_base, |
885 | u32 percpu_offset, struct device_node *node) | 890 | u32 percpu_offset, struct device_node *node) |
diff --git a/include/linux/irqchip/arm-gic.h b/include/linux/irqchip/arm-gic.h index 3978c5be4edc..36ec4ae74634 100644 --- a/include/linux/irqchip/arm-gic.h +++ b/include/linux/irqchip/arm-gic.h | |||
@@ -97,6 +97,7 @@ struct device_node; | |||
97 | 97 | ||
98 | extern struct irq_chip gic_arch_extn; | 98 | extern struct irq_chip gic_arch_extn; |
99 | 99 | ||
100 | void gic_set_irqchip_flags(unsigned long flags); | ||
100 | void gic_init_bases(unsigned int, int, void __iomem *, void __iomem *, | 101 | void gic_init_bases(unsigned int, int, void __iomem *, void __iomem *, |
101 | u32 offset, struct device_node *); | 102 | u32 offset, struct device_node *); |
102 | void gic_cascade_irq(unsigned int gic_nr, unsigned int irq); | 103 | void gic_cascade_irq(unsigned int gic_nr, unsigned int irq); |