Move GIC and VIC to drivers/irqchip
Subsystems (22)
v4 cover Move GIC and VIC to drivers/irqchip
From: Rob Herring <[email protected]>
This is series adds irqchip initialization infrastructure from Thomas Petazzoni and converts GIC and VIC over to use the new infrastructure moving both to drivers/irqchip. All platforms doing GIC and VIC initialization via DT are converted over to use the new infrastructure.
This series is available here:git://sources.calxeda.com/kernel/linux.git irqchip-v4
Changes in v4:
- Rebase to v3.8-rc1
- Use arch_send_wakeup_ipi_mask added in 3.8
- Re-add move and conversion of GIC and VIC to drivers/irqchip
- More clean-ups of unneeded vic.h includes
- Move vic.h and gic.h to include/linux/irqchip/
- Convert spear shirq irqchip to new init infrastructure
Changes in v3:
- Add ux500 fix from Srinidhi
- Only including clean-ups for 3.8
- Keep gic register definitions in header. Will be needed for KVM
- use set_handle_irq from Thomas
- Remove all occurrences gic_handle_irq from platforms
- Add clean-up vic.h
Rob
Rob Herring (16):
ARM: GIC: remove assembly ifdefs from gic.h
ARM: GIC: remove direct use of gic_raise_softirq
ARM: GIC: set handle_arch_irq in GIC initialization
ARM: remove mach .handle_irq for GIC users
irqchip: Move ARM GIC to drivers/irqchip
ARM: use common irqchip_init for GIC init
irqchip: Move ARM gic.h to include/linux/irqchip/arm-gic.h
ARM: VIC: shrink down vic.h
ARM: VIC: set handle_arch_irq in VIC initialization
ARM: remove mach .handle_irq for VIC users
ARM: remove unneeded vic.h includes
ARM: samsung: remove unused tick.h
irqchip: Move ARM VIC to drivers/irqchip
ARM: spear: use common irqchip_init function
ARM: picoxcell: use common irqchip_init function
irqchip: Move ARM vic.h to include/linux/irqchip/arm-vic.h
Srinidhi Kasagar (1):
ARM: mach-ux500: use SGI0 to wake up the other core
Thomas Petazzoni (2):
irqchip: add basic infrastructure
arm: add set_handle_irq() to register the parent IRQ controller
handler function
arch/arm/common/Kconfig | 23 -------- arch/arm/common/Makefile | 2 - arch/arm/include/asm/mach/irq.h | 1 + arch/arm/kernel/irq.c | 10 ++++ arch/arm/kernel/smp.c | 3 +- arch/arm/kernel/smp_twd.c | 1 - arch/arm/mach-bcm/board_bcm.c | 17 +----- arch/arm/mach-cns3xxx/cns3420vb.c | 2 - arch/arm/mach-cns3xxx/core.c | 2 +- arch/arm/mach-ep93xx/adssphere.c | 2 - arch/arm/mach-ep93xx/core.c | 3 +- arch/arm/mach-ep93xx/edb93xx.c | 9 --- arch/arm/mach-ep93xx/gesbc9312.c | 2 - arch/arm/mach-ep93xx/micro9.c | 5 -- arch/arm/mach-ep93xx/simone.c | 2 - arch/arm/mach-ep93xx/snappercl15.c | 2 - arch/arm/mach-ep93xx/ts72xx.c | 2 - arch/arm/mach-ep93xx/vision_ep9307.c | 2 - arch/arm/mach-exynos/common.c | 10 ++-- arch/arm/mach-exynos/include/mach/regs-irq.h | 2 +- arch/arm/mach-exynos/mach-armlex4210.c | 2 - arch/arm/mach-exynos/mach-exynos4-dt.c | 2 - arch/arm/mach-exynos/mach-exynos5-dt.c | 2 - arch/arm/mach-exynos/mach-nuri.c | 2 - arch/arm/mach-exynos/mach-origen.c | 2 - arch/arm/mach-exynos/mach-smdk4x12.c | 3 - arch/arm/mach-exynos/mach-smdkv310.c | 3 - arch/arm/mach-exynos/mach-universal_c210.c | 2 - arch/arm/mach-exynos/mct.c | 1 - arch/arm/mach-exynos/platsmp.c | 6 +- arch/arm/mach-highbank/highbank.c | 11 +--- arch/arm/mach-highbank/platsmp.c | 6 +- arch/arm/mach-imx/common.h | 1 - arch/arm/mach-imx/gpc.c | 2 +- arch/arm/mach-imx/mach-imx6q.c | 10 +--- arch/arm/mach-imx/platsmp.c | 4 +- arch/arm/mach-msm/board-dt-8660.c | 16 +----- arch/arm/mach-msm/board-dt-8960.c | 16 +----- arch/arm/mach-msm/platsmp.c | 6 +- arch/arm/mach-msm/timer.c | 1 - arch/arm/mach-netx/generic.c | 2 +- arch/arm/mach-netx/nxdb500.c | 2 - arch/arm/mach-netx/nxdkn.c | 2 - arch/arm/mach-netx/nxeb500hmi.c | 2 - arch/arm/mach-nomadik/board-nhk8815.c | 2 - arch/arm/mach-nomadik/cpu-8815.c | 2 +- arch/arm/mach-omap2/board-4430sdp.c | 3 +- arch/arm/mach-omap2/board-generic.c | 3 - arch/arm/mach-omap2/board-omap4panda.c | 3 +- arch/arm/mach-omap2/omap-smp.c | 6 +- arch/arm/mach-omap2/omap-wakeupgen.c | 3 +- arch/arm/mach-omap2/omap4-common.c | 11 +--- arch/arm/mach-picoxcell/common.c | 15 +---- arch/arm/mach-realview/core.c | 1 - arch/arm/mach-realview/platsmp.c | 3 - arch/arm/mach-realview/realview_eb.c | 3 +- arch/arm/mach-realview/realview_pb1176.c | 3 +- arch/arm/mach-realview/realview_pb11mp.c | 3 +- arch/arm/mach-realview/realview_pba8.c | 3 +- arch/arm/mach-realview/realview_pbx.c | 3 +- arch/arm/mach-s3c64xx/common.c | 2 +- arch/arm/mach-s3c64xx/include/mach/regs-irq.h | 1 - arch/arm/mach-s3c64xx/include/mach/tick.h | 2 + arch/arm/mach-s3c64xx/mach-anw6410.c | 2 - arch/arm/mach-s3c64xx/mach-crag6410.c | 2 - arch/arm/mach-s3c64xx/mach-hmt.c | 2 - arch/arm/mach-s3c64xx/mach-mini6410.c | 2 - arch/arm/mach-s3c64xx/mach-ncp.c | 2 - arch/arm/mach-s3c64xx/mach-real6410.c | 2 - arch/arm/mach-s3c64xx/mach-smartq5.c | 2 - arch/arm/mach-s3c64xx/mach-smartq7.c | 2 - arch/arm/mach-s3c64xx/mach-smdk6400.c | 2 - arch/arm/mach-s3c64xx/mach-smdk6410.c | 2 - arch/arm/mach-s5p64x0/include/mach/regs-irq.h | 1 - arch/arm/mach-s5p64x0/mach-smdk6440.c | 2 - arch/arm/mach-s5p64x0/mach-smdk6450.c | 2 - arch/arm/mach-s5pc100/include/mach/regs-irq.h | 1 - arch/arm/mach-s5pc100/include/mach/tick.h | 2 + arch/arm/mach-s5pc100/mach-smdkc100.c | 2 - arch/arm/mach-s5pv210/include/mach/regs-irq.h | 1 - arch/arm/mach-s5pv210/include/mach/tick.h | 26 --------- arch/arm/mach-s5pv210/mach-aquila.c | 2 - arch/arm/mach-s5pv210/mach-goni.c | 2 - arch/arm/mach-s5pv210/mach-smdkc110.c | 2 - arch/arm/mach-s5pv210/mach-smdkv210.c | 2 - arch/arm/mach-s5pv210/mach-torbreck.c | 2 - arch/arm/mach-shmobile/board-ag5evm.c | 3 +- arch/arm/mach-shmobile/board-kota2.c | 3 +- arch/arm/mach-shmobile/board-kzm9d.c | 2 - arch/arm/mach-shmobile/board-kzm9g.c | 3 +- arch/arm/mach-shmobile/board-marzen.c | 2 - arch/arm/mach-shmobile/intc-r8a7779.c | 2 +- arch/arm/mach-shmobile/intc-sh73a0.c | 2 +- arch/arm/mach-shmobile/platsmp.c | 3 - arch/arm/mach-shmobile/setup-emev2.c | 17 +----- arch/arm/mach-shmobile/smp-emev2.c | 4 +- arch/arm/mach-shmobile/smp-r8a7779.c | 2 +- arch/arm/mach-shmobile/smp-sh73a0.c | 2 +- arch/arm/mach-socfpga/platsmp.c | 4 +- arch/arm/mach-socfpga/socfpga.c | 14 ++--- arch/arm/mach-spear13xx/include/mach/generic.h | 1 - arch/arm/mach-spear13xx/platsmp.c | 4 +- arch/arm/mach-spear13xx/spear1310.c | 5 +- arch/arm/mach-spear13xx/spear1340.c | 5 +- arch/arm/mach-spear13xx/spear13xx.c | 13 +---- arch/arm/mach-spear3xx/include/mach/generic.h | 1 - arch/arm/mach-spear3xx/spear300.c | 5 +- arch/arm/mach-spear3xx/spear310.c | 5 +- arch/arm/mach-spear3xx/spear320.c | 5 +- arch/arm/mach-spear3xx/spear3xx.c | 16 ------ arch/arm/mach-spear6xx/spear6xx.c | 16 +----- arch/arm/mach-sunxi/sunxi.c | 1 - arch/arm/mach-tegra/board-dt-tegra20.c | 3 - arch/arm/mach-tegra/board-dt-tegra30.c | 2 - arch/arm/mach-tegra/common.c | 10 +--- arch/arm/mach-tegra/irq.c | 3 +- arch/arm/mach-tegra/platsmp.c | 4 +- arch/arm/mach-u300/core.c | 3 +- arch/arm/mach-ux500/board-mop500.c | 5 -- arch/arm/mach-ux500/cpu-db8500.c | 2 - arch/arm/mach-ux500/cpu.c | 10 +--- arch/arm/mach-ux500/platsmp.c | 6 +- arch/arm/mach-versatile/core.c | 2 +- arch/arm/mach-versatile/versatile_ab.c | 2 - arch/arm/mach-versatile/versatile_dt.c | 2 - arch/arm/mach-versatile/versatile_pb.c | 2 - arch/arm/mach-vexpress/ct-ca9x4.c | 4 +- arch/arm/mach-vexpress/platsmp.c | 3 - arch/arm/mach-vexpress/v2m.c | 16 +----- arch/arm/mach-zynq/common.c | 17 +----- arch/arm/plat-samsung/s5p-irq-eint.c | 3 +- arch/arm/plat-samsung/s5p-irq.c | 3 +- arch/arm/plat-versatile/platsmp.c | 4 +- drivers/irqchip/Kconfig | 27 +++++++++ drivers/irqchip/Makefile | 6 +- arch/arm/common/gic.c => drivers/irqchip/irq-gic.c | 59 ++++++++++++-------- arch/arm/common/vic.c => drivers/irqchip/irq-vic.c | 29 +++++++++- drivers/irqchip/irqchip.c | 30 ++++++++++ drivers/irqchip/irqchip.h | 29 ++++++++++ drivers/irqchip/spear-shirq.c | 3 + drivers/mfd/db8500-prcmu.c | 2 +- include/asm-generic/vmlinux.lds.h | 12 +++- include/linux/irqchip.h | 16 ++++++ .../gic.h => include/linux/irqchip/arm-gic.h | 15 +---- .../vic.h => include/linux/irqchip/arm-vic.h | 25 +-------- 145 files changed, 302 insertions(+), 544 deletions(-) delete mode 100644 arch/arm/mach-s5pv210/include/mach/tick.h rename arch/arm/common/gic.c => drivers/irqchip/irq-gic.c (97%) rename arch/arm/common/vic.c => drivers/irqchip/irq-vic.c (92%) create mode 100644 drivers/irqchip/irqchip.c create mode 100644 drivers/irqchip/irqchip.h create mode 100644 include/linux/irqchip.h rename arch/arm/include/asm/hardware/gic.h => include/linux/irqchip/arm-gic.h (77%) rename arch/arm/include/asm/hardware/vic.h => include/linux/irqchip/arm-vic.h (63%)
Signature · 1 line
1.7.10.4
PATCH v4 1/19 irqchip: add basic infrastructure
From: Thomas Petazzoni <[email protected]>
With the recent creation of the drivers/irqchip/ directory, it is desirable to move irq controller drivers here. At the moment, the only driver here is irq-bcm2835, the driver for the irq controller found in the ARM BCM2835 SoC, present in Rasberry Pi systems. This irq controller driver was exporting its initialization function and its irq handling function through a header file in <linux/irqchip/bcm2835.h>.
When proposing to also move another irq controller driver in drivers/irqchip, Rob Herring raised the very valid point that moving things to drivers/irqchip was good in order to remove more stuff from arch/arm, but if it means adding gazillions of headers files in include/linux/irqchip/, it would not be very nice.
So, upon the suggestion of Rob Herring and Arnd Bergmann, this commit introduces a small infrastructure that defines a central irqchip_init() function in drivers/irqchip/irqchip.c, which is meant to be called as the ->init_irq() callback of ARM platforms. This function calls of_irq_init() with an array that will progressively contain the compatible strings of each irq controller driver, and also a reference to the initialization functions of such drivers. The drivers/irqchip/irqchip.h header file, currently empty, is added to allow irq controller drivers to expose their initialization function to the main irqchip.c file. Note that the irq controller driver initialization function is responsible for setting the global handle_arch_irq() variable, so that ARM platforms no longer have to define the ->handle_irq field in their DT_MACHINE structure.
A global header, <linux/irqchip.h> is also added to expose the single irqchip_init() function to the reset of the kernel.
A further commit moves the BCM2835 irq controller driver to this new small infrastructure, therefore removing the include/linux/irqchip/ directory.
--- drivers/irqchip/Kconfig | 4 ++++ drivers/irqchip/Makefile | 2 ++ drivers/irqchip/irqchip.c | 30 ++++++++++++++++++++++++++++++ drivers/irqchip/irqchip.h | 29 +++++++++++++++++++++++++++++ include/asm-generic/vmlinux.lds.h | 12 +++++++++++- include/linux/irqchip.h | 16 ++++++++++++++++ 6 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 drivers/irqchip/irqchip.c create mode 100644 drivers/irqchip/irqchip.h create mode 100644 include/linux/irqchip.h
drivers/irqchip/Kconfig +4 -0
@@ -1,3 +1,7 @@ +config IRQCHIP + def_bool y + depends on OF_IRQ + config VERSATILE_FPGA_IRQ bool select IRQ_DOMAIN
drivers/irqchip/Makefile +2 -0
@@ -1,3 +1,5 @@ +obj-$(CONFIG_IRQCHIP) += irqchip.o + obj-$(CONFIG_ARCH_BCM2835) += irq-bcm2835.o obj-$(CONFIG_ARCH_SUNXI) += irq-sunxi.o obj-$(CONFIG_VERSATILE_FPGA_IRQ) += irq-versatile-fpga.o
drivers/irqchip/irqchip.c new file +30 -0
@@ -0,0 +1,30 @@ +/* +* Copyright (C) 2012 Thomas Petazzoni +* +* Thomas Petazzoni <[email protected]> +* +* This file is licensed under the terms of the GNU General Public +* License version 2. This program is licensed "as is" without any +* warranty of any kind, whether express or implied. +*/ + +#include <linux/init.h> +#include <linux/of_irq.h> + +#include "irqchip.h" + +/* +* This special of_device_id is the sentinel at the end of the +* of_device_id[] array of all irqchips. It is automatically placed at +* the end of the array by the linker, thanks to being part of a +* special section. +*/ +static const struct of_device_id +irqchip_of_match_end __used __section(__irqchip_of_end); + +extern struct of_device_id __irqchip_begin[]; + +void __init irqchip_init (void ) +{ +of_irq_init (__irqchip_begin); +}
drivers/irqchip/irqchip.h new file +29 -0
@@ -0,0 +1,29 @@ +/* +* Copyright (C) 2012 Thomas Petazzoni +* +* Thomas Petazzoni <[email protected]> +* +* This file is licensed under the terms of the GNU General Public +* License version 2. This program is licensed "as is" without any +* warranty of any kind, whether express or implied. +*/ + +#ifndef _IRQCHIP_H +#define _IRQCHIP_H + +/* +* This macro must be used by the different irqchip drivers to declare +* the association between their DT compatible string and their +* initialization function. +* +* @name: name that must be unique accross all IRQCHIP_DECLARE of the +* same file. +* @compstr: compatible string of the irqchip driver +* @fn: initialization function +*/ +#define IRQCHIP_DECLARE (name,compstr,fn) \ + static const struct of_device_id irqchip_of_match_##name \ + __used __section(__irqchip_of_table) \ + = { .compatible = compstr, .data = fn } + +#endif
include/asm-generic/vmlinux.lds.h +11 -1
@@ -149,6 +149,15 @@#define TRACE_SYSCALLS ()#endif +#ifdef CONFIG_IRQCHIP +#define IRQCHIP_OF_MATCH_TABLE () \ + . = ALIGN(8); \ + VMLINUX_SYMBOL(__irqchip_begin) = .; \ + *(__irqchip_of_table) \ + *(__irqchip_of_end) +#else +#define IRQCHIP_OF_MATCH_TABLE () +#endif #define KERNEL_DTB () \ STRUCT_ALIGN(); \
@@ -493,7 +502,8 @@ DEV_DISCARD(init.rodata) \ CPU_DISCARD(init.rodata) \ MEM_DISCARD(init.rodata) \ - KERNEL_DTB() + KERNEL_DTB() \ + IRQCHIP_OF_MATCH_TABLE()#define INIT_TEXT \ *(.init.text) \
include/linux/irqchip.h new file +16 -0
@@ -0,0 +1,16 @@ +/* +* Copyright (C) 2012 Thomas Petazzoni +* +* Thomas Petazzoni <[email protected]> +* +* This file is licensed under the terms of the GNU General Public +* License version 2. This program is licensed "as is" without any +* warranty of any kind, whether express or implied. +*/ + +#ifndef _LINUX_IRQCHIP_H +#define _LINUX_IRQCHIP_H + +void irqchip_init (void ); + +#endif
Signature · 1 line
1.7.10.4
Arnd Bergmann
maintainerPATCH v4 1/19 irqchip: add basic infrastructure
Quoted 5 lines · Rob Herring
So, upon the suggestion of Rob Herring and Arnd Bergmann, this commit introduces a small infrastructure that defines a central
irqchip_init()function indrivers/irqchip/irqchip.c, which is meant to be called as the ->init_irq() callback of ARM platforms. This function callsof_irq_init()with an array that will progressively
Quoted 8 lines
contain the compatible strings of each irq controller driver, and also a reference to the initialization functions of such drivers. The
drivers/irqchip/irqchip.hheader file, currently empty, is added to allow irq controller drivers to expose their initialization function to the mainirqchip.cfile. Note that the irq controller driver initialization function is responsible for setting the globalhandle_arch_irq()variable, so that ARM platforms no longer have to define the ->handle_irq field in theirDT_MACHINEstructure.
This changeset text looks like it refers to an older version of the patch that did not have the section magic yet.
Quoted 3 lines
Signed-off-by Thomas Petazzoni <[email protected]>Reviewed-by Stephen Warren <[email protected]>Reviewed-by Rob Herring <[email protected]>
I actually liked the old version better because it was more obvious to the casual reader how it fits together, but I'm not going to stand in the way if other people like it this way.
PATCH v4 1/19 irqchip: add basic infrastructure
Quoted 22 lines · Arnd Bergmann
Quoted 5 lines · Rob Herring
So, upon the suggestion of Rob Herring and Arnd Bergmann, this commit introduces a small infrastructure that defines a central
irqchip_init()function indrivers/irqchip/irqchip.c, which is meant to be called as the ->init_irq() callback of ARM platforms. This function callsof_irq_init()with an array that will progressivelyQuoted 8 lines
contain the compatible strings of each irq controller driver, and also a reference to the initialization functions of such drivers. The
drivers/irqchip/irqchip.hheader file, currently empty, is added to allow irq controller drivers to expose their initialization function to the mainirqchip.cfile. Note that the irq controller driver initialization function is responsible for setting the globalhandle_arch_irq()variable, so that ARM platforms no longer have to define the ->handle_irq field in theirDT_MACHINEstructure.This changeset text looks like it refers to an older version of the patch that did not have the section magic yet.
Quoted 3 lines
Signed-off-by Thomas Petazzoni <[email protected]>Reviewed-by Stephen Warren <[email protected]>Reviewed-by Rob Herring <[email protected]>
Quoted 5 lines
I actually liked the old version better because it was more obvious to the casual reader how it fits together, but I'm not going to stand in the way if other people like it this way.
Acked-by Arnd Bergmann <[email protected]>
The timers are going down the same route, so we should agree on the direction. I was concerned too that it is a little too much magic, but it is a bit cleaner and should have fewer merge conflicts.
Rob
PATCH v4 1/19 irqchip: add basic infrastructure
Dear Rob Herring,
Quoted 3 lines · Rob Herring
The timers are going down the same route, so we should agree on the direction. I was concerned too that it is a little too much magic, but it is a bit cleaner and should have fewer merge conflicts.
Indeed. Before doing the section magic thing, there were explicit calls, and it was causing conflicts every time I was rebasing the patch series to shuffle things around.
There are already gazillions of magic ELF sections being used all over the place, so I'd say this mechanism is no longer magic for most of the kernel people nowadays.
Best regards,
Thomas
Signature · 4 lines
Thomas Petazzoni, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com
PATCH v4 2/19 arm: add set_handle_irq() to register the parent IRQ controller handler function
In reply to Rob HerringFrom: Thomas Petazzoni <[email protected]>
In order to allow irqchip drivers to register their IRQ handling function as the parent IRQ controller handler function, we provide a convenience function. This will avoid poking directly into the global handle_arch_irq variable.
Suggested by Arnd Bergmann.
--- arch/arm/include/asm/mach/irq.h | 1 + arch/arm/kernel/irq.c | 10 ++++++++++ 2 files changed, 11 insertions(+)
arch/arm/include/asm/mach/irq.h +1 -0
@@ -22,6 +22,7 @@ extern int show_fiq_list(struct seq_file *, int);#ifdef CONFIG_MULTI_IRQ_HANDLER extern void (*handle_arch_irq)(struct pt_regs *); +extern void set_handle_irq (void (*handle_irq)(struct pt_regs *));#endif /*
arch/arm/kernel/irq.c +10 -0
@@ -117,6 +117,16 @@ void __init init_IRQ(void) machine_desc->init_irq (); } +#ifdef CONFIG_MULTI_IRQ_HANDLER +void __init set_handle_irq (void (*handle_irq)(struct pt_regs *)) +{ +if (handle_arch_irq) +return ; + + handle_arch_irq = handle_irq; +} +#endif +#ifdef CONFIG_SPARSE_IRQ int __init arch_probe_nr_irqs (void ) {
Signature · 1 line
1.7.10.4
PATCH v4 3/19 ARM: mach-ux500: use SGI0 to wake up the other core
In reply to Rob HerringFrom: Srinidhi Kasagar <[email protected]>
The commit 7d28e3eaa1a8e951251b942e7220f97114bd73b9 ("ARM: ux500: wake secondary cpu via resched") makes use of schedule IPI to wake up the secondary core which seems incorrect. Rather use SGI0.
--- arch/arm/mach-ux500/platsmp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/mach-ux500/platsmp.c +1 -1
@@ -91,7 +91,7 @@ static int __cpuinit ux500_boot_secondary(unsigned int cpu, struct task_struct **/ write_pen_release (cpu_logical_map (cpu)); -smp_send_reschedule (cpu); +gic_raise_softirq (cpumask_of (cpu),0 ); timeout = jiffies + (1 *HZ );while (time_before (jiffies, timeout)) {
Signature · 1 line
1.7.10.4
PATCH v4 4/19 ARM: GIC: remove assembly ifdefs from gic.h
In reply to Rob HerringFrom: Rob Herring <[email protected]>
With multi irq handler and all GIC users converted to it, we don't need asm/hardware/gic.h to be included in assembly. Clean-up ifdefs and unnecessary includes.
--- arch/arm/include/asm/hardware/gic.h | 6 ------ 1 file changed, 6 deletions(-)
arch/arm/include/asm/hardware/gic.h +0 -6
@@ -10,8 +10,6 @@#ifndef __ASM_ARM_HARDWARE_GIC_H#define __ASM_ARM_HARDWARE_GIC_H -#include <linux/compiler.h> -#define GIC_CPU_CTRL 0x00#define GIC_CPU_PRIMASK 0x04#define GIC_CPU_BINPOINT 0x08
@@ -32,8 +30,6 @@#define GIC_DIST_CONFIG 0xc00#define GIC_DIST_SOFTINT 0xf00 -#ifndef __ASSEMBLY__ -#include <linux/irqdomain.h> struct device_node ;extern struct irq_chip gic_arch_extn;
@@ -53,5 +49,3 @@ static inline void gic_init(unsigned int nr, int start, }#endif - -#endif
Signature · 1 line
1.7.10.4
PATCH v4 5/19 ARM: GIC: remove direct use of gic_raise_softirq
In reply to Rob HerringFrom: Rob Herring <[email protected]>
In preparation of moving gic code to drivers/irqchip, remove the direct platform dependencies on gic_raise_softirq. Move the setup of smp_cross_call into the gic code and use arch_send_wakeup_ipi_mask function to trigger wake-up IPIs.
--- arch/arm/common/gic.c | 45 +++++++++++++++++++---------------- arch/arm/include/asm/hardware/gic.h | 1 - arch/arm/kernel/smp.c | 3 ++- arch/arm/mach-exynos/platsmp.c | 4 +--- arch/arm/mach-highbank/platsmp.c | 4 +--- arch/arm/mach-imx/platsmp.c | 2 -- arch/arm/mach-msm/platsmp.c | 4 +--- arch/arm/mach-omap2/omap-smp.c | 4 +--- arch/arm/mach-realview/platsmp.c | 3 --- arch/arm/mach-shmobile/platsmp.c | 2 -- arch/arm/mach-shmobile/smp-emev2.c | 2 +- arch/arm/mach-socfpga/platsmp.c | 2 -- arch/arm/mach-spear13xx/platsmp.c | 2 -- arch/arm/mach-tegra/platsmp.c | 2 -- arch/arm/mach-ux500/platsmp.c | 4 +--- arch/arm/mach-vexpress/ct-ca9x4.c | 2 -- arch/arm/mach-vexpress/platsmp.c | 2 -- arch/arm/plat-versatile/platsmp.c | 2 +- 18 files changed, 33 insertions(+), 57 deletions(-)
arch/arm/common/gic.c +24 -21
@@ -617,6 +617,27 @@ static void __init gic_pm_init(struct gic_chip_data *gic) }#endif +#ifdef CONFIG_SMP +void gic_raise_softirq (const struct cpumask *mask,unsigned int irq) +{ +int cpu; +unsigned long map =0 ; + +/* Convert our logical CPU mask into a physical one. */ +for_each_cpu (cpu, mask) + map |=1 <<cpu_logical_map (cpu); + +/* +* Ensure that stores to Normal memory are visible to the +* other CPUs before issuing the IPI. +*/ +dsb (); + +/* this always happens on GIC0 */ +writel_relaxed (map <<16 | irq,gic_data_dist_base (&gic_data[0 ]) +GIC_DIST_SOFTINT ); +} +#endif +static int gic_irq_domain_map (struct irq_domain *d,unsigned int irq,irq_hw_number_t hw) {
@@ -743,6 +764,9 @@ void __init gic_init_bases(unsigned int gic_nr, int irq_start,if (WARN_ON (!gic->domain))return ; +#ifdef CONFIG_SMP +set_smp_cross_call (gic_raise_softirq); +#endif gic_chip.flags |= gic_arch_extn.flags;gic_dist_init (gic);gic_cpu_init (gic);
@@ -756,27 +780,6 @@ void __cpuinit gic_secondary_init(unsigned int gic_nr)gic_cpu_init (&gic_data[gic_nr]); } -#ifdef CONFIG_SMP -void gic_raise_softirq (const struct cpumask *mask,unsigned int irq) -{ -int cpu; -unsigned long map =0 ; - -/* Convert our logical CPU mask into a physical one. */ -for_each_cpu (cpu, mask) - map |= gic_cpu_map[cpu]; - -/* -* Ensure that stores to Normal memory are visible to the -* other CPUs before issuing the IPI. -*/ -dsb (); - -/* this always happens on GIC0 */ -writel_relaxed (map <<16 | irq,gic_data_dist_base (&gic_data[0 ]) +GIC_DIST_SOFTINT ); -} -#endif -#ifdef CONFIG_OF static int gic_cnt__initdata =0 ;
arch/arm/include/asm/hardware/gic.h +0 -1
@@ -40,7 +40,6 @@ int gic_of_init(struct device_node *node, struct device_node *parent);void gic_secondary_init (unsigned int );void gic_handle_irq (struct pt_regs *regs);void gic_cascade_irq (unsigned int gic_nr,unsigned int irq); -void gic_raise_softirq (const struct cpumask *mask,unsigned int irq);static inline void gic_init (unsigned int nr,int start,void __iomem *dist ,void __iomem *cpu)
arch/arm/kernel/smp.c +2 -1
@@ -416,7 +416,8 @@ static void (*smp_cross_call)(const struct cpumask *, unsigned int);void __init set_smp_cross_call (void (*fn)(const struct cpumask *,unsigned int )) { - smp_cross_call = fn; +if (!smp_cross_call) + smp_cross_call = fn; }void arch_send_call_function_ipi_mask (const struct cpumask *mask)
arch/arm/mach-exynos/platsmp.c +1 -3
@@ -149,7 +149,7 @@ static int __cpuinit exynos_boot_secondary(unsigned int cpu, struct task_struct__raw_writel (virt_to_phys (exynos4_secondary_startup),cpu_boot_reg (phys_cpu)); -gic_raise_softirq (cpumask_of (cpu),0 ); +arch_send_wakeup_ipi_mask (cpumask_of (cpu));if (pen_release ==-1 )break ;
@@ -190,8 +190,6 @@ static void __init exynos_smp_init_cpus(void)for (i =0 ; i < ncores; i++)set_cpu_possible (i, true); - -set_smp_cross_call (gic_raise_softirq); }static void __init exynos_smp_prepare_cpus (unsigned int max_cpus)
arch/arm/mach-highbank/platsmp.c +1 -3
@@ -32,7 +32,7 @@ static void __cpuinit highbank_secondary_init(unsigned int cpu)static int __cpuinit highbank_boot_secondary (unsigned int cpu,struct task_struct *idle) { -gic_raise_softirq (cpumask_of (cpu),0 ); +arch_send_wakeup_ipi_mask (cpumask_of (cpu));return 0 ; }
@@ -55,8 +55,6 @@ static void __init highbank_smp_init_cpus(void)for (i =0 ; i < ncores; i++)set_cpu_possible (i, true); - -set_smp_cross_call (gic_raise_softirq); }static void __init highbank_smp_prepare_cpus (unsigned int max_cpus)
arch/arm/mach-imx/platsmp.c +0 -2
@@ -71,8 +71,6 @@ static void __init imx_smp_init_cpus(void)for (i =0 ; i < ncores; i++)set_cpu_possible (i, true); - -set_smp_cross_call (gic_raise_softirq); }void imx_smp_prepare (void )
arch/arm/mach-msm/platsmp.c +1 -3
@@ -115,7 +115,7 @@ static int __cpuinit msm_boot_secondary(unsigned int cpu, struct task_struct *id* the boot monitor to read the system wide flags register, * and branch to the address found there. */ -gic_raise_softirq (cpumask_of (cpu),0 ); +arch_send_wakeup_ipi_mask (cpumask_of (cpu)); timeout = jiffies + (1 *HZ );while (time_before (jiffies, timeout)) {
@@ -153,8 +153,6 @@ static void __init msm_smp_init_cpus(void)for (i =0 ; i < ncores; i++)set_cpu_possible (i, true); - -set_smp_cross_call (gic_raise_softirq); }static void __init msm_smp_prepare_cpus (unsigned int max_cpus)
arch/arm/mach-omap2/omap-smp.c +1 -3
@@ -157,7 +157,7 @@ static int __cpuinit omap4_boot_secondary(unsigned int cpu, struct task_struct * booted = true; } -gic_raise_softirq (cpumask_of (cpu),0 ); +arch_send_wakeup_ipi_mask (cpumask_of (cpu));/* * Now the secondary core is starting up let it run its
@@ -231,8 +231,6 @@ static void __init omap4_smp_init_cpus(void)for (i =0 ; i < ncores; i++)set_cpu_possible (i, true); - -set_smp_cross_call (gic_raise_softirq); }static void __init omap4_smp_prepare_cpus (unsigned int max_cpus)
arch/arm/mach-realview/platsmp.c +0 -3
@@ -14,7 +14,6 @@#include <linux/io.h> #include <mach/hardware.h> -#include <asm/hardware/gic.h> #include <asm/mach-types.h> #include <asm/smp_scu.h>
@@ -59,8 +58,6 @@ static void __init realview_smp_init_cpus(void)for (i =0 ; i < ncores; i++)set_cpu_possible (i, true); - -set_smp_cross_call (gic_raise_softirq); }static void __init realview_smp_prepare_cpus (unsigned int max_cpus)
arch/arm/mach-shmobile/platsmp.c +0 -2
@@ -26,6 +26,4 @@ void __init shmobile_smp_init_cpus(unsigned int ncores)for (i =0 ; i < ncores; i++)set_cpu_possible (i, true); - -set_smp_cross_call (gic_raise_softirq); }
arch/arm/mach-shmobile/smp-emev2.c +1 -1
@@ -100,7 +100,7 @@ static int __cpuinit emev2_boot_secondary(unsigned int cpu, struct task_struct */* Tell ROM loader about our vector (in headsmp.S) */ emev2_set_boot_vector (__pa (shmobile_secondary_vector)); -gic_raise_softirq (cpumask_of (cpu),0 ); +arch_send_wakeup_ipi_mask (cpumask_of (cpu));return 0 ; }
arch/arm/mach-socfpga/platsmp.c +0 -2
@@ -83,8 +83,6 @@ static void __init socfpga_smp_init_cpus(void)for (i =0 ; i < ncores; i++)set_cpu_possible (i, true); - -set_smp_cross_call (gic_raise_softirq); }static void __init socfpga_smp_prepare_cpus (unsigned int max_cpus)
arch/arm/mach-spear13xx/platsmp.c +0 -2
@@ -104,8 +104,6 @@ static void __init spear13xx_smp_init_cpus(void)for (i =0 ; i < ncores; i++)set_cpu_possible (i, true); - -set_smp_cross_call (gic_raise_softirq); }static void __init spear13xx_smp_prepare_cpus (unsigned int max_cpus)
arch/arm/mach-tegra/platsmp.c +0 -2
@@ -159,8 +159,6 @@ static void __init tegra_smp_init_cpus(void)for (i =0 ; i < ncores; i++)set_cpu_possible (i, true); - -set_smp_cross_call (gic_raise_softirq); }static void __init tegra_smp_prepare_cpus (unsigned int max_cpus)
arch/arm/mach-ux500/platsmp.c +1 -3
@@ -91,7 +91,7 @@ static int __cpuinit ux500_boot_secondary(unsigned int cpu, struct task_struct **/ write_pen_release (cpu_logical_map (cpu)); -gic_raise_softirq (cpumask_of (cpu),0 ); +arch_send_wakeup_ipi_mask (cpumask_of (cpu)); timeout = jiffies + (1 *HZ );while (time_before (jiffies, timeout)) {
@@ -155,8 +155,6 @@ static void __init ux500_smp_init_cpus(void)for (i =0 ; i < ncores; i++)set_cpu_possible (i, true); - -set_smp_cross_call (gic_raise_softirq); }static void __init ux500_smp_prepare_cpus (unsigned int max_cpus)
arch/arm/mach-vexpress/ct-ca9x4.c +0 -2
@@ -182,8 +182,6 @@ static void __init ct_ca9x4_init_cpu_map(void)for (i =0 ; i < ncores; ++i)set_cpu_possible (i, true); - -set_smp_cross_call (gic_raise_softirq); }static void __init ct_ca9x4_smp_enable (unsigned int max_cpus)
arch/arm/mach-vexpress/platsmp.c +0 -2
@@ -128,8 +128,6 @@ static void __init vexpress_dt_smp_init_cpus(void)for (i =0 ; i < ncores; ++i)set_cpu_possible (i, true); - -set_smp_cross_call (gic_raise_softirq); }static void __init vexpress_dt_smp_prepare_cpus (unsigned int max_cpus)
arch/arm/plat-versatile/platsmp.c +1 -1
@@ -79,7 +79,7 @@ int __cpuinit versatile_boot_secondary(unsigned int cpu, struct task_struct *idl* the boot monitor to read the system wide flags register, * and branch to the address found there. */ -gic_raise_softirq (cpumask_of (cpu),0 ); +arch_send_wakeup_ipi_mask (cpumask_of (cpu)); timeout = jiffies + (1 *HZ );while (time_before (jiffies, timeout)) {
Signature · 1 line
1.7.10.4
PATCH v4 5/19 ARM: GIC: remove direct use of gic_raise_softirq
Quoted 6 lines · Rob Herring
From: Rob Herring <[email protected]>
In preparation of moving gic code to
drivers/irqchip, remove the direct platform dependencies ongic_raise_softirq. Move the setup ofsmp_cross_callinto the gic code and usearch_send_wakeup_ipi_maskfunction to trigger wake-up IPIs.
For all the Tegra-related parts,
Will this series be put into an arm-soc (or other stable) branch that I can pull into any Tegra branches in case there are any merge conflicts?
Arnd Bergmann
maintainerPATCH v4 5/19 ARM: GIC: remove direct use of gic_raise_softirq
Quoted 8 lines · Stephen Warren
Quoted 6 lines · Rob Herring
From: Rob Herring <[email protected]>
In preparation of moving gic code to
drivers/irqchip, remove the direct platform dependencies ongic_raise_softirq. Move the setup ofsmp_cross_callinto the gic code and usearch_send_wakeup_ipi_maskfunction to trigger wake-up IPIs.
Quoted 5 lines
For all the Tegra-related parts,
Acked-by Stephen Warren <[email protected]>Will this series be put into an arm-soc (or other stable) branch that I can pull into any Tegra branches in case there are any merge conflicts?
Yes, I think we should have it in arm-soc, there would be a lot of nasty conflicts otherwise.
It probably makes sense to also have it in the tip tree if since Thomas Gleixner as the IRQ maintainer is the owner of this subsystem, unless he has other preferences.
I would also suggest adding the patch below to the series. Note that I don't care who is maintaining drivers/irqchip, and Rob might want to be listed as well, but Thomas mentioned a couple of months ago that he wanted to get Cc'd on irqchip drivers patches.
8<-----
irqchip: add MAINTAINERS entry for drivers/irqchip
The drivers/irqchip directory now contains generic irqchip drivers, so it makes sense to add them to the MAINTAINERS entry for the IRQ subsystem.
MAINTAINERS +1 -0
@@ -4185,6 +4185,7 @@ M: Thomas Gleixner <[email protected]> S: Maintained T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core F: kernel/irq/ +F: drivers/irqchip/ IRQ DOMAINS (IRQ NUMBER MAPPING LIBRARY) M: Benjamin Herrenschmidt <[email protected]>
PATCH v4 6/19 ARM: GIC: set handle_arch_irq in GIC initialization
In reply to Rob HerringFrom: Rob Herring <[email protected]>
Set handle_arch_irq to gic_handle_irq. Only the first GIC initialized can setup the handler.
--- arch/arm/common/gic.c | 3 +++ 1 file changed, 3 insertions(+)
arch/arm/common/gic.c +3 -0
@@ -767,6 +767,9 @@ void __init gic_init_bases(unsigned int gic_nr, int irq_start,#ifdef CONFIG_SMP set_smp_cross_call (gic_raise_softirq);#endif + +set_handle_irq (gic_handle_irq); + gic_chip.flags |= gic_arch_extn.flags;gic_dist_init (gic);gic_cpu_init (gic);
Signature · 1 line
1.7.10.4
PATCH v4 7/19 ARM: remove mach .handle_irq for GIC users
In reply to Rob HerringFrom: Rob Herring <[email protected]>
Now that the GIC initialization sets up the handle_arch_irq pointer, we can remove it for all machines.
--- arch/arm/common/gic.c | 2 +- arch/arm/include/asm/hardware/gic.h | 1 - arch/arm/kernel/smp_twd.c | 1 - arch/arm/mach-bcm/board_bcm.c | 1 - arch/arm/mach-cns3xxx/cns3420vb.c | 2 -- arch/arm/mach-exynos/mach-armlex4210.c | 2 -- arch/arm/mach-exynos/mach-exynos4-dt.c | 2 -- arch/arm/mach-exynos/mach-exynos5-dt.c | 2 -- arch/arm/mach-exynos/mach-nuri.c | 2 -- arch/arm/mach-exynos/mach-origen.c | 2 -- arch/arm/mach-exynos/mach-smdk4x12.c | 3 --- arch/arm/mach-exynos/mach-smdkv310.c | 3 --- arch/arm/mach-exynos/mach-universal_c210.c | 2 -- arch/arm/mach-exynos/mct.c | 1 - arch/arm/mach-highbank/highbank.c | 1 - arch/arm/mach-imx/common.h | 1 - arch/arm/mach-imx/mach-imx6q.c | 1 - arch/arm/mach-msm/board-dt-8660.c | 1 - arch/arm/mach-msm/board-dt-8960.c | 1 - arch/arm/mach-msm/timer.c | 1 - arch/arm/mach-omap2/board-4430sdp.c | 1 - arch/arm/mach-omap2/board-generic.c | 3 --- arch/arm/mach-omap2/board-omap4panda.c | 1 - arch/arm/mach-realview/core.c | 1 - arch/arm/mach-realview/realview_eb.c | 1 - arch/arm/mach-realview/realview_pb1176.c | 1 - arch/arm/mach-realview/realview_pb11mp.c | 1 - arch/arm/mach-realview/realview_pba8.c | 1 - arch/arm/mach-realview/realview_pbx.c | 1 - arch/arm/mach-shmobile/board-ag5evm.c | 1 - arch/arm/mach-shmobile/board-kota2.c | 1 - arch/arm/mach-shmobile/board-kzm9d.c | 2 -- arch/arm/mach-shmobile/board-kzm9g.c | 1 - arch/arm/mach-shmobile/board-marzen.c | 2 -- arch/arm/mach-shmobile/platsmp.c | 1 - arch/arm/mach-shmobile/setup-emev2.c | 1 - arch/arm/mach-socfpga/socfpga.c | 1 - arch/arm/mach-spear13xx/spear1310.c | 1 - arch/arm/mach-spear13xx/spear1340.c | 1 - arch/arm/mach-tegra/board-dt-tegra20.c | 3 --- arch/arm/mach-tegra/board-dt-tegra30.c | 2 -- arch/arm/mach-ux500/board-mop500.c | 5 ----- arch/arm/mach-ux500/cpu-db8500.c | 2 -- arch/arm/mach-vexpress/platsmp.c | 1 - arch/arm/mach-vexpress/v2m.c | 2 -- arch/arm/mach-zynq/common.c | 1 - 46 files changed, 1 insertion(+), 70 deletions(-)
arch/arm/common/gic.c +1 -1
@@ -276,7 +276,7 @@ static int gic_set_wake(struct irq_data *d, unsigned int on)#define gic_set_wake NULL#endif -asmlinkage void __exception_irq_entry gic_handle_irq(struct pt_regs *regs) +static asmlinkage void __exception_irq_entry gic_handle_irq(struct pt_regs *regs) {u32 irqstat, irqnr;struct gic_chip_data *gic = &gic_data[0 ];
arch/arm/include/asm/hardware/gic.h +0 -1
@@ -38,7 +38,6 @@ void gic_init_bases(unsigned int, int, void __iomem *, void __iomem *, u32 offset, struct device_node *);int gic_of_init (struct device_node *node,struct device_node *parent);void gic_secondary_init (unsigned int ); -void gic_handle_irq (struct pt_regs *regs);void gic_cascade_irq (unsigned int gic_nr,unsigned int irq); static inline void gic_init(unsigned int nr, int start,
arch/arm/kernel/smp_twd.c +0 -1
@@ -24,7 +24,6 @@#include <asm/smp_twd.h> #include <asm/localtimer.h> -#include <asm/hardware/gic.h> /* set up by the platform code */ static void __iomem *twd_base;
arch/arm/mach-bcm/board_bcm.c +0 -1
@@ -53,5 +53,4 @@ DT_MACHINE_START(BCM11351_DT, "Broadcom Application Processor") .timer = &timer, .init_machine = board_init, .dt_compat = bcm11351_dt_compat, - .handle_irq = gic_handle_irq,MACHINE_END
arch/arm/mach-cns3xxx/cns3420vb.c +0 -2
@@ -28,7 +28,6 @@#include <linux/usb/ohci_pdriver.h> #include <asm/setup.h> #include <asm/mach-types.h> -#include <asm/hardware/gic.h> #include <asm/mach/arch.h> #include <asm/mach/map.h> #include <asm/mach/time.h>
@@ -251,7 +250,6 @@ MACHINE_START(CNS3420VB, "Cavium Networks CNS3420 Validation Board") .map_io = cns3420_map_io, .init_irq = cns3xxx_init_irq, .timer = &cns3xxx_timer, - .handle_irq = gic_handle_irq, .init_machine = cns3420_init, .restart = cns3xxx_restart,MACHINE_END
arch/arm/mach-exynos/mach-armlex4210.c +0 -2
@@ -16,7 +16,6 @@#include <linux/smsc911x.h> #include <asm/mach/arch.h> -#include <asm/hardware/gic.h> #include <asm/mach-types.h> #include <plat/cpu.h>
@@ -201,7 +200,6 @@ MACHINE_START(ARMLEX4210, "ARMLEX4210") .smp = smp_ops(exynos_smp_ops), .init_irq = exynos4_init_irq, .map_io = armlex4210_map_io, - .handle_irq = gic_handle_irq, .init_machine = armlex4210_machine_init, .init_late = exynos_init_late, .timer = &exynos4_timer,
arch/arm/mach-exynos/mach-exynos4-dt.c +0 -2
@@ -15,7 +15,6 @@#include <linux/serial_core.h> #include <asm/mach/arch.h> -#include <asm/hardware/gic.h> #include <mach/map.h> #include <plat/cpu.h>
@@ -107,7 +106,6 @@ DT_MACHINE_START(EXYNOS4210_DT, "Samsung Exynos4 (Flattened Device Tree)") .smp = smp_ops(exynos_smp_ops), .init_irq = exynos4_init_irq, .map_io = exynos4_dt_map_io, - .handle_irq = gic_handle_irq, .init_machine = exynos4_dt_machine_init, .init_late = exynos_init_late, .timer = &exynos4_timer,
arch/arm/mach-exynos/mach-exynos5-dt.c +0 -2
@@ -16,7 +16,6 @@#include <linux/io.h> #include <asm/mach/arch.h> -#include <asm/hardware/gic.h> #include <mach/map.h> #include <mach/regs-pmu.h>
@@ -179,7 +178,6 @@ DT_MACHINE_START(EXYNOS5_DT, "SAMSUNG EXYNOS5 (Flattened Device Tree)") .init_irq = exynos5_init_irq, .smp = smp_ops(exynos_smp_ops), .map_io = exynos5_dt_map_io, - .handle_irq = gic_handle_irq, .init_machine = exynos5_dt_machine_init, .init_late = exynos_init_late, .timer = &exynos4_timer,
arch/arm/mach-exynos/mach-nuri.c +0 -2
@@ -39,7 +39,6 @@#include <media/v4l2-mediabus.h> #include <asm/mach/arch.h> -#include <asm/hardware/gic.h> #include <asm/mach-types.h> #include <plat/adc.h>
@@ -1379,7 +1378,6 @@ MACHINE_START(NURI, "NURI") .smp = smp_ops(exynos_smp_ops), .init_irq = exynos4_init_irq, .map_io = nuri_map_io, - .handle_irq = gic_handle_irq, .init_machine = nuri_machine_init, .init_late = exynos_init_late, .timer = &exynos4_timer,
arch/arm/mach-exynos/mach-origen.c +0 -2
@@ -29,7 +29,6 @@#include <linux/platform_data/usb-exynos.h> #include <asm/mach/arch.h> -#include <asm/hardware/gic.h> #include <asm/mach-types.h> #include <video/platform_lcd.h>
@@ -814,7 +813,6 @@ MACHINE_START(ORIGEN, "ORIGEN") .smp = smp_ops(exynos_smp_ops), .init_irq = exynos4_init_irq, .map_io = origen_map_io, - .handle_irq = gic_handle_irq, .init_machine = origen_machine_init, .init_late = exynos_init_late, .timer = &exynos4_timer,
arch/arm/mach-exynos/mach-smdk4x12.c +0 -3
@@ -25,7 +25,6 @@#include <linux/platform_data/s3c-hsotg.h> #include <asm/mach/arch.h> -#include <asm/hardware/gic.h> #include <asm/mach-types.h> #include <video/samsung_fimd.h>
@@ -376,7 +375,6 @@ MACHINE_START(SMDK4212, "SMDK4212") .smp = smp_ops(exynos_smp_ops), .init_irq = exynos4_init_irq, .map_io = smdk4x12_map_io, - .handle_irq = gic_handle_irq, .init_machine = smdk4x12_machine_init, .timer = &exynos4_timer, .restart = exynos4_restart,
@@ -390,7 +388,6 @@ MACHINE_START(SMDK4412, "SMDK4412") .smp = smp_ops(exynos_smp_ops), .init_irq = exynos4_init_irq, .map_io = smdk4x12_map_io, - .handle_irq = gic_handle_irq, .init_machine = smdk4x12_machine_init, .init_late = exynos_init_late, .timer = &exynos4_timer,
arch/arm/mach-exynos/mach-smdkv310.c +0 -3
@@ -26,7 +26,6 @@#include <linux/platform_data/usb-exynos.h> #include <asm/mach/arch.h> -#include <asm/hardware/gic.h> #include <asm/mach-types.h> #include <video/platform_lcd.h>
@@ -423,7 +422,6 @@ MACHINE_START(SMDKV310, "SMDKV310") .smp = smp_ops(exynos_smp_ops), .init_irq = exynos4_init_irq, .map_io = smdkv310_map_io, - .handle_irq = gic_handle_irq, .init_machine = smdkv310_machine_init, .timer = &exynos4_timer, .reserve = &smdkv310_reserve,
@@ -436,7 +434,6 @@ MACHINE_START(SMDKC210, "SMDKC210") .smp = smp_ops(exynos_smp_ops), .init_irq = exynos4_init_irq, .map_io = smdkv310_map_io, - .handle_irq = gic_handle_irq, .init_machine = smdkv310_machine_init, .init_late = exynos_init_late, .timer = &exynos4_timer,
arch/arm/mach-exynos/mach-universal_c210.c +0 -2
@@ -29,7 +29,6 @@#include <drm/exynos_drm.h> #include <asm/mach/arch.h> -#include <asm/hardware/gic.h> #include <asm/mach-types.h> #include <video/samsung_fimd.h>
@@ -1151,7 +1150,6 @@ MACHINE_START(UNIVERSAL_C210, "UNIVERSAL_C210") .smp = smp_ops(exynos_smp_ops), .init_irq = exynos4_init_irq, .map_io = universal_map_io, - .handle_irq = gic_handle_irq, .init_machine = universal_machine_init, .init_late = exynos_init_late, .timer = &s5p_timer,
arch/arm/mach-exynos/mct.c +0 -1
@@ -22,7 +22,6 @@#include <linux/of.h> #include <asm/arch_timer.h> -#include <asm/hardware/gic.h> #include <asm/localtimer.h> #include <plat/cpu.h>
arch/arm/mach-highbank/highbank.c +0 -1
@@ -210,7 +210,6 @@ DT_MACHINE_START(HIGHBANK, "Highbank") .map_io = debug_ll_io_init, .init_irq = highbank_init_irq, .timer = &highbank_timer, - .handle_irq = gic_handle_irq, .init_machine = highbank_init, .dt_compat = highbank_match, .restart = highbank_restart,
arch/arm/mach-imx/common.h +0 -1
@@ -112,7 +112,6 @@ void tzic_handle_irq(struct pt_regs *);#define imx50_handle_irq tzic_handle_irq#define imx51_handle_irq tzic_handle_irq#define imx53_handle_irq tzic_handle_irq -#define imx6q_handle_irq gic_handle_irqextern void imx_enable_cpu (int cpu,bool enable);extern void imx_set_cpu_jump (int cpu,void *jump_addr);
arch/arm/mach-imx/mach-imx6q.c +0 -1
@@ -254,7 +254,6 @@ DT_MACHINE_START(IMX6Q, "Freescale i.MX6 Quad (Device Tree)") .smp = smp_ops(imx_smp_ops), .map_io = imx6q_map_io, .init_irq = imx6q_init_irq, - .handle_irq = imx6q_handle_irq, .timer = &imx6q_timer, .init_machine = imx6q_init_machine, .init_late = imx6q_init_late,
arch/arm/mach-msm/board-dt-8660.c +0 -1
@@ -56,7 +56,6 @@ DT_MACHINE_START(MSM_DT, "Qualcomm MSM (Flattened Device Tree)") .smp = smp_ops(msm_smp_ops), .map_io = msm_map_msm8x60_io, .init_irq = msm8x60_init_irq, - .handle_irq = gic_handle_irq, .init_machine = msm8x60_dt_init, .init_late = msm8x60_init_late, .timer = &msm_dt_timer,
arch/arm/mach-msm/board-dt-8960.c +0 -1
@@ -46,5 +46,4 @@ DT_MACHINE_START(MSM8960_DT, "Qualcomm MSM (Flattened Device Tree)") .timer = &msm_dt_timer, .init_machine = msm_dt_init, .dt_compat = msm8960_dt_match, - .handle_irq = gic_handle_irq,MACHINE_END
arch/arm/mach-msm/timer.c +0 -1
@@ -25,7 +25,6 @@#include <linux/of_irq.h> #include <asm/mach/time.h> -#include <asm/hardware/gic.h> #include <asm/localtimer.h> #include <asm/sched_clock.h>
arch/arm/mach-omap2/board-4430sdp.c +0 -1
@@ -722,7 +722,6 @@ MACHINE_START(OMAP_4430SDP, "OMAP4430 4430SDP board") .map_io = omap4_map_io, .init_early = omap4430_init_early, .init_irq = gic_init_irq, - .handle_irq = gic_handle_irq, .init_machine = omap_4430sdp_init, .init_late = omap4430_init_late, .timer = &omap4_timer,
arch/arm/mach-omap2/board-generic.c +0 -3
@@ -16,7 +16,6 @@#include <linux/of_platform.h> #include <linux/irqdomain.h> -#include <asm/hardware/gic.h> #include <asm/mach/arch.h> #include "common.h"
@@ -156,7 +155,6 @@ DT_MACHINE_START(OMAP4_DT, "Generic OMAP4 (Flattened Device Tree)") .map_io = omap4_map_io, .init_early = omap4430_init_early, .init_irq = omap_gic_of_init, - .handle_irq = gic_handle_irq, .init_machine = omap_generic_init, .init_late = omap4430_init_late, .timer = &omap4_timer,
@@ -177,7 +175,6 @@ DT_MACHINE_START(OMAP5_DT, "Generic OMAP5 (Flattened Device Tree)") .map_io = omap5_map_io, .init_early = omap5_init_early, .init_irq = omap_gic_of_init, - .handle_irq = gic_handle_irq, .init_machine = omap_generic_init, .timer = &omap5_timer, .dt_compat = omap5_boards_compat,
arch/arm/mach-omap2/board-omap4panda.c +0 -1
@@ -453,7 +453,6 @@ MACHINE_START(OMAP4_PANDA, "OMAP4 Panda board") .map_io = omap4_map_io, .init_early = omap4430_init_early, .init_irq = gic_init_irq, - .handle_irq = gic_handle_irq, .init_machine = omap4_panda_init, .init_late = omap4430_init_late, .timer = &omap4_timer,
arch/arm/mach-realview/core.c +0 -1
@@ -42,7 +42,6 @@#include <asm/mach/irq.h> #include <asm/mach/map.h> -#include <asm/hardware/gic.h> #include <mach/platform.h> #include <mach/irqs.h>
arch/arm/mach-realview/realview_eb.c +0 -1
@@ -473,7 +473,6 @@ MACHINE_START(REALVIEW_EB, "ARM-RealView EB") .init_early = realview_init_early, .init_irq = gic_init_irq, .timer = &realview_eb_timer, - .handle_irq = gic_handle_irq, .init_machine = realview_eb_init, #ifdef CONFIG_ZONE_DMA .dma_zone_size = SZ_256M,
arch/arm/mach-realview/realview_pb1176.c +0 -1
@@ -385,7 +385,6 @@ MACHINE_START(REALVIEW_PB1176, "ARM-RealView PB1176") .init_early = realview_init_early, .init_irq = gic_init_irq, .timer = &realview_pb1176_timer, - .handle_irq = gic_handle_irq, .init_machine = realview_pb1176_init, #ifdef CONFIG_ZONE_DMA .dma_zone_size = SZ_256M,
arch/arm/mach-realview/realview_pb11mp.c +0 -1
@@ -368,7 +368,6 @@ MACHINE_START(REALVIEW_PB11MP, "ARM-RealView PB11MPCore") .init_early = realview_init_early, .init_irq = gic_init_irq, .timer = &realview_pb11mp_timer, - .handle_irq = gic_handle_irq, .init_machine = realview_pb11mp_init, #ifdef CONFIG_ZONE_DMA .dma_zone_size = SZ_256M,
arch/arm/mach-realview/realview_pba8.c +0 -1
@@ -309,7 +309,6 @@ MACHINE_START(REALVIEW_PBA8, "ARM-RealView PB-A8") .init_early = realview_init_early, .init_irq = gic_init_irq, .timer = &realview_pba8_timer, - .handle_irq = gic_handle_irq, .init_machine = realview_pba8_init, #ifdef CONFIG_ZONE_DMA .dma_zone_size = SZ_256M,
arch/arm/mach-realview/realview_pbx.c +0 -1
@@ -405,7 +405,6 @@ MACHINE_START(REALVIEW_PBX, "ARM-RealView PBX") .init_early = realview_init_early, .init_irq = gic_init_irq, .timer = &realview_pbx_timer, - .handle_irq = gic_handle_irq, .init_machine = realview_pbx_init, #ifdef CONFIG_ZONE_DMA .dma_zone_size = SZ_256M,
arch/arm/mach-shmobile/board-ag5evm.c +0 -1
@@ -668,7 +668,6 @@ MACHINE_START(AG5EVM, "ag5evm") .init_early = sh73a0_add_early_devices, .nr_irqs = NR_IRQS_LEGACY, .init_irq = sh73a0_init_irq, - .handle_irq = gic_handle_irq, .init_machine = ag5evm_init, .init_late = shmobile_init_late, .timer = &shmobile_timer,
arch/arm/mach-shmobile/board-kota2.c +0 -1
@@ -550,7 +550,6 @@ MACHINE_START(KOTA2, "kota2") .init_early = sh73a0_add_early_devices, .nr_irqs = NR_IRQS_LEGACY, .init_irq = sh73a0_init_irq, - .handle_irq = gic_handle_irq, .init_machine = kota2_init, .init_late = shmobile_init_late, .timer = &shmobile_timer,
arch/arm/mach-shmobile/board-kzm9d.c +0 -2
@@ -28,7 +28,6 @@#include <mach/emev2.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> -#include <asm/hardware/gic.h> /* Dummy supplies, where voltage doesn't matter */ static struct regulator_consumer_supply dummy_supplies[] = {
@@ -89,7 +88,6 @@ DT_MACHINE_START(KZM9D_DT, "kzm9d") .init_early = emev2_add_early_devices, .nr_irqs = NR_IRQS_LEGACY, .init_irq = emev2_init_irq, - .handle_irq = gic_handle_irq, .init_machine = kzm9d_add_standard_devices, .init_late = shmobile_init_late, .timer = &shmobile_timer,
arch/arm/mach-shmobile/board-kzm9g.c +0 -1
@@ -792,7 +792,6 @@ DT_MACHINE_START(KZM9G_DT, "kzm9g") .init_early = sh73a0_add_early_devices, .nr_irqs = NR_IRQS_LEGACY, .init_irq = sh73a0_init_irq, - .handle_irq = gic_handle_irq, .init_machine = kzm_init, .init_late = shmobile_init_late, .timer = &shmobile_timer,
arch/arm/mach-shmobile/board-marzen.c +0 -2
@@ -44,7 +44,6 @@#include <mach/irqs.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> -#include <asm/hardware/gic.h> #include <asm/traps.h> /* Fixed 3.3V regulator to be used by SDHI0 */
@@ -382,7 +381,6 @@ MACHINE_START(MARZEN, "marzen") .init_early = r8a7779_add_early_devices, .nr_irqs = NR_IRQS_LEGACY, .init_irq = r8a7779_init_irq, - .handle_irq = gic_handle_irq, .init_machine = marzen_init, .init_late = marzen_init_late, .timer = &shmobile_timer,
arch/arm/mach-shmobile/platsmp.c +0 -1
@@ -12,7 +12,6 @@*/ #include <linux/init.h> #include <linux/smp.h> -#include <asm/hardware/gic.h> void __init shmobile_smp_init_cpus (unsigned int ncores) {
arch/arm/mach-shmobile/setup-emev2.c +0 -1
@@ -465,7 +465,6 @@ DT_MACHINE_START(EMEV2_DT, "Generic Emma Mobile EV2 (Flattened Device Tree)") .init_early = emev2_init_delay, .nr_irqs = NR_IRQS_LEGACY, .init_irq = emev2_init_irq_dt, - .handle_irq = gic_handle_irq, .init_machine = emev2_add_standard_devices_dt, .timer = &shmobile_timer, .dt_compat = emev2_boards_compat_dt,
arch/arm/mach-socfpga/socfpga.c +0 -1
@@ -106,7 +106,6 @@ DT_MACHINE_START(SOCFPGA, "Altera SOCFPGA") .smp = smp_ops(socfpga_smp_ops), .map_io = socfpga_map_io, .init_irq = gic_init_irq, - .handle_irq = gic_handle_irq, .timer = &dw_apb_timer, .init_machine = socfpga_cyclone5_init, .restart = socfpga_cyclone5_restart,
arch/arm/mach-spear13xx/spear1310.c +0 -1
@@ -91,7 +91,6 @@ DT_MACHINE_START(SPEAR1310_DT, "ST SPEAr1310 SoC with Flattened Device Tree") .smp = smp_ops(spear13xx_smp_ops), .map_io = spear1310_map_io, .init_irq = spear13xx_dt_init_irq, - .handle_irq = gic_handle_irq, .timer = &spear13xx_timer, .init_machine = spear1310_dt_init, .restart = spear_restart,
arch/arm/mach-spear13xx/spear1340.c +0 -1
@@ -185,7 +185,6 @@ DT_MACHINE_START(SPEAR1340_DT, "ST SPEAr1340 SoC with Flattened Device Tree") .smp = smp_ops(spear13xx_smp_ops), .map_io = spear13xx_map_io, .init_irq = spear13xx_dt_init_irq, - .handle_irq = gic_handle_irq, .timer = &spear13xx_timer, .init_machine = spear1340_dt_init, .restart = spear_restart,
arch/arm/mach-tegra/board-dt-tegra20.c +0 -3
@@ -25,7 +25,6 @@#include <linux/of.h> #include <linux/of_address.h> #include <linux/of_fdt.h> -#include <linux/of_irq.h> #include <linux/of_platform.h> #include <linux/pda_power.h> #include <linux/platform_data/tegra_usb.h>
@@ -34,7 +33,6 @@#include <linux/i2c-tegra.h> #include <linux/usb/tegra_usb_phy.h> -#include <asm/hardware/gic.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> #include <asm/mach/time.h>
@@ -202,7 +200,6 @@ DT_MACHINE_START(TEGRA_DT, "nVidia Tegra20 (Flattened Device Tree)") .smp = smp_ops(tegra_smp_ops), .init_early = tegra20_init_early, .init_irq = tegra_dt_init_irq, - .handle_irq = gic_handle_irq, .timer = &tegra_sys_timer, .init_machine = tegra_dt_init, .init_late = tegra_dt_init_late,
arch/arm/mach-tegra/board-dt-tegra30.c +0 -2
@@ -31,7 +31,6 @@#include <linux/of_platform.h> #include <asm/mach/arch.h> -#include <asm/hardware/gic.h> #include "board.h" #include "clock.h"
@@ -112,7 +111,6 @@ DT_MACHINE_START(TEGRA30_DT, "NVIDIA Tegra30 (Flattened Device Tree)") .map_io = tegra_map_common_io, .init_early = tegra30_init_early, .init_irq = tegra_dt_init_irq, - .handle_irq = gic_handle_irq, .timer = &tegra_sys_timer, .init_machine = tegra30_dt_init, .init_late = tegra_init_late,
arch/arm/mach-ux500/board-mop500.c +0 -5
@@ -40,7 +40,6 @@#include <asm/mach-types.h> #include <asm/mach/arch.h> -#include <asm/hardware/gic.h> #include <mach/hardware.h> #include <mach/setup.h>
@@ -752,7 +751,6 @@ MACHINE_START(U8500, "ST-Ericsson MOP500 platform") .init_irq = ux500_init_irq,/* we re-use nomadik timer here */ .timer = &ux500_timer, - .handle_irq = gic_handle_irq, .init_machine = mop500_init_machine, .init_late = ux500_init_late,MACHINE_END
@@ -762,7 +760,6 @@ MACHINE_START(U8520, "ST-Ericsson U8520 Platform HREFP520") .map_io = u8500_map_io, .init_irq = ux500_init_irq, .timer = &ux500_timer, - .handle_irq = gic_handle_irq, .init_machine = mop500_init_machine, .init_late = ux500_init_late,MACHINE_END
@@ -773,7 +770,6 @@ MACHINE_START(HREFV60, "ST-Ericsson U8500 Platform HREFv60+") .map_io = u8500_map_io, .init_irq = ux500_init_irq, .timer = &ux500_timer, - .handle_irq = gic_handle_irq, .init_machine = hrefv60_init_machine, .init_late = ux500_init_late,MACHINE_END
@@ -785,7 +781,6 @@ MACHINE_START(SNOWBALL, "Calao Systems Snowball platform") .init_irq = ux500_init_irq,/* we re-use nomadik timer here */ .timer = &ux500_timer, - .handle_irq = gic_handle_irq, .init_machine = snowball_init_machine, .init_late =NULL ,MACHINE_END
arch/arm/mach-ux500/cpu-db8500.c +0 -2
@@ -27,7 +27,6 @@#include <asm/pmu.h> #include <asm/mach/map.h> #include <asm/mach/arch.h> -#include <asm/hardware/gic.h> #include <mach/hardware.h> #include <mach/setup.h>
@@ -341,7 +340,6 @@ DT_MACHINE_START(U8500_DT, "ST-Ericsson Ux5x0 platform (Device Tree Support)") .init_irq = ux500_init_irq,/* we re-use nomadik timer here */ .timer = &ux500_timer, - .handle_irq = gic_handle_irq, .init_machine = u8500_init_machine, .init_late = NULL, .dt_compat = stericsson_dt_platform_compat,
arch/arm/mach-vexpress/platsmp.c +0 -1
@@ -16,7 +16,6 @@#include <linux/vexpress.h> #include <asm/smp_scu.h> -#include <asm/hardware/gic.h> #include <asm/mach/map.h> #include <mach/motherboard.h>
arch/arm/mach-vexpress/v2m.c +0 -2
@@ -377,7 +377,6 @@ MACHINE_START(VEXPRESS, "ARM-Versatile Express") .init_early = v2m_init_early, .init_irq = v2m_init_irq, .timer = &v2m_timer, - .handle_irq = gic_handle_irq, .init_machine = v2m_init, .restart = vexpress_restart,MACHINE_END
@@ -500,6 +499,5 @@ DT_MACHINE_START(VEXPRESS_DT, "ARM-Versatile Express") .init_irq = v2m_dt_init_irq, .timer = &v2m_dt_timer, .init_machine = v2m_dt_init, - .handle_irq = gic_handle_irq, .restart = vexpress_restart,MACHINE_END
arch/arm/mach-zynq/common.c +0 -1
@@ -118,7 +118,6 @@ static const char *xilinx_dt_match[] = {MACHINE_START (XILINX_EP107 ,"Xilinx Zynq Platform" ) .map_io = xilinx_map_io, .init_irq = xilinx_irq_init, - .handle_irq = gic_handle_irq, .init_machine = xilinx_init_machine, .timer = &xttcpss_sys_timer, .dt_compat = xilinx_dt_match,
Signature · 1 line
1.7.10.4
Arnd Bergmann
maintainerPATCH v4 7/19 ARM: remove mach .handle_irq for GIC users
Quoted 17 lines · Rob Herring
From: Rob Herring <[email protected]>
Now that the GIC initialization sets up the
handle_arch_irqpointer, we can remove it for all machines.Signed-off-by Rob Herring <[email protected]>Cc Russell King <[email protected]>Cc Anton Vorontsov <[email protected]>Cc Kyungmin Park <[email protected]>Cc Sascha Hauer <[email protected]>Cc David Brown <[email protected]>Cc Daniel Walker <[email protected]>Cc Bryan Huntsman <[email protected]>Cc Tony Lindgren <[email protected]>Cc Paul Mundt <[email protected]>Cc Magnus Damm <[email protected]>Cc Dinh Nguyen <[email protected]>
Quoted 8 lines
Cc Shiraz Hashim <[email protected]>Cc Stephen Warren <[email protected]>Cc Srinidhi Kasagar <[email protected]>Cc Linus Walleij <[email protected]>Acked-by Viresh Kumar <[email protected]>Acked-by Kukjin Kim <[email protected]>Acked-by Shawn Guo <[email protected]>Acked-by Olof Johansson <[email protected]>
Tony Lindgren
maintainerPATCH v4 7/19 ARM: remove mach .handle_irq for GIC users
In reply to Rob HerringQuoted 17 lines · Rob Herring
From: Rob Herring <[email protected]>
Now that the GIC initialization sets up the
handle_arch_irqpointer, we can remove it for all machines.Signed-off-by Rob Herring <[email protected]>Cc Russell King <[email protected]>Cc Anton Vorontsov <[email protected]>Cc Kyungmin Park <[email protected]>Cc Sascha Hauer <[email protected]>Cc David Brown <[email protected]>Cc Daniel Walker <[email protected]>Cc Bryan Huntsman <[email protected]>Cc Tony Lindgren <[email protected]>Cc Paul Mundt <[email protected]>Cc Magnus Damm <[email protected]>Cc Dinh Nguyen <[email protected]>
Quoted 8 lines
Cc Shiraz Hashim <[email protected]>Cc Stephen Warren <[email protected]>Cc Srinidhi Kasagar <[email protected]>Cc Linus Walleij <[email protected]>Acked-by Viresh Kumar <[email protected]>Acked-by Kukjin Kim <[email protected]>Acked-by Shawn Guo <[email protected]>Acked-by Olof Johansson <[email protected]>
Just got around boot testing this, if not too late:
PATCH v4 7/19 ARM: remove mach .handle_irq for GIC users
In reply to Rob Herringarch/arm/common/gic.c static int gic_set_wake(struct irq_data *d, unsigned int on) · line 279
Quoted 2 lines · Rob Herring
arch/arm/common/gic.c +1
-1-asmlinkage void __exception_irq_entry gic_handle_irq(struct pt_regs *regs) +static asmlinkage void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)
NAK. No, not "static asmlinkage".
PATCH v4 7/19 ARM: remove mach .handle_irq for GIC users
Quoted 5 lines · Russell King - ARM Linux
arch/arm/common/gic.c static int gic_set_wake(struct irq_data *d, unsigned int on) · line 279
Quoted 2 lines · Rob Herring
arch/arm/common/gic.c +1
-1-asmlinkage void __exception_irq_entry gic_handle_irq(struct pt_regs *regs) +static asmlinkage void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)NAK. No, not "static asmlinkage".
Okay will remove asmlinkage, but is there an issue with making this static?
Rob
PATCH v4 7/19 ARM: remove mach .handle_irq for GIC users
Quoted 8 lines · Rob Herring
Quoted 5 lines · Russell King - ARM Linux
arch/arm/common/gic.c static int gic_set_wake(struct irq_data *d, unsigned int on) · line 279
Quoted 2 lines · Rob Herring
arch/arm/common/gic.c +1
-1-asmlinkage void __exception_irq_entry gic_handle_irq(struct pt_regs *regs) +static asmlinkage void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)NAK. No, not "static asmlinkage".
Okay will remove asmlinkage, but is there an issue with making this static?
No, just for the asmlinkage. asmlinkage is used to mark functions which are called from assembly. Making them static generally means you can't call them from assembly (unless you have asm() code in the .c file which does, like our kernel_thread() implementation used to).
Ok, asmlinkage on ARM is a no-op, but it's useful cheap documentation to mark which C functions get called from assembly.
Arnd Bergmann
maintainerPATCH v4 7/19 ARM: remove mach .handle_irq for GIC users
Quoted 10 lines · Russell King - ARM Linux
Quoted 8 lines · Rob Herring
Quoted 5 lines · Russell King - ARM Linux
arch/arm/common/gic.c static int gic_set_wake(struct irq_data *d, unsigned int on) · line 279
Quoted 2 lines · Rob Herring
arch/arm/common/gic.c +1
-1-asmlinkage void __exception_irq_entry gic_handle_irq(struct pt_regs *regs) +static asmlinkage void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)NAK. No, not "static asmlinkage".
Okay will remove asmlinkage, but is there an issue with making this static?
Quoted 7 lines
No, just for the asmlinkage. asmlinkage is used to mark functions which are called from assembly. Making them static generally means you can't call them from assembly (unless you have
asm()code in the .c file which does, like ourkernel_thread()implementation used to).Ok, asmlinkage on ARM is a no-op, but it's useful cheap documentation to mark which C functions get called from assembly.
But with patches 6 and 12, we just pass the function pointer into set_handle_irq(), which allows us to make the function itself static, but it will still get called from assembly through that function pointer, which matches the definition of asmlinkage as far as I can tell.
Arnd
PATCH v4 8/19 irqchip: Move ARM GIC to drivers/irqchip
In reply to Rob HerringFrom: Rob Herring <[email protected]>
Now that we have drivers/irqchip, move GIC irqchip to drivers/irqchip. This is necessary to share the GIC with arm and arm64.
--- arch/arm/common/Kconfig | 8 -------- arch/arm/common/Makefile | 1 - drivers/irqchip/Kconfig | 8 ++++++++ drivers/irqchip/Makefile | 3 ++- arch/arm/common/gic.c => drivers/irqchip/irq-gic.c | 7 +++++++ 5 files changed, 17 insertions(+), 10 deletions(-) rename arch/arm/common/gic.c => drivers/irqchip/irq-gic.c (98%)
arch/arm/common/Kconfig +0 -8
@@ -1,11 +1,3 @@ -config ARM_GIC - bool - select IRQ_DOMAIN - select MULTI_IRQ_HANDLER - -config GIC_NON_BANKED - bool - config ARM_VIC bool select IRQ_DOMAIN
arch/arm/common/Makefile +0 -1
@@ -2,7 +2,6 @@ # Makefile for the linux kernel. # -obj-$(CONFIG_ARM_GIC) += gic.o obj-$(CONFIG_ARM_VIC) += vic.o obj-$(CONFIG_ICST) += icst.o obj-$(CONFIG_SA1111) += sa1111.o
drivers/irqchip/Kconfig +8 -0
@@ -2,6 +2,14 @@ config IRQCHIP def_bool y depends on OF_IRQ +config ARM_GIC + bool + select IRQ_DOMAIN + select MULTI_IRQ_HANDLER + +config GIC_NON_BANKED + bool + config VERSATILE_FPGA_IRQ bool select IRQ_DOMAIN
drivers/irqchip/Makefile +2 -1
@@ -2,5 +2,6 @@ obj-$(CONFIG_IRQCHIP) += irqchip.o obj-$(CONFIG_ARCH_BCM2835) += irq-bcm2835.o obj-$(CONFIG_ARCH_SUNXI) += irq-sunxi.o -obj-$(CONFIG_VERSATILE_FPGA_IRQ) += irq-versatile-fpga.o obj-$(CONFIG_ARCH_SPEAR3XX) += spear-shirq.o +obj-$(CONFIG_ARM_GIC) += irq-gic.o +obj-$(CONFIG_VERSATILE_FPGA_IRQ) += irq-versatile-fpga.o
drivers/irqchip/irq-gic.c renamed from arch/arm/common/gic.c +7 -0
@@ -45,6 +45,8 @@#include <asm/mach/irq.h> #include <asm/hardware/gic.h> +#include "irqchip.h" +union gic_base {void __iomem *common_base;void __percpu __iomem **percpu_base;
@@ -814,4 +816,9 @@ int __init gic_of_init(struct device_node *node, struct device_node *parent) gic_cnt++; return 0; } +IRQCHIP_DECLARE (cortex_a15_gic,"arm,cortex-a15-gic" , gic_of_init); +IRQCHIP_DECLARE (cortex_a9_gic,"arm,cortex-a9-gic" , gic_of_init); +IRQCHIP_DECLARE (msm_8660_qgic,"qcom,msm-8660-qgic" , gic_of_init); +IRQCHIP_DECLARE (msm_qgic2,"qcom,msm-qgic2" , gic_of_init); +#endif
Signature · 1 line
1.7.10.4
PATCH v4 9/19 ARM: use common irqchip_init for GIC init
In reply to Rob HerringFrom: Rob Herring <[email protected]>
Convert all GIC DT initialization over to use common irqchip_init function.
--- arch/arm/include/asm/hardware/gic.h | 1 - arch/arm/mach-bcm/board_bcm.c | 16 ++-------------- arch/arm/mach-exynos/common.c | 8 +++++--- arch/arm/mach-highbank/highbank.c | 10 ++-------- arch/arm/mach-imx/mach-imx6q.c | 9 ++------- arch/arm/mach-msm/board-dt-8660.c | 15 ++------------- arch/arm/mach-msm/board-dt-8960.c | 15 ++------------- arch/arm/mach-omap2/omap4-common.c | 9 ++------- arch/arm/mach-shmobile/setup-emev2.c | 14 ++------------ arch/arm/mach-socfpga/socfpga.c | 13 ++++--------- arch/arm/mach-spear13xx/include/mach/generic.h | 1 - arch/arm/mach-spear13xx/spear1310.c | 4 ++-- arch/arm/mach-spear13xx/spear1340.c | 4 ++-- arch/arm/mach-spear13xx/spear13xx.c | 13 +------------ arch/arm/mach-tegra/common.c | 10 ++-------- arch/arm/mach-ux500/cpu.c | 8 ++------ arch/arm/mach-vexpress/v2m.c | 14 ++------------ arch/arm/mach-zynq/common.c | 16 +--------------- 18 files changed, 35 insertions(+), 145 deletions(-)
arch/arm/include/asm/hardware/gic.h +0 -1
@@ -36,7 +36,6 @@ extern struct irq_chip gic_arch_extn;void gic_init_bases (unsigned int ,int ,void __iomem *,void __iomem *,u32 offset,struct device_node *); -int gic_of_init (struct device_node *node,struct device_node *parent);void gic_secondary_init (unsigned int );void gic_cascade_irq (unsigned int gic_nr,unsigned int irq);
arch/arm/mach-bcm/board_bcm.c +2 -14
@@ -11,22 +11,15 @@* GNU General Public License for more details. */ -#include <linux/of_irq.h> #include <linux/of_platform.h> #include <linux/init.h> #include <linux/device.h> #include <linux/platform_device.h> +#include <linux/irqchip.h> #include <asm/mach/arch.h> -#include <asm/hardware/gic.h> -#include <asm/mach/time.h> -static const struct of_device_id irq_match[] = { - {.compatible ="arm,cortex-a9-gic" , .data = gic_of_init, }, - {} -}; -static void timer_init (void ) { }
@@ -35,11 +28,6 @@ static struct sys_timer timer = { .init = timer_init, }; -static void __init init_irq (void ) -{ -of_irq_init (irq_match); -} -static void __init board_init (void ) { of_platform_populate(NULL, of_default_bus_match_table, NULL,
@@ -49,7 +37,7 @@ static void __init board_init(void)static const char *const bcm11351_dt_compat[] = {"bcm,bcm11351" ,NULL , };DT_MACHINE_START (BCM11351_DT ,"Broadcom Application Processor" ) - .init_irq = init_irq, + .init_irq = irqchip_init, .timer = &timer, .init_machine = board_init, .dt_compat = bcm11351_dt_compat,
arch/arm/mach-exynos/common.c +5 -3
@@ -22,6 +22,7 @@#include <linux/of_irq.h> #include <linux/export.h> #include <linux/irqdomain.h> +#include <linux/irqchip.h> #include <linux/of_address.h> #include <asm/proc-fns.h>
@@ -637,8 +638,6 @@ static int __init combiner_of_init(struct device_node *np, }static const struct of_device_id exynos_dt_irq_match[] = { - { .compatible ="arm,cortex-a9-gic" , .data = gic_of_init, }, - { .compatible ="arm,cortex-a15-gic" , .data = gic_of_init, }, { .compatible ="samsung,exynos4210-combiner" , .data = combiner_of_init, }, {},
@@ -654,8 +653,10 @@ void __init exynos4_init_irq(void)if (!of_have_populated_dt ())gic_init_bases (0 ,IRQ_PPI (0 ),S5P_VA_GIC_DIST ,S5P_VA_GIC_CPU , gic_bank_offset,NULL );#ifdef CONFIG_OF - else + else { +irqchip_init ();of_irq_init (exynos_dt_irq_match); + }#endif if (!of_have_populated_dt ())
@@ -672,6 +673,7 @@ void __init exynos4_init_irq(void)void __init exynos5_init_irq (void ) {#ifdef CONFIG_OF +irqchip_init ();of_irq_init (exynos_dt_irq_match);#endif /*
arch/arm/mach-highbank/highbank.c +2 -8
@@ -18,6 +18,7 @@#include <linux/dma-mapping.h> #include <linux/io.h> #include <linux/irq.h> +#include <linux/irqchip.h> #include <linux/irqdomain.h> #include <linux/of.h> #include <linux/of_irq.h>
@@ -32,7 +33,6 @@#include <asm/smp_twd.h> #include <asm/hardware/arm_timer.h> #include <asm/hardware/timer-sp.h> -#include <asm/hardware/gic.h> #include <asm/hardware/cache-l2x0.h> #include <asm/mach/arch.h> #include <asm/mach/map.h>
@@ -66,12 +66,6 @@ void highbank_set_cpu_jump(int cpu, void *jump_addr) HB_JUMP_TABLE_PHYS(cpu) + 15); } -const static struct of_device_id irq_match[] = { - { .compatible ="arm,cortex-a15-gic" , .data = gic_of_init, }, - { .compatible ="arm,cortex-a9-gic" , .data = gic_of_init, }, - {} -}; -#ifdef CONFIG_CACHE_L2X0 static void highbank_l2x0_disable (void ) {
@@ -82,7 +76,7 @@ static void highbank_l2x0_disable(void)static void __init highbank_init_irq (void ) { -of_irq_init (irq_match); +irqchip_init ();if (of_find_compatible_node (NULL ,NULL ,"arm,cortex-a9" ))highbank_scu_map_io ();
arch/arm/mach-imx/mach-imx6q.c +2 -7
@@ -18,6 +18,7 @@#include <linux/init.h> #include <linux/io.h> #include <linux/irq.h> +#include <linux/irqchip.h> #include <linux/of.h> #include <linux/of_address.h> #include <linux/of_irq.h>
@@ -29,7 +30,6 @@#include <asm/cpuidle.h> #include <asm/smp_twd.h> #include <asm/hardware/cache-l2x0.h> -#include <asm/hardware/gic.h> #include <asm/mach/arch.h> #include <asm/mach/time.h> #include <asm/system_misc.h>
@@ -221,17 +221,12 @@ static void __init imx6q_map_io(void)imx6q_clock_map_io (); } -static const struct of_device_id imx6q_irq_match[]__initconst = { - { .compatible ="arm,cortex-a9-gic" , .data = gic_of_init, }, - {/* sentinel */ } -}; -static void __init imx6q_init_irq (void ) {l2x0_of_init (0 , ~0UL );imx_src_init ();imx_gpc_init (); -of_irq_init (imx6q_irq_match); +irqchip_init (); }static void __init imx6q_timer_init (void )
arch/arm/mach-msm/board-dt-8660.c +2 -13
@@ -11,26 +11,15 @@*/ #include <linux/init.h> +#include <linux/irqchip.h> #include <linux/of.h> -#include <linux/of_irq.h> #include <linux/of_platform.h> #include <asm/mach/arch.h> -#include <asm/hardware/gic.h> #include <mach/board.h> #include "common.h" -static const struct of_device_id msm_dt_gic_match[]__initconst = { - { .compatible ="qcom,msm-8660-qgic" , .data = gic_of_init }, - {} -}; - -static void __init msm8x60_init_irq (void ) -{ -of_irq_init (msm_dt_gic_match); -} -static void __init msm8x60_init_late (void ) {smd_debugfs_init ();
@@ -55,7 +44,7 @@ static const char *msm8x60_fluid_match[] __initdata = {DT_MACHINE_START (MSM_DT ,"Qualcomm MSM (Flattened Device Tree)" ) .smp = smp_ops(msm_smp_ops), .map_io = msm_map_msm8x60_io, - .init_irq = msm8x60_init_irq, + .init_irq = irqchip_init, .init_machine = msm8x60_dt_init, .init_late = msm8x60_init_late, .timer = &msm_dt_timer,
arch/arm/mach-msm/board-dt-8960.c +2 -13
@@ -11,24 +11,13 @@*/ #include <linux/init.h> -#include <linux/of_irq.h> +#include <linux/irqchip.h> #include <linux/of_platform.h> -#include <asm/hardware/gic.h> #include <asm/mach/arch.h> #include "common.h" -static const struct of_device_id msm_dt_gic_match[]__initconst = { - { .compatible ="qcom,msm-qgic2" , .data = gic_of_init }, - { } -}; - -static void __init msm_dt_init_irq (void ) -{ -of_irq_init (msm_dt_gic_match); -} -static void __init msm_dt_init (void ) {of_platform_populate (NULL , of_default_bus_match_table,NULL ,NULL );
@@ -42,7 +31,7 @@ static const char * const msm8960_dt_match[] __initconst = {DT_MACHINE_START (MSM8960_DT ,"Qualcomm MSM (Flattened Device Tree)" ) .smp = smp_ops(msm_smp_ops), .map_io = msm_map_msm8960_io, - .init_irq = msm_dt_init_irq, + .init_irq = irqchip_init, .timer = &msm_dt_timer, .init_machine = msm_dt_init, .dt_compat = msm8960_dt_match,
arch/arm/mach-omap2/omap4-common.c +2 -7
@@ -15,6 +15,7 @@#include <linux/init.h> #include <linux/io.h> #include <linux/irq.h> +#include <linux/irqchip.h> #include <linux/platform_device.h> #include <linux/memblock.h> #include <linux/of_irq.h>
@@ -255,16 +256,10 @@ static int __init omap4_sar_ram_init(void) }early_initcall (omap4_sar_ram_init); -static struct of_device_id irq_match[]__initdata = { - { .compatible ="arm,cortex-a9-gic" , .data = gic_of_init, }, - { .compatible ="arm,cortex-a15-gic" , .data = gic_of_init, }, - { } -}; -void __init omap_gic_of_init (void ) {omap_wakeupgen_init (); -of_irq_init (irq_match); +irqchip_init (); }#if defined(CONFIG_MMC_OMAP_HS ) || defined(CONFIG_MMC_OMAP_HS_MODULE )
arch/arm/mach-shmobile/setup-emev2.c +2 -12
@@ -20,13 +20,13 @@#include <linux/init.h> #include <linux/interrupt.h> #include <linux/irq.h> +#include <linux/irqchip.h> #include <linux/platform_device.h> #include <linux/platform_data/gpio-em.h> #include <linux/of_platform.h> #include <linux/delay.h> #include <linux/input.h> #include <linux/io.h> -#include <linux/of_irq.h> #include <mach/hardware.h> #include <mach/common.h> #include <mach/emev2.h>
@@ -445,26 +445,16 @@ void __init emev2_add_standard_devices_dt(void) emev2_auxdata_lookup, NULL); } -static const struct of_device_id emev2_dt_irq_match[] = { - { .compatible ="arm,cortex-a9-gic" , .data = gic_of_init, }, - {}, -}; -static const char *emev2_boards_compat_dt[]__initdata = {"renesas,emev2" ,NULL , }; -void __init emev2_init_irq_dt (void ) -{ -of_irq_init (emev2_dt_irq_match); -} -DT_MACHINE_START (EMEV2_DT ,"Generic Emma Mobile EV2 (Flattened Device Tree)" ) .smp = smp_ops(emev2_smp_ops), .init_early = emev2_init_delay, .nr_irqs = NR_IRQS_LEGACY, - .init_irq = emev2_init_irq_dt, + .init_irq = irqchip_init, .init_machine = emev2_add_standard_devices_dt, .timer = &shmobile_timer, .dt_compat = emev2_boards_compat_dt,
arch/arm/mach-socfpga/socfpga.c +4 -9
@@ -15,12 +15,12 @@* along with this program. If not, see <http://www.gnu.org/licenses/>. */ #include <linux/dw_apb_timer.h> +#include <linux/irqchip.h> #include <linux/of_address.h> #include <linux/of_irq.h> #include <linux/of_platform.h> #include <asm/hardware/cache-l2x0.h> -#include <asm/hardware/gic.h> #include <asm/mach/arch.h> #include <asm/mach/map.h>
@@ -62,11 +62,6 @@ static void __init socfpga_map_io(void)early_printk ("Early printk initialized\n" ); } -const static struct of_device_id irq_match[] = { - { .compatible ="arm,cortex-a9-gic" , .data = gic_of_init, }, - {} -}; -void __init socfpga_sysmgr_init (void ) {struct device_node *np;
@@ -78,9 +73,9 @@ void __init socfpga_sysmgr_init(void) rst_manager_base_addr =of_iomap (np,0 ); } -static void __init gic_init_irq (void ) +static void __init socfpga_init_irq (void ) { -of_irq_init (irq_match); +irqchip_init ();socfpga_sysmgr_init (); }
@@ -105,7 +100,7 @@ static const char *altera_dt_match[] = {DT_MACHINE_START (SOCFPGA ,"Altera SOCFPGA" ) .smp = smp_ops(socfpga_smp_ops), .map_io = socfpga_map_io, - .init_irq = gic_init_irq, + .init_irq = socfpga_init_irq, .timer = &dw_apb_timer, .init_machine = socfpga_cyclone5_init, .restart = socfpga_cyclone5_restart,
arch/arm/mach-spear13xx/include/mach/generic.h +0 -1
@@ -28,7 +28,6 @@ extern struct dw_dma_slave nand_write_dma_priv;/* Add spear13xx family function declarations here */ void __init spear_setup_of_timer (void );void __init spear13xx_map_io (void ); -void __init spear13xx_dt_init_irq (void );void __init spear13xx_l2x0_init (void );bool dw_dma_filter (struct dma_chan *chan,void *slave);void spear_restart (char ,const char *);
arch/arm/mach-spear13xx/spear1310.c +2 -2
@@ -14,9 +14,9 @@#define pr_fmt (fmt) "SPEAr1310: " fmt#include <linux/amba/pl022.h> +#include <linux/irqchip.h> #include <linux/of_platform.h> #include <linux/pata_arasan_cf_data.h> -#include <asm/hardware/gic.h> #include <asm/mach/arch.h> #include <asm/mach/map.h> #include <mach/generic.h>
@@ -90,7 +90,7 @@ static void __init spear1310_map_io(void)DT_MACHINE_START (SPEAR1310_DT ,"ST SPEAr1310 SoC with Flattened Device Tree" ) .smp = smp_ops(spear13xx_smp_ops), .map_io = spear1310_map_io, - .init_irq = spear13xx_dt_init_irq, + .init_irq = irqchip_init, .timer = &spear13xx_timer, .init_machine = spear1310_dt_init, .restart = spear_restart,
arch/arm/mach-spear13xx/spear1340.c +2 -2
@@ -18,7 +18,7 @@#include <linux/delay.h> #include <linux/dw_dmac.h> #include <linux/of_platform.h> -#include <asm/hardware/gic.h> +#include <linux/irqchip.h> #include <asm/mach/arch.h> #include <mach/dma.h> #include <mach/generic.h>
@@ -184,7 +184,7 @@ static const char * const spear1340_dt_board_compat[] = {DT_MACHINE_START (SPEAR1340_DT ,"ST SPEAr1340 SoC with Flattened Device Tree" ) .smp = smp_ops(spear13xx_smp_ops), .map_io = spear13xx_map_io, - .init_irq = spear13xx_dt_init_irq, + .init_irq = irqchip_init, .timer = &spear13xx_timer, .init_machine = spear1340_dt_init, .restart = spear_restart,
arch/arm/mach-spear13xx/spear13xx.c +1 -12
@@ -17,9 +17,8 @@#include <linux/clk.h> #include <linux/dw_dmac.h> #include <linux/err.h> -#include <linux/of_irq.h> +#include <linux/of.h> #include <asm/hardware/cache-l2x0.h> -#include <asm/hardware/gic.h> #include <asm/mach/map.h> #include <asm/smp_twd.h> #include <mach/dma.h>
@@ -186,13 +185,3 @@ static void __init spear13xx_timer_init(void)struct sys_timer spear13xx_timer = { .init = spear13xx_timer_init, }; - -static const struct of_device_id gic_of_match[]__initconst = { - { .compatible ="arm,cortex-a9-gic" , .data = gic_of_init }, - {/* Sentinel */ } -}; - -void __init spear13xx_dt_init_irq (void ) -{ -of_irq_init (gic_of_match); -}
arch/arm/mach-tegra/common.c +2 -8
@@ -21,10 +21,9 @@#include <linux/io.h> #include <linux/clk.h> #include <linux/delay.h> -#include <linux/of_irq.h> +#include <linux/irqchip.h> #include <asm/hardware/cache-l2x0.h> -#include <asm/hardware/gic.h> #include <mach/powergate.h>
@@ -57,15 +56,10 @@ u32 tegra_uart_config[4] = { };#ifdef CONFIG_OF -static const struct of_device_id tegra_dt_irq_match[]__initconst = { - { .compatible ="arm,cortex-a9-gic" , .data = gic_of_init }, - { } -}; -void __init tegra_dt_init_irq (void ) {tegra_init_irq (); -of_irq_init (tegra_dt_irq_match); +irqchip_init (); }#endif
arch/arm/mach-ux500/cpu.c +2 -6
@@ -17,6 +17,7 @@#include <linux/of.h> #include <linux/of_irq.h> #include <linux/irq.h> +#include <linux/irqchip.h> #include <linux/platform_data/clk-ux500.h> #include <asm/hardware/gic.h>
@@ -42,11 +43,6 @@ void __iomem *_PRCMU_BASE;* This feels fragile because it depends on the gpio device getting probed * _before_ any device uses the gpio interrupts. */ -static const struct of_device_id ux500_dt_irq_match[] = { - { .compatible ="arm,cortex-a9-gic" , .data = gic_of_init, }, - {}, -}; -void __init ux500_init_irq (void ) {void __iomem *dist_base;
@@ -62,7 +58,7 @@ void __init ux500_init_irq(void)#ifdef CONFIG_OF if (of_have_populated_dt ()) -of_irq_init (ux500_dt_irq_match); +irqchip_init (); else#endif gic_init (0 ,29 , dist_base, cpu_base);
arch/arm/mach-vexpress/v2m.c +2 -12
@@ -7,6 +7,7 @@#include <linux/io.h> #include <linux/smp.h> #include <linux/init.h> +#include <linux/irqchip.h> #include <linux/of_address.h> #include <linux/of_fdt.h> #include <linux/of_irq.h>
@@ -30,7 +31,6 @@#include <asm/mach/time.h> #include <asm/hardware/arm_timer.h> #include <asm/hardware/cache-l2x0.h> -#include <asm/hardware/gic.h> #include <asm/hardware/timer-sp.h> #include <mach/ct-ca9x4.h>
@@ -433,16 +433,6 @@ void __init v2m_dt_init_early(void) } } -static struct of_device_id vexpress_irq_match[]__initdata = { - { .compatible ="arm,cortex-a9-gic" , .data = gic_of_init, }, - {} -}; - -static void __init v2m_dt_init_irq (void ) -{ -of_irq_init (vexpress_irq_match); -} -static void __init v2m_dt_timer_init (void ) {struct device_node *node =NULL ;
@@ -496,7 +486,7 @@ DT_MACHINE_START(VEXPRESS_DT, "ARM-Versatile Express") .smp = smp_ops(vexpress_smp_ops), .map_io = v2m_dt_map_io, .init_early = v2m_dt_init_early, - .init_irq = v2m_dt_init_irq, + .init_irq = irqchip_init, .timer = &v2m_dt_timer, .init_machine = v2m_dt_init, .restart = vexpress_restart,
arch/arm/mach-zynq/common.c +1 -15
@@ -31,7 +31,6 @@#include <asm/mach-types.h> #include <asm/page.h> #include <asm/pgtable.h> -#include <asm/hardware/gic.h> #include <asm/hardware/cache-l2x0.h> #include "common.h"
@@ -55,19 +54,6 @@ static void __init xilinx_init_machine(void)of_platform_bus_probe (NULL , zynq_of_bus_ids,NULL ); } -static struct of_device_id irq_match[]__initdata = { - { .compatible ="arm,cortex-a9-gic" , .data = gic_of_init, }, - { } -}; - -/** -* xilinx_irq_init() - Interrupt controller initialization for the GIC. -*/ -static void __init xilinx_irq_init (void ) -{ -of_irq_init (irq_match); -} -#define SCU_PERIPH_PHYS 0xF8F00000#define SCU_PERIPH_SIZE SZ_8K#define SCU_PERIPH_VIRT (VMALLOC_END - SCU_PERIPH_SIZE)
@@ -117,7 +103,7 @@ static const char *xilinx_dt_match[] = {MACHINE_START (XILINX_EP107 ,"Xilinx Zynq Platform" ) .map_io = xilinx_map_io, - .init_irq = xilinx_irq_init, + .init_irq = irqchip_init, .init_machine = xilinx_init_machine, .timer = &xttcpss_sys_timer, .dt_compat = xilinx_dt_match,
Signature · 1 line
1.7.10.4
Arnd Bergmann
maintainerPATCH v4 9/19 ARM: use common irqchip_init for GIC init
Quoted 10 lines · Rob Herring
arch/arm/mach-exynos/common.c +0
-2@@ -637,8 +638,6 @@ static int __init combiner_of_init(struct device_node *np, }static const struct of_device_id exynos_dt_irq_match[] = { - { .compatible ="arm,cortex-a9-gic" , .data = gic_of_init, }, - { .compatible ="arm,cortex-a15-gic" , .data = gic_of_init, }, { .compatible ="samsung,exynos4210-combiner" , .data = combiner_of_init, }, {},
arch/arm/mach-exynos/common.c void __init exynos4_init_irq(void) · line 660
Quoted 9 lines
arch/arm/mach-exynos/common.c +3
-1@@ -654,8 +653,10 @@ void __init exynos4_init_irq(void)if (!of_have_populated_dt ())gic_init_bases (0 ,IRQ_PPI (0 ),S5P_VA_GIC_DIST ,S5P_VA_GIC_CPU , gic_bank_offset,NULL );#ifdef CONFIG_OF - else + else { +irqchip_init ();of_irq_init (exynos_dt_irq_match); + }#endif
Is this an equivalent change? I thought you are supposed to call of_irq_init only once so it can see the entire hierarchy. Or is it ok as long as the top-level controllers are probed first?
Arnd
PATCH v4 9/19 ARM: use common irqchip_init for GIC init
Quoted 16 lines · Arnd Bergmann
Quoted 15 lines · Rob Herring
arch/arm/mach-exynos/common.c +1
-3@@ -637,8 +638,6 @@ static int __init combiner_of_init(struct device_node *np, }static const struct of_device_id exynos_dt_irq_match[] = { - { .compatible ="arm,cortex-a9-gic" , .data = gic_of_init, }, - { .compatible ="arm,cortex-a15-gic" , .data = gic_of_init, }, { .compatible ="samsung,exynos4210-combiner" , .data = combiner_of_init, }, {},@@ -654,8 +653,10 @@ void __init exynos4_init_irq(void)if (!of_have_populated_dt ())gic_init_bases (0 ,IRQ_PPI (0 ),S5P_VA_GIC_DIST ,S5P_VA_GIC_CPU , gic_bank_offset,NULL );#ifdef CONFIG_OF - else + else {
Quoted 8 lines
arch/arm/mach-exynos/common.c void __init exynos4_init_irq(void) · line 660
Quoted 4 lines
arch/arm/mach-exynos/common.c +2
-0+irqchip_init (); of_irq_init(exynos_dt_irq_match); + }#endif Is this an equivalent change? I thought you are supposed to call
of_irq_initonly once so it can see the entire hierarchy. Or is it ok as long as the top-level controllers are probed first?
Yes, it is equivalent as the GIC will be initialized first. Ideally, this the exynos controller needs to be moved to drivers/irqchip as well and this can be removed, but I can't have all the fun.
Rob
PATCH v4 9/19 ARM: use common irqchip_init for GIC init
Rob,
Quoted 26 lines · Rob Herring
Quoted 16 lines · Arnd Bergmann
Quoted 15 lines · Rob Herring
arch/arm/mach-exynos/common.c +1
-3@@ -637,8 +638,6 @@ static int __init combiner_of_init(struct device_node *np, }static const struct of_device_id exynos_dt_irq_match[] = { - { .compatible ="arm,cortex-a9-gic" , .data = gic_of_init, }, - { .compatible ="arm,cortex-a15-gic" , .data = gic_of_init, }, { .compatible ="samsung,exynos4210-combiner" , .data = combiner_of_init, }, {},@@ -654,8 +653,10 @@ void __init exynos4_init_irq(void)if (!of_have_populated_dt ())gic_init_bases (0 ,IRQ_PPI (0 ),S5P_VA_GIC_DIST ,S5P_VA_GIC_CPU , gic_bank_offset,NULL );#ifdef CONFIG_OF - else + else {Quoted 8 lines
arch/arm/mach-exynos/common.c void __init exynos4_init_irq(void) · line 660
Quoted 4 lines
arch/arm/mach-exynos/common.c +2
-0+irqchip_init (); of_irq_init(exynos_dt_irq_match); + }#endif Is this an equivalent change? I thought you are supposed to call
of_irq_initonly once so it can see the entire hierarchy. Or is it ok as long as the top-level controllers are probed first?
Quoted 3 lines
Yes, it is equivalent as the GIC will be initialized first. Ideally, this the exynos controller needs to be moved to
drivers/irqchipas well and this can be removed, but I can't have all the fun.
My ARM Chromebook that no longer boots on linux-next begs to differ. I tracked it down to this change. If I hack it so that the exynos combiner is registered with irqchip or if I revert just the exynos part of this patch then things work again.
Is anyone from Samsung working to move the exynos-combiner into IRQ Chip? Until that happens (or this change is partly reverted) any exynos boards won't boot. ...and tracking the problem down to this change is a bit of a pain since there's no nice crash.
-Doug
PATCH v4 9/19 ARM: use common irqchip_init for GIC init
Quoted 39 lines · Doug Anderson
Rob,
Quoted 26 lines · Rob Herring
Quoted 16 lines · Arnd Bergmann
Quoted 15 lines · Rob Herring
arch/arm/mach-exynos/common.c +1
-3@@ -637,8 +638,6 @@ static int __init combiner_of_init(struct device_node *np, }static const struct of_device_id exynos_dt_irq_match[] = { - { .compatible ="arm,cortex-a9-gic" , .data = gic_of_init, }, - { .compatible ="arm,cortex-a15-gic" , .data = gic_of_init, }, { .compatible ="samsung,exynos4210-combiner" , .data = combiner_of_init, }, {},@@ -654,8 +653,10 @@ void __init exynos4_init_irq(void)if (!of_have_populated_dt ())gic_init_bases (0 ,IRQ_PPI (0 ),S5P_VA_GIC_DIST ,S5P_VA_GIC_CPU , gic_bank_offset,NULL );#ifdef CONFIG_OF - else + else {Quoted 8 lines
arch/arm/mach-exynos/common.c void __init exynos4_init_irq(void) · line 660
Quoted 4 lines
arch/arm/mach-exynos/common.c +2
-0+irqchip_init (); of_irq_init(exynos_dt_irq_match); + }#endif Is this an equivalent change? I thought you are supposed to call
of_irq_initonly once so it can see the entire hierarchy. Or is it ok as long as the top-level controllers are probed first?Quoted 3 lines
Yes, it is equivalent as the GIC will be initialized first. Ideally, this the exynos controller needs to be moved to
drivers/irqchipas well and this can be removed, but I can't have all the fun.My ARM Chromebook that no longer boots on linux-next begs to differ. I tracked it down to this change. If I hack it so that the exynos combiner is registered with irqchip or if I revert just the exynos part of this patch then things work again.
Quoted 4 lines
Is anyone from Samsung working to move the exynos-combiner into IRQ Chip? Until that happens (or this change is partly reverted) any exynos boards won't boot. ...and tracking the problem down to this change is a bit of a pain since there's no nice crash.
Actually, I was mistaken and of_irq_init can't really be called twice. The parents need to be in the match list as well. I will fix this and there's probably a few others broken as well.
Rob
PATCH v4 9/19 ARM: use common irqchip_init for GIC init
In reply to Rob HerringQuoted 1 line · Rob Herring
Cc Shawn Guo <[email protected]>
...
Quoted 1 line
arch/arm/mach-imx/mach-imx6q.c | 9 ++-------
PATCH v4 10/19 irqchip: Move ARM gic.h to include/linux/irqchip/arm-gic.h
In reply to Rob HerringFrom: Rob Herring <[email protected]>
Now that we have GIC moved to drivers/irqchip and all GIC DT init for platforms using irqchip_init, move gic.h and update the remaining includes.
--- arch/arm/mach-cns3xxx/core.c | 2 +- arch/arm/mach-exynos/common.c | 2 +- arch/arm/mach-exynos/include/mach/regs-irq.h | 2 +- arch/arm/mach-exynos/platsmp.c | 2 +- arch/arm/mach-highbank/platsmp.c | 2 +- arch/arm/mach-imx/gpc.c | 2 +- arch/arm/mach-imx/platsmp.c | 2 +- arch/arm/mach-msm/platsmp.c | 2 +- arch/arm/mach-omap2/board-4430sdp.c | 2 +- arch/arm/mach-omap2/board-omap4panda.c | 2 +- arch/arm/mach-omap2/omap-smp.c | 2 +- arch/arm/mach-omap2/omap-wakeupgen.c | 3 +-- arch/arm/mach-omap2/omap4-common.c | 2 +- arch/arm/mach-realview/realview_eb.c | 2 +- arch/arm/mach-realview/realview_pb1176.c | 2 +- arch/arm/mach-realview/realview_pb11mp.c | 2 +- arch/arm/mach-realview/realview_pba8.c | 2 +- arch/arm/mach-realview/realview_pbx.c | 2 +- arch/arm/mach-shmobile/board-ag5evm.c | 2 +- arch/arm/mach-shmobile/board-kota2.c | 2 +- arch/arm/mach-shmobile/board-kzm9g.c | 2 +- arch/arm/mach-shmobile/intc-r8a7779.c | 2 +- arch/arm/mach-shmobile/intc-sh73a0.c | 2 +- arch/arm/mach-shmobile/setup-emev2.c | 2 +- arch/arm/mach-shmobile/smp-emev2.c | 2 +- arch/arm/mach-shmobile/smp-r8a7779.c | 2 +- arch/arm/mach-shmobile/smp-sh73a0.c | 2 +- arch/arm/mach-socfpga/platsmp.c | 2 +- arch/arm/mach-spear13xx/platsmp.c | 2 +- arch/arm/mach-tegra/irq.c | 3 +-- arch/arm/mach-tegra/platsmp.c | 2 +- arch/arm/mach-ux500/cpu.c | 2 +- arch/arm/mach-ux500/platsmp.c | 2 +- arch/arm/mach-vexpress/ct-ca9x4.c | 2 +- arch/arm/plat-versatile/platsmp.c | 2 +- drivers/irqchip/irq-gic.c | 2 +- drivers/mfd/db8500-prcmu.c | 2 +- .../asm/hardware/gic.h => include/linux/irqchip/arm-gic.h | 6 +++--- 38 files changed, 40 insertions(+), 42 deletions(-) rename arch/arm/include/asm/hardware/gic.h => include/linux/irqchip/arm-gic.h (92%)
arch/arm/mach-cns3xxx/core.c +1 -1
@@ -12,10 +12,10 @@#include <linux/interrupt.h> #include <linux/clockchips.h> #include <linux/io.h> +#include <linux/irqchip/arm-gic.h> #include <asm/mach/map.h> #include <asm/mach/time.h> #include <asm/mach/irq.h> -#include <asm/hardware/gic.h> #include <asm/hardware/cache-l2x0.h> #include <mach/cns3xxx.h> #include "core.h"
arch/arm/mach-exynos/common.c +1 -1
@@ -24,11 +24,11 @@#include <linux/irqdomain.h> #include <linux/irqchip.h> #include <linux/of_address.h> +#include <linux/irqchip/arm-gic.h> #include <asm/proc-fns.h> #include <asm/exception.h> #include <asm/hardware/cache-l2x0.h> -#include <asm/hardware/gic.h> #include <asm/mach/map.h> #include <asm/mach/irq.h> #include <asm/cacheflush.h>
arch/arm/mach-exynos/include/mach/regs-irq.h +1 -1
@@ -13,7 +13,7 @@#ifndef __ASM_ARCH_REGS_IRQ_H#define __ASM_ARCH_REGS_IRQ_H __FILE__ -#include <asm/hardware/gic.h> +#include <linux/irqchip/arm-gic.h> #include <mach/map.h> #endif /* __ASM_ARCH_REGS_IRQ_H */
arch/arm/mach-exynos/platsmp.c +1 -1
@@ -20,9 +20,9 @@#include <linux/jiffies.h> #include <linux/smp.h> #include <linux/io.h> +#include <linux/irqchip/arm-gic.h> #include <asm/cacheflush.h> -#include <asm/hardware/gic.h> #include <asm/smp_plat.h> #include <asm/smp_scu.h>
arch/arm/mach-highbank/platsmp.c +1 -1
@@ -17,9 +17,9 @@#include <linux/init.h> #include <linux/smp.h> #include <linux/io.h> +#include <linux/irqchip/arm-gic.h> #include <asm/smp_scu.h> -#include <asm/hardware/gic.h> #include "core.h"
arch/arm/mach-imx/gpc.c +1 -1
@@ -15,7 +15,7 @@#include <linux/of.h> #include <linux/of_address.h> #include <linux/of_irq.h> -#include <asm/hardware/gic.h> +#include <linux/irqchip/arm-gic.h> #define GPC_IMR1 0x008#define GPC_PGC_CPU_PDN 0x2a0
arch/arm/mach-imx/platsmp.c +1 -1
@@ -12,9 +12,9 @@#include <linux/init.h> #include <linux/smp.h> +#include <linux/irqchip/arm-gic.h> #include <asm/page.h> #include <asm/smp_scu.h> -#include <asm/hardware/gic.h> #include <asm/mach/map.h> #include "common.h"
arch/arm/mach-msm/platsmp.c +1 -1
@@ -15,8 +15,8 @@#include <linux/jiffies.h> #include <linux/smp.h> #include <linux/io.h> +#include <linux/irqchip/arm-gic.h> -#include <asm/hardware/gic.h> #include <asm/cacheflush.h> #include <asm/cputype.h> #include <asm/mach-types.h>
arch/arm/mach-omap2/board-4430sdp.c +1 -1
@@ -26,10 +26,10 @@#include <linux/regulator/fixed.h> #include <linux/leds.h> #include <linux/leds_pwm.h> +#include <linux/irqchip/arm-gic.h> #include <linux/platform_data/omap4-keypad.h> #include <linux/usb/musb.h> -#include <asm/hardware/gic.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> #include <asm/mach/map.h>
arch/arm/mach-omap2/board-omap4panda.c +1 -1
@@ -31,9 +31,9 @@#include <linux/ti_wilink_st.h> #include <linux/usb/musb.h> #include <linux/wl12xx.h> +#include <linux/irqchip/arm-gic.h> #include <linux/platform_data/omap-abe-twl6040.h> -#include <asm/hardware/gic.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> #include <asm/mach/map.h>
arch/arm/mach-omap2/omap-smp.c +1 -1
@@ -19,9 +19,9 @@#include <linux/device.h> #include <linux/smp.h> #include <linux/io.h> +#include <linux/irqchip/arm-gic.h> #include <asm/cacheflush.h> -#include <asm/hardware/gic.h> #include <asm/smp_scu.h> #include "omap-secure.h"
arch/arm/mach-omap2/omap-wakeupgen.c +1 -2
@@ -24,8 +24,7 @@#include <linux/cpu.h> #include <linux/notifier.h> #include <linux/cpu_pm.h> - -#include <asm/hardware/gic.h> +#include <linux/irqchip/arm-gic.h> #include "omap-wakeupgen.h" #include "omap-secure.h"
arch/arm/mach-omap2/omap4-common.c +1 -1
@@ -21,8 +21,8 @@#include <linux/of_irq.h> #include <linux/of_platform.h> #include <linux/export.h> +#include <linux/irqchip/arm-gic.h> -#include <asm/hardware/gic.h> #include <asm/hardware/cache-l2x0.h> #include <asm/mach/map.h> #include <asm/memblock.h>
arch/arm/mach-realview/realview_eb.c +1 -1
@@ -27,13 +27,13 @@#include <linux/amba/mmci.h> #include <linux/amba/pl022.h> #include <linux/io.h> +#include <linux/irqchip/arm-gic.h> #include <linux/platform_data/clk-realview.h> #include <mach/hardware.h> #include <asm/irq.h> #include <asm/mach-types.h> #include <asm/pgtable.h> -#include <asm/hardware/gic.h> #include <asm/hardware/cache-l2x0.h> #include <asm/smp_twd.h>
arch/arm/mach-realview/realview_pb1176.c +1 -1
@@ -29,13 +29,13 @@#include <linux/mtd/physmap.h> #include <linux/mtd/partitions.h> #include <linux/io.h> +#include <linux/irqchip/arm-gic.h> #include <linux/platform_data/clk-realview.h> #include <mach/hardware.h> #include <asm/irq.h> #include <asm/mach-types.h> #include <asm/pgtable.h> -#include <asm/hardware/gic.h> #include <asm/hardware/cache-l2x0.h> #include <asm/mach/arch.h>
arch/arm/mach-realview/realview_pb11mp.c +1 -1
@@ -27,13 +27,13 @@#include <linux/amba/mmci.h> #include <linux/amba/pl022.h> #include <linux/io.h> +#include <linux/irqchip/arm-gic.h> #include <linux/platform_data/clk-realview.h> #include <mach/hardware.h> #include <asm/irq.h> #include <asm/mach-types.h> #include <asm/pgtable.h> -#include <asm/hardware/gic.h> #include <asm/hardware/cache-l2x0.h> #include <asm/smp_twd.h>
arch/arm/mach-realview/realview_pba8.c +1 -1
@@ -27,12 +27,12 @@#include <linux/amba/mmci.h> #include <linux/amba/pl022.h> #include <linux/io.h> +#include <linux/irqchip/arm-gic.h> #include <linux/platform_data/clk-realview.h> #include <asm/irq.h> #include <asm/mach-types.h> #include <asm/pgtable.h> -#include <asm/hardware/gic.h> #include <asm/mach/arch.h> #include <asm/mach/map.h>
arch/arm/mach-realview/realview_pbx.c +1 -1
@@ -26,13 +26,13 @@#include <linux/amba/mmci.h> #include <linux/amba/pl022.h> #include <linux/io.h> +#include <linux/irqchip/arm-gic.h> #include <linux/platform_data/clk-realview.h> #include <asm/irq.h> #include <asm/mach-types.h> #include <asm/smp_twd.h> #include <asm/pgtable.h> -#include <asm/hardware/gic.h> #include <asm/hardware/cache-l2x0.h> #include <asm/mach/arch.h>
arch/arm/mach-shmobile/board-ag5evm.c +1 -1
@@ -40,6 +40,7 @@#include <linux/mmc/sh_mobile_sdhi.h> #include <linux/mfd/tmio.h> #include <linux/sh_clk.h> +#include <linux/irqchip/arm-gic.h> #include <video/sh_mobile_lcdc.h> #include <video/sh_mipi_dsi.h> #include <sound/sh_fsi.h>
@@ -49,7 +50,6 @@#include <mach/common.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> -#include <asm/hardware/gic.h> #include <asm/hardware/cache-l2x0.h> #include <asm/traps.h>
arch/arm/mach-shmobile/board-kota2.c +1 -1
@@ -35,6 +35,7 @@#include <linux/input/sh_keysc.h> #include <linux/gpio_keys.h> #include <linux/leds.h> +#include <linux/irqchip/arm-gic.h> #include <linux/platform_data/leds-renesas-tpu.h> #include <linux/mmc/host.h> #include <linux/mmc/sh_mmcif.h>
@@ -47,7 +48,6 @@#include <asm/mach-types.h> #include <asm/mach/arch.h> #include <asm/mach/time.h> -#include <asm/hardware/gic.h> #include <asm/hardware/cache-l2x0.h> #include <asm/traps.h>
arch/arm/mach-shmobile/board-kzm9g.c +1 -1
@@ -25,6 +25,7 @@#include <linux/i2c.h> #include <linux/i2c/pcf857x.h> #include <linux/input.h> +#include <linux/irqchip/arm-gic.h> #include <linux/mmc/host.h> #include <linux/mmc/sh_mmcif.h> #include <linux/mmc/sh_mobile_sdhi.h>
@@ -42,7 +43,6 @@#include <mach/sh73a0.h> #include <mach/common.h> #include <asm/hardware/cache-l2x0.h> -#include <asm/hardware/gic.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> #include <video/sh_mobile_lcdc.h>
arch/arm/mach-shmobile/intc-r8a7779.c +1 -1
@@ -22,10 +22,10 @@#include <linux/interrupt.h> #include <linux/irq.h> #include <linux/io.h> +#include <linux/irqchip/arm-gic.h> #include <mach/common.h> #include <mach/intc.h> #include <mach/r8a7779.h> -#include <asm/hardware/gic.h> #include <asm/mach-types.h> #include <asm/mach/arch.h>
arch/arm/mach-shmobile/intc-sh73a0.c +1 -1
@@ -23,10 +23,10 @@#include <linux/irq.h> #include <linux/io.h> #include <linux/sh_intc.h> +#include <linux/irqchip/arm-gic.h> #include <mach/intc.h> #include <mach/irqs.h> #include <mach/sh73a0.h> -#include <asm/hardware/gic.h> #include <asm/mach-types.h> #include <asm/mach/arch.h>
arch/arm/mach-shmobile/setup-emev2.c +1 -1
@@ -27,6 +27,7 @@#include <linux/delay.h> #include <linux/input.h> #include <linux/io.h> +#include <linux/irqchip/arm-gic.h> #include <mach/hardware.h> #include <mach/common.h> #include <mach/emev2.h>
@@ -35,7 +36,6 @@#include <asm/mach/arch.h> #include <asm/mach/map.h> #include <asm/mach/time.h> -#include <asm/hardware/gic.h> static struct map_desc emev2_io_desc[] __initdata = {#ifdef CONFIG_SMP
arch/arm/mach-shmobile/smp-emev2.c +1 -1
@@ -23,11 +23,11 @@#include <linux/spinlock.h> #include <linux/io.h> #include <linux/delay.h> +#include <linux/irqchip/arm-gic.h> #include <mach/common.h> #include <mach/emev2.h> #include <asm/smp_plat.h> #include <asm/smp_scu.h> -#include <asm/hardware/gic.h> #include <asm/cacheflush.h> #define EMEV2_SCU_BASE 0x1e000000
arch/arm/mach-shmobile/smp-r8a7779.c +1 -1
@@ -23,12 +23,12 @@#include <linux/spinlock.h> #include <linux/io.h> #include <linux/delay.h> +#include <linux/irqchip/arm-gic.h> #include <mach/common.h> #include <mach/r8a7779.h> #include <asm/smp_plat.h> #include <asm/smp_scu.h> #include <asm/smp_twd.h> -#include <asm/hardware/gic.h> #define AVECR IOMEM(0xfe700040)
arch/arm/mach-shmobile/smp-sh73a0.c +1 -1
@@ -23,12 +23,12 @@#include <linux/spinlock.h> #include <linux/io.h> #include <linux/delay.h> +#include <linux/irqchip/arm-gic.h> #include <mach/common.h> #include <asm/smp_plat.h> #include <mach/sh73a0.h> #include <asm/smp_scu.h> #include <asm/smp_twd.h> -#include <asm/hardware/gic.h> #define WUPCR IOMEM(0xe6151010)#define SRESCR IOMEM(0xe6151018)
arch/arm/mach-socfpga/platsmp.c +1 -1
@@ -22,9 +22,9 @@#include <linux/io.h> #include <linux/of.h> #include <linux/of_address.h> +#include <linux/irqchip/arm-gic.h> #include <asm/cacheflush.h> -#include <asm/hardware/gic.h> #include <asm/smp_scu.h> #include <asm/smp_plat.h>
arch/arm/mach-spear13xx/platsmp.c +1 -1
@@ -15,8 +15,8 @@#include <linux/jiffies.h> #include <linux/io.h> #include <linux/smp.h> +#include <linux/irqchip/arm-gic.h> #include <asm/cacheflush.h> -#include <asm/hardware/gic.h> #include <asm/smp_scu.h> #include <mach/spear.h> #include <mach/generic.h>
arch/arm/mach-tegra/irq.c +1 -2
@@ -22,8 +22,7 @@#include <linux/irq.h> #include <linux/io.h> #include <linux/of.h> - -#include <asm/hardware/gic.h> +#include <linux/irqchip/arm-gic.h> #include "board.h" #include "iomap.h"
arch/arm/mach-tegra/platsmp.c +1 -1
@@ -18,9 +18,9 @@#include <linux/jiffies.h> #include <linux/smp.h> #include <linux/io.h> +#include <linux/irqchip/arm-gic.h> #include <asm/cacheflush.h> -#include <asm/hardware/gic.h> #include <asm/mach-types.h> #include <asm/smp_scu.h>
arch/arm/mach-ux500/cpu.c +1 -1
@@ -18,9 +18,9 @@#include <linux/of_irq.h> #include <linux/irq.h> #include <linux/irqchip.h> +#include <linux/irqchip/arm-gic.h> #include <linux/platform_data/clk-ux500.h> -#include <asm/hardware/gic.h> #include <asm/mach/map.h> #include <mach/hardware.h>
arch/arm/mach-ux500/platsmp.c +1 -1
@@ -16,9 +16,9 @@#include <linux/device.h> #include <linux/smp.h> #include <linux/io.h> +#include <linux/irqchip/arm-gic.h> #include <asm/cacheflush.h> -#include <asm/hardware/gic.h> #include <asm/smp_plat.h> #include <asm/smp_scu.h> #include <mach/hardware.h>
arch/arm/mach-vexpress/ct-ca9x4.c +1 -1
@@ -10,10 +10,10 @@#include <linux/amba/clcd.h> #include <linux/clkdev.h> #include <linux/vexpress.h> +#include <linux/irqchip/arm-gic.h> #include <asm/hardware/arm_timer.h> #include <asm/hardware/cache-l2x0.h> -#include <asm/hardware/gic.h> #include <asm/smp_scu.h> #include <asm/smp_twd.h>
arch/arm/plat-versatile/platsmp.c +1 -1
@@ -14,10 +14,10 @@#include <linux/device.h> #include <linux/jiffies.h> #include <linux/smp.h> +#include <linux/irqchip/arm-gic.h> #include <asm/cacheflush.h> #include <asm/smp_plat.h> -#include <asm/hardware/gic.h> /* * Write pen_release in a way that is guaranteed to be visible to all
drivers/irqchip/irq-gic.c +1 -1
@@ -38,12 +38,12 @@#include <linux/interrupt.h> #include <linux/percpu.h> #include <linux/slab.h> +#include <linux/irqchip/arm-gic.h> #include <asm/irq.h> #include <asm/exception.h> #include <asm/smp_plat.h> #include <asm/mach/irq.h> -#include <asm/hardware/gic.h> #include "irqchip.h"
drivers/mfd/db8500-prcmu.c +1 -1
@@ -26,13 +26,13 @@#include <linux/fs.h> #include <linux/platform_device.h> #include <linux/uaccess.h> +#include <linux/irqchip/arm-gic.h> #include <linux/mfd/core.h> #include <linux/mfd/dbx500-prcmu.h> #include <linux/mfd/abx500/ab8500.h> #include <linux/regulator/db8500-prcmu.h> #include <linux/regulator/machine.h> #include <linux/cpufreq.h> -#include <asm/hardware/gic.h> #include <mach/hardware.h> #include <mach/irqs.h> #include <mach/db8500-regs.h>
include/linux/irqchip/arm-gic.h renamed from arch/arm/include/asm/hardware/gic.h +3 -3
@@ -1,5 +1,5 @@/* -* arch/arm/include/asm/hardware/gic.h +* include/linux/irqchip/arm-gic.h * * Copyright (C) 2002 ARM Limited, All Rights Reserved. *
@@ -7,8 +7,8 @@* it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ -#ifndef __ASM_ARM_HARDWARE_GIC_H -#define __ASM_ARM_HARDWARE_GIC_H +#ifndef __LINUX_IRQCHIP_ARM_GIC_H +#define __LINUX_IRQCHIP_ARM_GIC_H#define GIC_CPU_CTRL 0x00#define GIC_CPU_PRIMASK 0x04
Signature · 1 line
1.7.10.4
Arnd Bergmann
maintainerPATCH v4 10/19 irqchip: Move ARM gic.h to include/linux/irqchip/arm-gic.h
Quoted 5 lines · Rob Herring
From: Rob Herring <[email protected]>
Now that we have GIC moved to
drivers/irqchipand all GIC DT init for platforms usingirqchip_init, movegic.hand update the remaining includes.
Can you elaborate on why this is done? Does any other code rely on the header file being globally visible, or is there a more general reason to move header files out of asm/ ?
Arnd
PATCH v4 10/19 irqchip: Move ARM gic.h to include/linux/irqchip/arm-gic.h
Quoted 10 lines · Arnd Bergmann
Quoted 5 lines · Rob Herring
From: Rob Herring <[email protected]>
Now that we have GIC moved to
drivers/irqchipand all GIC DT init for platforms usingirqchip_init, movegic.hand update the remaining includes.Can you elaborate on why this is done? Does any other code rely on the header file being globally visible, or is there a more general reason to move header files out of asm/ ?
KVM needs the register definitions for GIC distributor emulation. Platform SMP code still needs gic_secondary_init. Non-DT platform init still needs gic_init. And Russell did not like it being left in arch/arm with the rest moved out.
Rob
Arnd Bergmann
maintainerPATCH v4 10/19 irqchip: Move ARM gic.h to include/linux/irqchip/arm-gic.h
Quoted 8 lines · Rob Herring
Quoted 7 lines · Arnd Bergmann
Quoted 5 lines · Rob Herring
From: Rob Herring <[email protected]>
Now that we have GIC moved to
drivers/irqchipand all GIC DT init for platforms usingirqchip_init, movegic.hand update the remaining includes.
Quoted 9 lines
Quoted 3 lines
Can you elaborate on why this is done? Does any other code rely on the header file being globally visible, or is there a more general reason to move header files out of asm/ ?
KVM needs the register definitions for GIC distributor emulation. Platform SMP code still needs
gic_secondary_init. Non-DT platform init still needsgic_init. And Russell did not like it being left inarch/armwith the rest moved out.
Ok, makes sense.
Arnd
PATCH v4 10/19 irqchip: Move ARM gic.h to include/linux/irqchip/arm-gic.h
In reply to Rob HerringQuoted 8 lines · Rob Herring
Quoted 7 lines · Arnd Bergmann
Quoted 5 lines · Rob Herring
From: Rob Herring <[email protected]>
Now that we have GIC moved to
drivers/irqchipand all GIC DT init for platforms usingirqchip_init, movegic.hand update the remaining includes.
Quoted 6 lines
Quoted 3 lines
Can you elaborate on why this is done? Does any other code rely on the header file being globally visible, or is there a more general reason to move header files out of asm/ ?
KVM needs the register definitions for GIC distributor emulation. Platform SMP code still needs
gic_secondary_init.
While I'm not arguing against this patch, for gic_secondary_init() we should use a CPU notifier. All platforms calling this function only pass 0 as argument (and it makes sense, since the GIC CPU interface is part of primary GIC).
Signature · 1 line
Catalin
PATCH v4 10/19 irqchip: Move ARM gic.h to include/linux/irqchip/arm-gic.h
Quoted 13 lines · Catalin Marinas
Quoted 12 lines · Rob Herring
Quoted 10 lines · Arnd Bergmann
Quoted 5 lines · Rob Herring
From: Rob Herring <[email protected]>
Now that we have GIC moved to
drivers/irqchipand all GIC DT init for platforms usingirqchip_init, movegic.hand update the remaining includes.Can you elaborate on why this is done? Does any other code rely on the header file being globally visible, or is there a more general reason to move header files out of asm/ ?
Quoted 7 lines
Quoted 2 lines
KVM needs the register definitions for GIC distributor emulation. Platform SMP code still needs
gic_secondary_init.While I'm not arguing against this patch, for
gic_secondary_init()we should use a CPU notifier. All platforms calling this function only pass 0 as argument (and it makes sense, since the GIC CPU interface is part of primary GIC).
I'm waiting for you to add that support for arm64. :) Then we can convert arm platforms to use it.
Rob
PATCH v4 10/19 irqchip: Move ARM gic.h to include/linux/irqchip/arm-gic.h
Quoted 17 lines · Rob Herring
Quoted 16 lines · Catalin Marinas
Quoted 14 lines · Rob Herring
Quoted 10 lines · Arnd Bergmann
Quoted 5 lines · Rob Herring
From: Rob Herring <[email protected]>
Now that we have GIC moved to
drivers/irqchipand all GIC DT init for platforms usingirqchip_init, movegic.hand update the remaining includes.Can you elaborate on why this is done? Does any other code rely on the header file being globally visible, or is there a more general reason to move header files out of asm/ ?
KVM needs the register definitions for GIC distributor emulation. Platform SMP code still needs
gic_secondary_init.
Quoted 7 lines
Quoted 4 lines
While I'm not arguing against this patch, for
gic_secondary_init()we should use a CPU notifier. All platforms calling this function only pass 0 as argument (and it makes sense, since the GIC CPU interface is part of primary GIC).I'm waiting for you to add that support for arm64. :) Then we can convert arm platforms to use it.
I'll do it, no problem ;)
Signature · 1 line
Catalin
PATCH v4 10/19 irqchip: Move ARM gic.h to include/linux/irqchip/arm-gic.h
In reply to Arnd BergmannDear Arnd Bergmann,
Quoted 7 lines · Arnd Bergmann
Quoted 5 lines · Rob Herring
From: Rob Herring <[email protected]>
Now that we have GIC moved to
drivers/irqchipand all GIC DT init for platforms usingirqchip_init, movegic.hand update the remaining includes.
Quoted 5 lines
Can you elaborate on why this is done? Does any other code rely on the header file being globally visible, or is there a more general reason to move header files out of asm/ ?
From what I remember, Russell said that if the driver moves away from
arch/arm/, so should the header file.
Thomas
Signature · 4 lines
Thomas Petazzoni, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com
PATCH v4 11/19 ARM: VIC: shrink down vic.h
In reply to Rob HerringFrom: Rob Herring <[email protected]>
Move all register defines except VIC_INT_ENABLE and VIC_INT_ENABLE_CLEAR which are used by Samsung.
With multi irq handler, vic.h is not included in assembly any more, so we can remove the assembly ifdefs.
--- arch/arm/common/vic.c | 17 +++++++++++++++++ arch/arm/include/asm/hardware/vic.h | 23 ++--------------------- 2 files changed, 19 insertions(+), 21 deletions(-)
arch/arm/common/vic.c +17 -0
@@ -35,6 +35,23 @@#include <asm/mach/irq.h> #include <asm/hardware/vic.h> +#define VIC_IRQ_STATUS 0x00 +#define VIC_FIQ_STATUS 0x04 +#define VIC_INT_SELECT 0x0c/* 1 = FIQ, 0 = IRQ */ +#define VIC_INT_SOFT 0x18 +#define VIC_INT_SOFT_CLEAR 0x1c +#define VIC_PROTECT 0x20 +#define VIC_PL190_VECT_ADDR 0x30/* PL190 only */ +#define VIC_PL190_DEF_VECT_ADDR 0x34/* PL190 only */ + +#define VIC_VECT_ADDR0 0x100/* 0 to 15 (0..31 PL192) */ +#define VIC_VECT_CNTL0 0x200/* 0 to 15 (0..31 PL192) */ +#define VIC_ITCR 0x300/* VIC test control register */ + +#define VIC_VECT_CNTL_ENABLE (1 << 5) + +#define VIC_PL192_VECT_ADDR 0xF00 +/** * struct vic_device - VIC PM device * @irq: The IRQ number for the base of the VIC.
arch/arm/include/asm/hardware/vic.h +2 -21
@@ -20,29 +20,11 @@#ifndef __ASM_ARM_HARDWARE_VIC_H#define __ASM_ARM_HARDWARE_VIC_H -#define VIC_IRQ_STATUS 0x00 -#define VIC_FIQ_STATUS 0x04 +#include <linux/types.h> +#define VIC_RAW_STATUS 0x08 -#define VIC_INT_SELECT 0x0c/* 1 = FIQ, 0 = IRQ */ #define VIC_INT_ENABLE 0x10/* 1 = enable, 0 = disable */ #define VIC_INT_ENABLE_CLEAR 0x14 -#define VIC_INT_SOFT 0x18 -#define VIC_INT_SOFT_CLEAR 0x1c -#define VIC_PROTECT 0x20 -#define VIC_PL190_VECT_ADDR 0x30/* PL190 only */ -#define VIC_PL190_DEF_VECT_ADDR 0x34/* PL190 only */ - -#define VIC_VECT_ADDR0 0x100/* 0 to 15 (0..31 PL192) */ -#define VIC_VECT_CNTL0 0x200/* 0 to 15 (0..31 PL192) */ -#define VIC_ITCR 0x300/* VIC test control register */ - -#define VIC_VECT_CNTL_ENABLE (1 << 5) - -#define VIC_PL192_VECT_ADDR 0xF00 - -#ifndef __ASSEMBLY__ -#include <linux/compiler.h> -#include <linux/types.h> struct device_node ;struct pt_regs ;
@@ -53,5 +35,4 @@ void vic_init(void __iomem *base, unsigned int irq_start, u32 vic_sources, u32 rint vic_of_init (struct device_node *node,struct device_node *parent);void vic_handle_irq (struct pt_regs *regs); -#endif /* __ASSEMBLY__ */ #endif
Signature · 1 line
1.7.10.4
PATCH v4 12/19 ARM: VIC: set handle_arch_irq in VIC initialization
In reply to Rob HerringFrom: Rob Herring <[email protected]>
Set handle_arch_irq to vic_handle_irq. Only the first VIC initialized can setup the handler.
--- arch/arm/common/vic.c | 1 + 1 file changed, 1 insertion(+)
arch/arm/common/vic.c +1 -0
@@ -234,6 +234,7 @@ static void __init vic_register(void __iomem *base, unsigned int irq, v->valid_sources = valid_sources; v->resume_sources = resume_sources; v->irq = irq; +set_handle_irq (vic_handle_irq); vic_id++; v->domain =irq_domain_add_simple (node,fls (valid_sources), irq, &vic_irqdomain_ops, v);
Signature · 1 line
1.7.10.4
PATCH v4 13/19 ARM: remove mach .handle_irq for VIC users
In reply to Rob HerringFrom: Rob Herring <[email protected]>
Now that the VIC initialization sets up the handle_arch_irq pointer, we can remove it for all machines and make it static.
--- arch/arm/common/vic.c | 4 +++- arch/arm/include/asm/hardware/vic.h | 1 - arch/arm/mach-ep93xx/adssphere.c | 1 - arch/arm/mach-ep93xx/edb93xx.c | 8 -------- arch/arm/mach-ep93xx/gesbc9312.c | 1 - arch/arm/mach-ep93xx/micro9.c | 4 ---- arch/arm/mach-ep93xx/simone.c | 1 - arch/arm/mach-ep93xx/snappercl15.c | 1 - arch/arm/mach-ep93xx/ts72xx.c | 1 - arch/arm/mach-ep93xx/vision_ep9307.c | 1 - arch/arm/mach-netx/nxdb500.c | 1 - arch/arm/mach-netx/nxdkn.c | 1 - arch/arm/mach-netx/nxeb500hmi.c | 1 - arch/arm/mach-nomadik/board-nhk8815.c | 1 - arch/arm/mach-picoxcell/common.c | 1 - arch/arm/mach-s3c64xx/mach-anw6410.c | 1 - arch/arm/mach-s3c64xx/mach-crag6410.c | 1 - arch/arm/mach-s3c64xx/mach-hmt.c | 1 - arch/arm/mach-s3c64xx/mach-mini6410.c | 1 - arch/arm/mach-s3c64xx/mach-ncp.c | 1 - arch/arm/mach-s3c64xx/mach-real6410.c | 1 - arch/arm/mach-s3c64xx/mach-smartq5.c | 1 - arch/arm/mach-s3c64xx/mach-smartq7.c | 1 - arch/arm/mach-s3c64xx/mach-smdk6400.c | 1 - arch/arm/mach-s3c64xx/mach-smdk6410.c | 1 - arch/arm/mach-s5p64x0/mach-smdk6440.c | 1 - arch/arm/mach-s5p64x0/mach-smdk6450.c | 1 - arch/arm/mach-s5pc100/mach-smdkc100.c | 1 - arch/arm/mach-s5pv210/mach-aquila.c | 1 - arch/arm/mach-s5pv210/mach-goni.c | 1 - arch/arm/mach-s5pv210/mach-smdkc110.c | 1 - arch/arm/mach-s5pv210/mach-smdkv210.c | 1 - arch/arm/mach-s5pv210/mach-torbreck.c | 1 - arch/arm/mach-spear3xx/spear300.c | 2 -- arch/arm/mach-spear3xx/spear310.c | 2 -- arch/arm/mach-spear3xx/spear320.c | 2 -- arch/arm/mach-spear6xx/spear6xx.c | 1 - arch/arm/mach-u300/core.c | 1 - arch/arm/mach-versatile/versatile_ab.c | 1 - arch/arm/mach-versatile/versatile_dt.c | 1 - arch/arm/mach-versatile/versatile_pb.c | 1 - 41 files changed, 3 insertions(+), 54 deletions(-)
arch/arm/common/vic.c +3 -1
@@ -83,6 +83,8 @@ static struct vic_device vic_devices[CONFIG_ARM_VIC_NR];static int vic_id; +static void vic_handle_irq (struct pt_regs *regs); +/** * vic_init2 - common initialisation code * @base: Base of the VIC.
@@ -466,7 +468,7 @@ static int handle_one_vic(struct vic_device *vic, struct pt_regs *regs)* Keep iterating over all registered VIC's until there are no pending * interrupts. */ -asmlinkage void __exception_irq_entry vic_handle_irq(struct pt_regs *regs) +static asmlinkage void __exception_irq_entry vic_handle_irq(struct pt_regs *regs) {int i, handled;
arch/arm/include/asm/hardware/vic.h +0 -1
@@ -33,6 +33,5 @@ void __vic_init(void __iomem *base, int irq_start, u32 vic_sources, u32 resume_sources, struct device_node *node);void vic_init (void __iomem *base,unsigned int irq_start,u32 vic_sources,u32 resume_sources);int vic_of_init (struct device_node *node,struct device_node *parent); -void vic_handle_irq (struct pt_regs *regs);#endif
arch/arm/mach-ep93xx/adssphere.c +0 -1
@@ -39,7 +39,6 @@ MACHINE_START(ADSSPHERE, "ADS Sphere board") .atag_offset = 0x100, .map_io = ep93xx_map_io, .init_irq = ep93xx_init_irq, - .handle_irq = vic_handle_irq, .timer = &ep93xx_timer, .init_machine = adssphere_init_machine, .init_late = ep93xx_init_late,
arch/arm/mach-ep93xx/edb93xx.c +0 -8
@@ -276,7 +276,6 @@ MACHINE_START(EDB9301, "Cirrus Logic EDB9301 Evaluation Board") .atag_offset = 0x100, .map_io = ep93xx_map_io, .init_irq = ep93xx_init_irq, - .handle_irq = vic_handle_irq, .timer = &ep93xx_timer, .init_machine = edb93xx_init_machine, .init_late = ep93xx_init_late,
@@ -290,7 +289,6 @@ MACHINE_START(EDB9302, "Cirrus Logic EDB9302 Evaluation Board") .atag_offset = 0x100, .map_io = ep93xx_map_io, .init_irq = ep93xx_init_irq, - .handle_irq = vic_handle_irq, .timer = &ep93xx_timer, .init_machine = edb93xx_init_machine, .init_late = ep93xx_init_late,
@@ -304,7 +302,6 @@ MACHINE_START(EDB9302A, "Cirrus Logic EDB9302A Evaluation Board") .atag_offset = 0x100, .map_io = ep93xx_map_io, .init_irq = ep93xx_init_irq, - .handle_irq = vic_handle_irq, .timer = &ep93xx_timer, .init_machine = edb93xx_init_machine, .init_late = ep93xx_init_late,
@@ -318,7 +315,6 @@ MACHINE_START(EDB9307, "Cirrus Logic EDB9307 Evaluation Board") .atag_offset = 0x100, .map_io = ep93xx_map_io, .init_irq = ep93xx_init_irq, - .handle_irq = vic_handle_irq, .timer = &ep93xx_timer, .init_machine = edb93xx_init_machine, .init_late = ep93xx_init_late,
@@ -332,7 +328,6 @@ MACHINE_START(EDB9307A, "Cirrus Logic EDB9307A Evaluation Board") .atag_offset = 0x100, .map_io = ep93xx_map_io, .init_irq = ep93xx_init_irq, - .handle_irq = vic_handle_irq, .timer = &ep93xx_timer, .init_machine = edb93xx_init_machine, .init_late = ep93xx_init_late,
@@ -346,7 +341,6 @@ MACHINE_START(EDB9312, "Cirrus Logic EDB9312 Evaluation Board") .atag_offset = 0x100, .map_io = ep93xx_map_io, .init_irq = ep93xx_init_irq, - .handle_irq = vic_handle_irq, .timer = &ep93xx_timer, .init_machine = edb93xx_init_machine, .init_late = ep93xx_init_late,
@@ -360,7 +354,6 @@ MACHINE_START(EDB9315, "Cirrus Logic EDB9315 Evaluation Board") .atag_offset = 0x100, .map_io = ep93xx_map_io, .init_irq = ep93xx_init_irq, - .handle_irq = vic_handle_irq, .timer = &ep93xx_timer, .init_machine = edb93xx_init_machine, .init_late = ep93xx_init_late,
@@ -374,7 +367,6 @@ MACHINE_START(EDB9315A, "Cirrus Logic EDB9315A Evaluation Board") .atag_offset = 0x100, .map_io = ep93xx_map_io, .init_irq = ep93xx_init_irq, - .handle_irq = vic_handle_irq, .timer = &ep93xx_timer, .init_machine = edb93xx_init_machine, .init_late = ep93xx_init_late,
arch/arm/mach-ep93xx/gesbc9312.c +0 -1
@@ -39,7 +39,6 @@ MACHINE_START(GESBC9312, "Glomation GESBC-9312-sx") .atag_offset = 0x100, .map_io = ep93xx_map_io, .init_irq = ep93xx_init_irq, - .handle_irq = vic_handle_irq, .timer = &ep93xx_timer, .init_machine = gesbc9312_init_machine, .init_late = ep93xx_init_late,
arch/arm/mach-ep93xx/micro9.c +0 -4
@@ -82,7 +82,6 @@ MACHINE_START(MICRO9, "Contec Micro9-High") .atag_offset = 0x100, .map_io = ep93xx_map_io, .init_irq = ep93xx_init_irq, - .handle_irq = vic_handle_irq, .timer = &ep93xx_timer, .init_machine = micro9_init_machine, .init_late = ep93xx_init_late,
@@ -96,7 +95,6 @@ MACHINE_START(MICRO9M, "Contec Micro9-Mid") .atag_offset = 0x100, .map_io = ep93xx_map_io, .init_irq = ep93xx_init_irq, - .handle_irq = vic_handle_irq, .timer = &ep93xx_timer, .init_machine = micro9_init_machine, .init_late = ep93xx_init_late,
@@ -110,7 +108,6 @@ MACHINE_START(MICRO9L, "Contec Micro9-Lite") .atag_offset = 0x100, .map_io = ep93xx_map_io, .init_irq = ep93xx_init_irq, - .handle_irq = vic_handle_irq, .timer = &ep93xx_timer, .init_machine = micro9_init_machine, .init_late = ep93xx_init_late,
@@ -124,7 +121,6 @@ MACHINE_START(MICRO9S, "Contec Micro9-Slim") .atag_offset = 0x100, .map_io = ep93xx_map_io, .init_irq = ep93xx_init_irq, - .handle_irq = vic_handle_irq, .timer = &ep93xx_timer, .init_machine = micro9_init_machine, .init_late = ep93xx_init_late,
arch/arm/mach-ep93xx/simone.c +0 -1
@@ -83,7 +83,6 @@ MACHINE_START(SIM_ONE, "Simplemachines Sim.One Board") .atag_offset = 0x100, .map_io = ep93xx_map_io, .init_irq = ep93xx_init_irq, - .handle_irq = vic_handle_irq, .timer = &ep93xx_timer, .init_machine = simone_init_machine, .init_late = ep93xx_init_late,
arch/arm/mach-ep93xx/snappercl15.c +0 -1
@@ -176,7 +176,6 @@ MACHINE_START(SNAPPER_CL15, "Bluewater Systems Snapper CL15") .atag_offset = 0x100, .map_io = ep93xx_map_io, .init_irq = ep93xx_init_irq, - .handle_irq = vic_handle_irq, .timer = &ep93xx_timer, .init_machine = snappercl15_init_machine, .init_late = ep93xx_init_late,
arch/arm/mach-ep93xx/ts72xx.c +0 -1
@@ -246,7 +246,6 @@ MACHINE_START(TS72XX, "Technologic Systems TS-72xx SBC") .atag_offset = 0x100, .map_io = ts72xx_map_io, .init_irq = ep93xx_init_irq, - .handle_irq = vic_handle_irq, .timer = &ep93xx_timer, .init_machine = ts72xx_init_machine, .init_late = ep93xx_init_late,
arch/arm/mach-ep93xx/vision_ep9307.c +0 -1
@@ -364,7 +364,6 @@ MACHINE_START(VISION_EP9307, "Vision Engraving Systems EP9307") .atag_offset = 0x100, .map_io = vision_map_io, .init_irq = ep93xx_init_irq, - .handle_irq = vic_handle_irq, .timer = &ep93xx_timer, .init_machine = vision_init_machine, .init_late = ep93xx_init_late,
arch/arm/mach-netx/nxdb500.c +0 -1
@@ -204,7 +204,6 @@ MACHINE_START(NXDB500, "Hilscher nxdb500") .atag_offset = 0x100, .map_io = netx_map_io, .init_irq = netx_init_irq, - .handle_irq = vic_handle_irq, .timer = &netx_timer, .init_machine = nxdb500_init, .restart = netx_restart,
arch/arm/mach-netx/nxdkn.c +0 -1
@@ -97,7 +97,6 @@ MACHINE_START(NXDKN, "Hilscher nxdkn") .atag_offset = 0x100, .map_io = netx_map_io, .init_irq = netx_init_irq, - .handle_irq = vic_handle_irq, .timer = &netx_timer, .init_machine = nxdkn_init, .restart = netx_restart,
arch/arm/mach-netx/nxeb500hmi.c +0 -1
@@ -181,7 +181,6 @@ MACHINE_START(NXEB500HMI, "Hilscher nxeb500hmi") .atag_offset = 0x100, .map_io = netx_map_io, .init_irq = netx_init_irq, - .handle_irq = vic_handle_irq, .timer = &netx_timer, .init_machine = nxeb500hmi_init, .restart = netx_restart,
arch/arm/mach-nomadik/board-nhk8815.c +0 -1
@@ -353,7 +353,6 @@ MACHINE_START(NOMADIK, "NHK8815") .atag_offset = 0x100, .map_io = cpu8815_map_io, .init_irq = cpu8815_init_irq, - .handle_irq = vic_handle_irq, .timer = &nomadik_timer, .init_machine = nhk8815_platform_init, .restart = cpu8815_restart,
arch/arm/mach-picoxcell/common.c +0 -1
@@ -98,7 +98,6 @@ DT_MACHINE_START(PICOXCELL, "Picochip picoXcell") .map_io = picoxcell_map_io, .nr_irqs = NR_IRQS_LEGACY, .init_irq = picoxcell_init_irq, - .handle_irq = vic_handle_irq, .timer = &dw_apb_timer, .init_machine = picoxcell_init_machine, .dt_compat = picoxcell_dt_match,
arch/arm/mach-s3c64xx/mach-anw6410.c +0 -1
@@ -230,7 +230,6 @@ MACHINE_START(ANW6410, "A&W6410") .atag_offset = 0x100, .init_irq = s3c6410_init_irq, - .handle_irq = vic_handle_irq, .map_io = anw6410_map_io, .init_machine = anw6410_machine_init, .init_late = s3c64xx_init_late,
arch/arm/mach-s3c64xx/mach-crag6410.c +0 -1
@@ -867,7 +867,6 @@ MACHINE_START(WLF_CRAGG_6410, "Wolfson Cragganmore 6410")/* Maintainer: Mark Brown <[email protected]> */ .atag_offset = 0x100, .init_irq = s3c6410_init_irq, - .handle_irq = vic_handle_irq, .map_io = crag6410_map_io, .init_machine = crag6410_machine_init, .init_late = s3c64xx_init_late,
arch/arm/mach-s3c64xx/mach-hmt.c +0 -1
@@ -273,7 +273,6 @@ MACHINE_START(HMT, "Airgoo-HMT")/* Maintainer: Peter Korsgaard <[email protected]> */ .atag_offset = 0x100, .init_irq = s3c6410_init_irq, - .handle_irq = vic_handle_irq, .map_io = hmt_map_io, .init_machine = hmt_machine_init, .init_late = s3c64xx_init_late,
arch/arm/mach-s3c64xx/mach-mini6410.c +0 -1
@@ -352,7 +352,6 @@ MACHINE_START(MINI6410, "MINI6410")/* Maintainer: Darius Augulis <[email protected]> */ .atag_offset = 0x100, .init_irq = s3c6410_init_irq, - .handle_irq = vic_handle_irq, .map_io = mini6410_map_io, .init_machine = mini6410_machine_init, .init_late = s3c64xx_init_late,
arch/arm/mach-s3c64xx/mach-ncp.c +0 -1
@@ -101,7 +101,6 @@ MACHINE_START(NCP, "NCP")/* Maintainer: Samsung Electronics */ .atag_offset = 0x100, .init_irq = s3c6410_init_irq, - .handle_irq = vic_handle_irq, .map_io = ncp_map_io, .init_machine = ncp_machine_init, .init_late = s3c64xx_init_late,
arch/arm/mach-s3c64xx/mach-real6410.c +0 -1
@@ -331,7 +331,6 @@ MACHINE_START(REAL6410, "REAL6410") .atag_offset = 0x100, .init_irq = s3c6410_init_irq, - .handle_irq = vic_handle_irq, .map_io = real6410_map_io, .init_machine = real6410_machine_init, .init_late = s3c64xx_init_late,
arch/arm/mach-s3c64xx/mach-smartq5.c +0 -1
@@ -153,7 +153,6 @@ MACHINE_START(SMARTQ5, "SmartQ 5")/* Maintainer: Maurus Cuelenaere <mcuelenaere AT gmail DOT com> */ .atag_offset = 0x100, .init_irq = s3c6410_init_irq, - .handle_irq = vic_handle_irq, .map_io = smartq_map_io, .init_machine = smartq5_machine_init, .init_late = s3c64xx_init_late,
arch/arm/mach-s3c64xx/mach-smartq7.c +0 -1
@@ -169,7 +169,6 @@ MACHINE_START(SMARTQ7, "SmartQ 7")/* Maintainer: Maurus Cuelenaere <mcuelenaere AT gmail DOT com> */ .atag_offset = 0x100, .init_irq = s3c6410_init_irq, - .handle_irq = vic_handle_irq, .map_io = smartq_map_io, .init_machine = smartq7_machine_init, .init_late = s3c64xx_init_late,
arch/arm/mach-s3c64xx/mach-smdk6400.c +0 -1
@@ -90,7 +90,6 @@ MACHINE_START(SMDK6400, "SMDK6400") .atag_offset = 0x100, .init_irq = s3c6400_init_irq, - .handle_irq = vic_handle_irq, .map_io = smdk6400_map_io, .init_machine = smdk6400_machine_init, .init_late = s3c64xx_init_late,
arch/arm/mach-s3c64xx/mach-smdk6410.c +0 -1
@@ -700,7 +700,6 @@ MACHINE_START(SMDK6410, "SMDK6410") .atag_offset = 0x100, .init_irq = s3c6410_init_irq, - .handle_irq = vic_handle_irq, .map_io = smdk6410_map_io, .init_machine = smdk6410_machine_init, .init_late = s3c64xx_init_late,
arch/arm/mach-s5p64x0/mach-smdk6440.c +0 -1
@@ -272,7 +272,6 @@ MACHINE_START(SMDK6440, "SMDK6440") .atag_offset = 0x100, .init_irq = s5p6440_init_irq, - .handle_irq = vic_handle_irq, .map_io = smdk6440_map_io, .init_machine = smdk6440_machine_init, .timer = &s5p_timer,
arch/arm/mach-s5p64x0/mach-smdk6450.c +0 -1
@@ -291,7 +291,6 @@ MACHINE_START(SMDK6450, "SMDK6450") .atag_offset = 0x100, .init_irq = s5p6450_init_irq, - .handle_irq = vic_handle_irq, .map_io = smdk6450_map_io, .init_machine = smdk6450_machine_init, .timer = &s5p_timer,
arch/arm/mach-s5pc100/mach-smdkc100.c +0 -1
@@ -254,7 +254,6 @@ MACHINE_START(SMDKC100, "SMDKC100")/* Maintainer: Byungho Min <[email protected]> */ .atag_offset = 0x100, .init_irq = s5pc100_init_irq, - .handle_irq = vic_handle_irq, .map_io = smdkc100_map_io, .init_machine = smdkc100_machine_init, .timer = &s3c24xx_timer,
arch/arm/mach-s5pv210/mach-aquila.c +0 -1
@@ -685,7 +685,6 @@ MACHINE_START(AQUILA, "Aquila")Kyungmin Park <[email protected]> */ .atag_offset = 0x100, .init_irq = s5pv210_init_irq, - .handle_irq = vic_handle_irq, .map_io = aquila_map_io, .init_machine = aquila_machine_init, .timer = &s5p_timer,
arch/arm/mach-s5pv210/mach-goni.c +0 -1
@@ -972,7 +972,6 @@ MACHINE_START(GONI, "GONI")/* Maintainers: Kyungmin Park <[email protected]> */ .atag_offset = 0x100, .init_irq = s5pv210_init_irq, - .handle_irq = vic_handle_irq, .map_io = goni_map_io, .init_machine = goni_machine_init, .timer = &s5p_timer,
arch/arm/mach-s5pv210/mach-smdkc110.c +0 -1
@@ -152,7 +152,6 @@ MACHINE_START(SMDKC110, "SMDKC110")/* Maintainer: Kukjin Kim <[email protected]> */ .atag_offset = 0x100, .init_irq = s5pv210_init_irq, - .handle_irq = vic_handle_irq, .map_io = smdkc110_map_io, .init_machine = smdkc110_machine_init, .timer = &s5p_timer,
arch/arm/mach-s5pv210/mach-smdkv210.c +0 -1
@@ -328,7 +328,6 @@ MACHINE_START(SMDKV210, "SMDKV210")/* Maintainer: Kukjin Kim <[email protected]> */ .atag_offset = 0x100, .init_irq = s5pv210_init_irq, - .handle_irq = vic_handle_irq, .map_io = smdkv210_map_io, .init_machine = smdkv210_machine_init, .timer = &s5p_timer,
arch/arm/mach-s5pv210/mach-torbreck.c +0 -1
@@ -129,7 +129,6 @@ MACHINE_START(TORBRECK, "TORBRECK")/* Maintainer: Hyunchul Ko <[email protected]> */ .atag_offset = 0x100, .init_irq = s5pv210_init_irq, - .handle_irq = vic_handle_irq, .map_io = torbreck_map_io, .init_machine = torbreck_machine_init, .timer = &s5p_timer,
arch/arm/mach-spear3xx/spear300.c +0 -2
@@ -15,7 +15,6 @@#include <linux/amba/pl08x.h> #include <linux/of_platform.h> -#include <asm/hardware/vic.h> #include <asm/mach/arch.h> #include <mach/generic.h> #include <mach/spear.h>
@@ -213,7 +212,6 @@ static void __init spear300_map_io(void)DT_MACHINE_START (SPEAR300_DT ,"ST SPEAr300 SoC with Flattened Device Tree" ) .map_io = spear300_map_io, .init_irq = spear3xx_dt_init_irq, - .handle_irq = vic_handle_irq, .timer = &spear3xx_timer, .init_machine = spear300_dt_init, .restart = spear_restart,
arch/arm/mach-spear3xx/spear310.c +0 -2
@@ -16,7 +16,6 @@#include <linux/amba/pl08x.h> #include <linux/amba/serial.h> #include <linux/of_platform.h> -#include <asm/hardware/vic.h> #include <asm/mach/arch.h> #include <mach/generic.h> #include <mach/spear.h>
@@ -255,7 +254,6 @@ static void __init spear310_map_io(void)DT_MACHINE_START (SPEAR310_DT ,"ST SPEAr310 SoC with Flattened Device Tree" ) .map_io = spear310_map_io, .init_irq = spear3xx_dt_init_irq, - .handle_irq = vic_handle_irq, .timer = &spear3xx_timer, .init_machine = spear310_dt_init, .restart = spear_restart,
arch/arm/mach-spear3xx/spear320.c +0 -2
@@ -17,7 +17,6 @@#include <linux/amba/pl08x.h> #include <linux/amba/serial.h> #include <linux/of_platform.h> -#include <asm/hardware/vic.h> #include <asm/mach/arch.h> #include <mach/generic.h> #include <mach/spear.h>
@@ -269,7 +268,6 @@ static void __init spear320_map_io(void)DT_MACHINE_START (SPEAR320_DT ,"ST SPEAr320 SoC with Flattened Device Tree" ) .map_io = spear320_map_io, .init_irq = spear3xx_dt_init_irq, - .handle_irq = vic_handle_irq, .timer = &spear3xx_timer, .init_machine = spear320_dt_init, .restart = spear_restart,
arch/arm/mach-spear6xx/spear6xx.c +0 -1
@@ -438,7 +438,6 @@ static void __init spear6xx_dt_init_irq(void)DT_MACHINE_START (SPEAR600_DT ,"ST SPEAr600 (Flattened Device Tree)" ) .map_io = spear6xx_map_io, .init_irq = spear6xx_dt_init_irq, - .handle_irq = vic_handle_irq, .timer = &spear6xx_timer, .init_machine = spear600_dt_init, .restart = spear_restart,
arch/arm/mach-u300/core.c +0 -1
@@ -1779,7 +1779,6 @@ MACHINE_START(U300, "Ericsson AB U335 S335/B335 Prototype Board") .map_io = u300_map_io, .nr_irqs = 0, .init_irq = u300_init_irq, - .handle_irq = vic_handle_irq, .timer = &u300_timer, .init_machine = u300_init_machine, .restart = u300_restart,
arch/arm/mach-versatile/versatile_ab.c +0 -1
@@ -39,7 +39,6 @@ MACHINE_START(VERSATILE_AB, "ARM-Versatile AB") .map_io = versatile_map_io, .init_early = versatile_init_early, .init_irq = versatile_init_irq, - .handle_irq = vic_handle_irq, .timer = &versatile_timer, .init_machine = versatile_init, .restart = versatile_restart,
arch/arm/mach-versatile/versatile_dt.c +0 -1
@@ -46,7 +46,6 @@ DT_MACHINE_START(VERSATILE_PB, "ARM-Versatile (Device Tree Support)") .map_io = versatile_map_io, .init_early = versatile_init_early, .init_irq = versatile_init_irq, - .handle_irq = vic_handle_irq, .timer = &versatile_timer, .init_machine = versatile_dt_init, .dt_compat = versatile_dt_match,
arch/arm/mach-versatile/versatile_pb.c +0 -1
@@ -107,7 +107,6 @@ MACHINE_START(VERSATILE_PB, "ARM-Versatile PB") .map_io = versatile_map_io, .init_early = versatile_init_early, .init_irq = versatile_init_irq, - .handle_irq = vic_handle_irq, .timer = &versatile_timer, .init_machine = versatile_pb_init, .restart = versatile_restart,
Signature · 1 line
1.7.10.4
Arnd Bergmann
maintainerPATCH v4 13/19 ARM: remove mach .handle_irq for VIC users
Quoted 14 lines · Rob Herring
From: Rob Herring <[email protected]>
Now that the VIC initialization sets up the
handle_arch_irqpointer, we can remove it for all machines and make it static.Signed-off-by Rob Herring <[email protected]>Cc Ryan Mallon <[email protected]>Cc Russell King <[email protected]>Cc Hubert Feurstein <[email protected]>Cc Alessandro Rubini <[email protected]>Cc STEricsson <[email protected]>Cc Ben Dooks <[email protected]>Cc Kyungmin Park <[email protected]>Cc Shiraz Hashim <[email protected]>
Quoted 8 lines
Cc Rajeev Kumar <[email protected]>Acked-by Jamie Iles <[email protected]>Acked-by Linus Walleij <[email protected]>Acked-by Mark Brown <[email protected]>Acked-by Viresh Kumar <[email protected]>Acked-by Kukjin Kim <[email protected]>Acked-by Olof Johansson <[email protected]>
However,
Quoted 13 lines
index 6894df1..d5ee437 100644
arch/arm/common/vic.c +2
-0@@ -83,6 +83,8 @@ static struct vic_device vic_devices[CONFIG_ARM_VIC_NR];static int vic_id; +static void vic_handle_irq (struct pt_regs *regs); +/** * vic_init2 - common initialisation code * @base: Base of the VIC.
arch/arm/common/vic.c static int handle_one_vic(struct vic_device *vic, struct pt_regs *regs) · line 474
Quoted 8 lines
arch/arm/common/vic.c +1
-1@@ -466,7 +468,7 @@ static int handle_one_vic(struct vic_device *vic, struct pt_regs *regs)* Keep iterating over all registered VIC's until there are no pending * interrupts. */ -asmlinkage void __exception_irq_entry vic_handle_irq(struct pt_regs *regs) +static asmlinkage void __exception_irq_entry vic_handle_irq(struct pt_regs *regs) {int i, handled;
I'm a big fan of the "no forward function declarations in .c files" rule. Can I convince to reorder the file contents instead to avoid the forward declaration?
Arnd
PATCH v4 13/19 ARM: remove mach .handle_irq for VIC users
Quoted 24 lines · Arnd Bergmann
Quoted 14 lines · Rob Herring
From: Rob Herring <[email protected]>
Now that the VIC initialization sets up the
handle_arch_irqpointer, we can remove it for all machines and make it static.Signed-off-by Rob Herring <[email protected]>Cc Ryan Mallon <[email protected]>Cc Russell King <[email protected]>Cc Hubert Feurstein <[email protected]>Cc Alessandro Rubini <[email protected]>Cc STEricsson <[email protected]>Cc Ben Dooks <[email protected]>Cc Kyungmin Park <[email protected]>Cc Shiraz Hashim <[email protected]>Quoted 8 lines
Cc Rajeev Kumar <[email protected]>Acked-by Jamie Iles <[email protected]>Acked-by Linus Walleij <[email protected]>Acked-by Mark Brown <[email protected]>Acked-by Viresh Kumar <[email protected]>Acked-by Kukjin Kim <[email protected]>Acked-by Olof Johansson <[email protected]>
Quoted 1 line
Acked-by Arnd Bergmann <[email protected]>
And
Quoted 9 lines
Quoted 9 lines
arch/arm/common/vic.c +2
-0+static void vic_handle_irq (struct pt_regs *regs); +/** * vic_init2 - common initialisation code * @base: Base of the VIC. @@ -466,7 +468,7 @@ static int handle_one_vic(struct vic_device *vic, struct pt_regs *regs)* Keep iterating over all registered VIC's until there are no pending * interrupts. */
Quoted 8 lines
arch/arm/common/vic.c static int handle_one_vic(struct vic_device *vic, struct pt_regs *regs) · line 474
Quoted 5 lines
arch/arm/common/vic.c +1
-1-asmlinkage void __exception_irq_entry vic_handle_irq(struct pt_regs *regs) +static asmlinkage void __exception_irq_entry vic_handle_irq(struct pt_regs *regs) {int i, handled;I'm a big fan of the "no forward function declarations in .c files" rule. Can I convince to reorder the file contents instead to avoid the forward declaration?
And +1 on this comment.
Yours,
Linus Walleij
PATCH v4 13/19 ARM: remove mach .handle_irq for VIC users
In reply to Rob Herringarch/arm/common/vic.c static int handle_one_vic(struct vic_device *vic, struct pt_regs *regs) · line 471
Quoted 2 lines · Rob Herring
arch/arm/common/vic.c +1
-1-asmlinkage void __exception_irq_entry vic_handle_irq(struct pt_regs *regs) +static asmlinkage void __exception_irq_entry vic_handle_irq(struct pt_regs *regs)
NAK. No, not "static asmlinkage" which makes no sense.
PATCH v4 14/19 ARM: remove unneeded vic.h includes
In reply to Rob HerringFrom: Rob Herring <[email protected]>
Numerous includes of asm/hardware/vic.h aren't needed, so remove them.
--- arch/arm/mach-ep93xx/adssphere.c | 1 - arch/arm/mach-ep93xx/edb93xx.c | 1 - arch/arm/mach-ep93xx/gesbc9312.c | 1 - arch/arm/mach-ep93xx/micro9.c | 1 - arch/arm/mach-ep93xx/simone.c | 1 - arch/arm/mach-ep93xx/snappercl15.c | 1 - arch/arm/mach-ep93xx/ts72xx.c | 1 - arch/arm/mach-ep93xx/vision_ep9307.c | 1 - arch/arm/mach-netx/nxdb500.c | 1 - arch/arm/mach-netx/nxdkn.c | 1 - arch/arm/mach-netx/nxeb500hmi.c | 1 - arch/arm/mach-nomadik/board-nhk8815.c | 1 - arch/arm/mach-s3c64xx/mach-anw6410.c | 1 - arch/arm/mach-s3c64xx/mach-crag6410.c | 1 - arch/arm/mach-s3c64xx/mach-hmt.c | 1 - arch/arm/mach-s3c64xx/mach-mini6410.c | 1 - arch/arm/mach-s3c64xx/mach-ncp.c | 1 - arch/arm/mach-s3c64xx/mach-real6410.c | 1 - arch/arm/mach-s3c64xx/mach-smartq5.c | 1 - arch/arm/mach-s3c64xx/mach-smartq7.c | 1 - arch/arm/mach-s3c64xx/mach-smdk6400.c | 1 - arch/arm/mach-s3c64xx/mach-smdk6410.c | 1 - arch/arm/mach-s5p64x0/mach-smdk6440.c | 1 - arch/arm/mach-s5p64x0/mach-smdk6450.c | 1 - arch/arm/mach-s5pc100/mach-smdkc100.c | 1 - arch/arm/mach-s5pv210/include/mach/regs-irq.h | 1 - arch/arm/mach-s5pv210/mach-aquila.c | 1 - arch/arm/mach-s5pv210/mach-goni.c | 1 - arch/arm/mach-s5pv210/mach-smdkc110.c | 1 - arch/arm/mach-s5pv210/mach-smdkv210.c | 1 - arch/arm/mach-s5pv210/mach-torbreck.c | 1 - arch/arm/mach-sunxi/sunxi.c | 1 - arch/arm/mach-versatile/versatile_ab.c | 1 - arch/arm/mach-versatile/versatile_dt.c | 1 - arch/arm/mach-versatile/versatile_pb.c | 1 - 35 files changed, 35 deletions(-)
arch/arm/mach-ep93xx/adssphere.c +0 -1
@@ -17,7 +17,6 @@#include <mach/hardware.h> -#include <asm/hardware/vic.h> #include <asm/mach-types.h> #include <asm/mach/arch.h>
arch/arm/mach-ep93xx/edb93xx.c +0 -1
@@ -39,7 +39,6 @@#include <linux/platform_data/spi-ep93xx.h> #include <mach/gpio-ep93xx.h> -#include <asm/hardware/vic.h> #include <asm/mach-types.h> #include <asm/mach/arch.h>
arch/arm/mach-ep93xx/gesbc9312.c +0 -1
@@ -17,7 +17,6 @@#include <mach/hardware.h> -#include <asm/hardware/vic.h> #include <asm/mach-types.h> #include <asm/mach/arch.h>
arch/arm/mach-ep93xx/micro9.c +0 -1
@@ -18,7 +18,6 @@#include <mach/hardware.h> -#include <asm/hardware/vic.h> #include <asm/mach-types.h> #include <asm/mach/arch.h>
arch/arm/mach-ep93xx/simone.c +0 -1
@@ -25,7 +25,6 @@#include <linux/platform_data/video-ep93xx.h> #include <mach/gpio-ep93xx.h> -#include <asm/hardware/vic.h> #include <asm/mach-types.h> #include <asm/mach/arch.h>
arch/arm/mach-ep93xx/snappercl15.c +0 -1
@@ -31,7 +31,6 @@#include <linux/platform_data/video-ep93xx.h> #include <mach/gpio-ep93xx.h> -#include <asm/hardware/vic.h> #include <asm/mach-types.h> #include <asm/mach/arch.h>
arch/arm/mach-ep93xx/ts72xx.c +0 -1
@@ -22,7 +22,6 @@#include <mach/hardware.h> -#include <asm/hardware/vic.h> #include <asm/mach-types.h> #include <asm/mach/map.h> #include <asm/mach/arch.h>
arch/arm/mach-ep93xx/vision_ep9307.c +0 -1
@@ -34,7 +34,6 @@#include <linux/platform_data/spi-ep93xx.h> #include <mach/gpio-ep93xx.h> -#include <asm/hardware/vic.h> #include <asm/mach-types.h> #include <asm/mach/map.h> #include <asm/mach/arch.h>
arch/arm/mach-netx/nxdb500.c +0 -1
@@ -28,7 +28,6 @@#include <mach/hardware.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> -#include <asm/hardware/vic.h> #include <mach/netx-regs.h> #include <linux/platform_data/eth-netx.h>
arch/arm/mach-netx/nxdkn.c +0 -1
@@ -28,7 +28,6 @@#include <mach/hardware.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> -#include <asm/hardware/vic.h> #include <mach/netx-regs.h> #include <linux/platform_data/eth-netx.h>
arch/arm/mach-netx/nxeb500hmi.c +0 -1
@@ -28,7 +28,6 @@#include <mach/hardware.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> -#include <asm/hardware/vic.h> #include <mach/netx-regs.h> #include <linux/platform_data/eth-netx.h>
arch/arm/mach-nomadik/board-nhk8815.c +0 -1
@@ -28,7 +28,6 @@#include <linux/platform_data/pinctrl-nomadik.h> #include <linux/platform_data/clocksource-nomadik-mtu.h> #include <linux/platform_data/mtd-nomadik-nand.h> -#include <asm/hardware/vic.h> #include <asm/sizes.h> #include <asm/mach-types.h> #include <asm/mach/arch.h>
arch/arm/mach-s3c64xx/mach-anw6410.c +0 -1
@@ -31,7 +31,6 @@#include <video/platform_lcd.h> #include <video/samsung_fimd.h> -#include <asm/hardware/vic.h> #include <asm/mach/arch.h> #include <asm/mach/map.h> #include <asm/mach/irq.h>
arch/arm/mach-s3c64xx/mach-crag6410.c +0 -1
@@ -42,7 +42,6 @@#include <sound/wm1250-ev1.h> -#include <asm/hardware/vic.h> #include <asm/mach/arch.h> #include <asm/mach-types.h>
arch/arm/mach-s3c64xx/mach-hmt.c +0 -1
@@ -30,7 +30,6 @@#include <mach/hardware.h> #include <mach/map.h> -#include <asm/hardware/vic.h> #include <asm/irq.h> #include <asm/mach-types.h>
arch/arm/mach-s3c64xx/mach-mini6410.c +0 -1
@@ -24,7 +24,6 @@#include <linux/serial_core.h> #include <linux/types.h> -#include <asm/hardware/vic.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> #include <asm/mach/map.h>
arch/arm/mach-s3c64xx/mach-ncp.c +0 -1
@@ -26,7 +26,6 @@#include <video/platform_lcd.h> #include <video/samsung_fimd.h> -#include <asm/hardware/vic.h> #include <asm/mach/arch.h> #include <asm/mach/map.h> #include <asm/mach/irq.h>
arch/arm/mach-s3c64xx/mach-real6410.c +0 -1
@@ -25,7 +25,6 @@#include <linux/serial_core.h> #include <linux/types.h> -#include <asm/hardware/vic.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> #include <asm/mach/map.h>
arch/arm/mach-s3c64xx/mach-smartq5.c +0 -1
@@ -17,7 +17,6 @@#include <linux/leds.h> #include <linux/platform_device.h> -#include <asm/hardware/vic.h> #include <asm/mach-types.h> #include <asm/mach/arch.h>
arch/arm/mach-s3c64xx/mach-smartq7.c +0 -1
@@ -17,7 +17,6 @@#include <linux/leds.h> #include <linux/platform_device.h> -#include <asm/hardware/vic.h> #include <asm/mach-types.h> #include <asm/mach/arch.h>
arch/arm/mach-s3c64xx/mach-smdk6400.c +0 -1
@@ -22,7 +22,6 @@#include <asm/mach-types.h> -#include <asm/hardware/vic.h> #include <asm/mach/arch.h> #include <asm/mach/map.h> #include <asm/mach/irq.h>
arch/arm/mach-s3c64xx/mach-smdk6410.c +0 -1
@@ -45,7 +45,6 @@#include <video/platform_lcd.h> #include <video/samsung_fimd.h> -#include <asm/hardware/vic.h> #include <asm/mach/arch.h> #include <asm/mach/map.h> #include <asm/mach/irq.h>
arch/arm/mach-s5p64x0/mach-smdk6440.c +0 -1
@@ -29,7 +29,6 @@#include <video/platform_lcd.h> #include <video/samsung_fimd.h> -#include <asm/hardware/vic.h> #include <asm/mach/arch.h> #include <asm/mach/map.h> #include <asm/irq.h>
arch/arm/mach-s5p64x0/mach-smdk6450.c +0 -1
@@ -29,7 +29,6 @@#include <video/platform_lcd.h> #include <video/samsung_fimd.h> -#include <asm/hardware/vic.h> #include <asm/mach/arch.h> #include <asm/mach/map.h> #include <asm/irq.h>
arch/arm/mach-s5pc100/mach-smdkc100.c +0 -1
@@ -25,7 +25,6 @@#include <linux/input.h> #include <linux/pwm_backlight.h> -#include <asm/hardware/vic.h> #include <asm/mach/arch.h> #include <asm/mach/map.h>
arch/arm/mach-s5pv210/include/mach/regs-irq.h +0 -1
@@ -13,7 +13,6 @@#ifndef __ASM_ARCH_REGS_IRQ_H#define __ASM_ARCH_REGS_IRQ_H __FILE__ -#include <asm/hardware/vic.h> #include <mach/map.h> #endif /* __ASM_ARCH_REGS_IRQ_H */
arch/arm/mach-s5pv210/mach-aquila.c +0 -1
@@ -22,7 +22,6 @@#include <linux/input.h> #include <linux/gpio.h> -#include <asm/hardware/vic.h> #include <asm/mach/arch.h> #include <asm/mach/map.h> #include <asm/setup.h>
arch/arm/mach-s5pv210/mach-goni.c +0 -1
@@ -29,7 +29,6 @@#include <linux/interrupt.h> #include <linux/platform_data/s3c-hsotg.h> -#include <asm/hardware/vic.h> #include <asm/mach/arch.h> #include <asm/mach/map.h> #include <asm/setup.h>
arch/arm/mach-s5pv210/mach-smdkc110.c +0 -1
@@ -15,7 +15,6 @@#include <linux/i2c.h> #include <linux/device.h> -#include <asm/hardware/vic.h> #include <asm/mach/arch.h> #include <asm/mach/map.h> #include <asm/setup.h>
arch/arm/mach-s5pv210/mach-smdkv210.c +0 -1
@@ -21,7 +21,6 @@#include <linux/pwm_backlight.h> #include <linux/platform_data/s3c-hsotg.h> -#include <asm/hardware/vic.h> #include <asm/mach/arch.h> #include <asm/mach/map.h> #include <asm/setup.h>
arch/arm/mach-s5pv210/mach-torbreck.c +0 -1
@@ -14,7 +14,6 @@#include <linux/init.h> #include <linux/serial_core.h> -#include <asm/hardware/vic.h> #include <asm/mach/arch.h> #include <asm/mach/map.h> #include <asm/setup.h>
arch/arm/mach-sunxi/sunxi.c +0 -1
@@ -21,7 +21,6 @@#include <linux/irqchip/sunxi.h> -#include <asm/hardware/vic.h> #include <asm/mach/arch.h> #include <asm/mach/map.h>
arch/arm/mach-versatile/versatile_ab.c +0 -1
@@ -26,7 +26,6 @@#include <mach/hardware.h> #include <asm/irq.h> -#include <asm/hardware/vic.h> #include <asm/mach-types.h> #include <asm/mach/arch.h>
arch/arm/mach-versatile/versatile_dt.c +0 -1
@@ -24,7 +24,6 @@#include <linux/init.h> #include <linux/of_irq.h> #include <linux/of_platform.h> -#include <asm/hardware/vic.h> #include <asm/mach-types.h> #include <asm/mach/arch.h>
arch/arm/mach-versatile/versatile_pb.c +0 -1
@@ -27,7 +27,6 @@#include <linux/io.h> #include <mach/hardware.h> -#include <asm/hardware/vic.h> #include <asm/irq.h> #include <asm/mach-types.h>
Signature · 1 line
1.7.10.4
PATCH v4 14/19 ARM: remove unneeded vic.h includes
Quoted 19 lines · Rob Herring
From: Rob Herring <[email protected]>
Numerous includes of
asm/hardware/vic.haren't needed, so remove them.Signed-off-by Rob Herring <[email protected]>Cc Hartley Sweeten <[email protected]>Cc Ryan Mallon <[email protected]>Cc Russell King <[email protected]>Cc Hubert Feurstein <[email protected]>Cc Alessandro Rubini <[email protected]>Cc Linus Walleij <[email protected]>Cc STEricsson <[email protected]>Cc Ben Dooks <[email protected]>Cc Kukjin Kim <[email protected]>Cc Mark Brown <[email protected]>Cc Kyungmin Park <[email protected]>Cc Maxime Ripard <[email protected]>Cc linux-samsung-soc at vger.kernel.orgCc patches at opensource.wolfsonmicro.com
Quoted 9 lines
--- arch/arm/mach-ep93xx/adssphere.c | 1 - arch/arm/mach-ep93xx/edb93xx.c | 1 - arch/arm/mach-ep93xx/gesbc9312.c | 1 - arch/arm/mach-ep93xx/micro9.c | 1 - arch/arm/mach-ep93xx/simone.c | 1 - arch/arm/mach-ep93xx/snappercl15.c | 1 - arch/arm/mach-ep93xx/ts72xx.c | 1 - arch/arm/mach-ep93xx/vision_ep9307.c | 1 -
For ep93xx:
Arnd Bergmann
maintainerPATCH v4 14/19 ARM: remove unneeded vic.h includes
In reply to Rob HerringQuoted 4 lines · Rob Herring
From: Rob Herring <[email protected]>
Numerous includes of
asm/hardware/vic.haren't needed, so remove them.
Quoted 15 lines
Signed-off-by Rob Herring <[email protected]>Cc Hartley Sweeten <[email protected]>Cc Ryan Mallon <[email protected]>Cc Russell King <[email protected]>Cc Hubert Feurstein <[email protected]>Cc Alessandro Rubini <[email protected]>Cc Linus Walleij <[email protected]>Cc STEricsson <[email protected]>Cc Ben Dooks <[email protected]>Cc Kukjin Kim <[email protected]>Cc Mark Brown <[email protected]>Cc Kyungmin Park <[email protected]>Cc Maxime Ripard <[email protected]>Cc linux-samsung-soc at vger.kernel.orgCc patches at opensource.wolfsonmicro.com
PATCH v4 14/19 ARM: remove unneeded vic.h includes
In reply to Rob HerringLe 03/01/2013 18:54, Rob Herring a ?crit :
arch/arm/mach-sunxi/sunxi.c line 26
Quoted 12 lines
arch/arm/mach-sunxi/sunxi.c +0
-1@@ -21,7 +21,6 @@#include <linux/irqchip/sunxi.h> -#include <asm/hardware/vic.h> #include <asm/mach/arch.h> #include <asm/mach/map.h>
Just a little nitpick, could you remove the extra line as well?
Other than that, for sunxi,
Signature · 4 lines
Maxime Ripard, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com
PATCH v4 14/19 ARM: remove unneeded vic.h includes
In reply to Rob HerringQuoted 3 lines · Rob Herring
From: Rob Herring <[email protected]>
Numerous includes of
asm/hardware/vic.haren't needed, so remove them.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20130104/a8ff16be/attachment.sig>
PATCH v4 14/19 ARM: remove unneeded vic.h includes
In reply to Rob HerringQuoted 3 lines · Rob Herring
From: Rob Herring <[email protected]>
Numerous includes of
asm/hardware/vic.haren't needed, so remove them.
Yours,
Linus Walleij
PATCH v4 15/19 ARM: samsung: remove unused tick.h
In reply to Rob HerringFrom: Rob Herring <[email protected]>
Remove tick.h on s5p64x0 and s5pv210 as they are unused.
--- arch/arm/mach-s5pv210/include/mach/tick.h | 26 -------------------------- arch/arm/plat-samsung/s5p-irq-eint.c | 1 + 2 files changed, 1 insertion(+), 26 deletions(-) delete mode 100644 arch/arm/mach-s5pv210/include/mach/tick.h
arch/arm/mach-s5pv210/include/mach/tick.h deleted +0 -26
@@ -1,26 +0,0 @@ -/* linux/arch/arm/mach-s5pv210/include/mach/tick.h -* -* Copyright (c) 2009 Samsung Electronics Co., Ltd. -* http://www.samsung.com/ -* -* Based on arch/arm/mach-s3c6400/include/mach/tick.h -* -* S5PV210 - Timer tick support definitions -* -* This program is free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License version 2 as -* published by the Free Software Foundation. -*/ - -#ifndef __ASM_ARCH_TICK_H -#define __ASM_ARCH_TICK_H __FILE__ - -static inline u32 s3c24xx_ostimer_pending (void ) -{ -u32 pend =__raw_readl (VA_VIC0 +VIC_RAW_STATUS ); -return pend & (1 << (IRQ_TIMER4_VIC -S5P_IRQ_VIC0 (0 ))); -} - -#define TICK_MAX (0xffffffff) - -#endif /* __ASM_ARCH_TICK_H */
arch/arm/plat-samsung/s5p-irq-eint.c +1 -0
@@ -15,6 +15,7 @@#include <linux/io.h> #include <linux/device.h> #include <linux/gpio.h> +#include <linux/irqchip/arm-vic.h> #include <asm/hardware/vic.h>
Signature · 1 line
1.7.10.4
Arnd Bergmann
maintainerPATCH v4 15/19 ARM: samsung: remove unused tick.h
Quoted 8 lines · Rob Herring
From: Rob Herring <[email protected]>
Remove
tick.hon s5p64x0 and s5pv210 as they are unused.Signed-off-by Rob Herring <[email protected]>Cc Ben Dooks <[email protected]>Cc Kukjin Kim <[email protected]>Cc linux-samsung-soc at vger.kernel.org
Quoted 5 lines
--- arch/arm/mach-s5pv210/include/mach/tick.h | 26 -------------------------- arch/arm/plat-samsung/s5p-irq-eint.c | 1 + 2 files changed, 1 insertion(+), 26 deletions(-) delete mode 100644 arch/arm/mach-s5pv210/include/mach/tick.h
The second half of the patch does not relate to the description, and the first half looks correct but out of place here.
Did you accidentally fold another patch into the one you wanted, or am I just misreading the intention of the patch?
Arnd
PATCH v4 15/19 ARM: samsung: remove unused tick.h
Quoted 15 lines · Arnd Bergmann
Quoted 8 lines · Rob Herring
From: Rob Herring <[email protected]>
Remove
tick.hon s5p64x0 and s5pv210 as they are unused.Signed-off-by Rob Herring <[email protected]>Cc Ben Dooks <[email protected]>Cc Kukjin Kim <[email protected]>Cc linux-samsung-soc at vger.kernel.orgQuoted 5 lines
--- arch/arm/mach-s5pv210/include/mach/tick.h | 26 -------------------------- arch/arm/plat-samsung/s5p-irq-eint.c | 1 + 2 files changed, 1 insertion(+), 26 deletions(-) delete mode 100644 arch/arm/mach-s5pv210/include/mach/tick.h
Quoted 2 lines
The second half of the patch does not relate to the description, and the first half looks correct but out of place here.
The first half is relevant in that it eliminates an occurrence of VIC defines, but could be applied separately. I'm not sure what happened with mach-s5p64x0/include/mach/tick.h as that should be removed too.
The second half should be in patch 19.
Rob
Quoted 5 lines
Did you accidentally fold another patch into the one you wanted, or am I just misreading the intention of the patch?
Arnd
Arnd Bergmann
maintainerPATCH v4 15/19 ARM: samsung: remove unused tick.h
Quoted 3 lines · Rob Herring
The first half is relevant in that it eliminates an occurrence of VIC defines, but could be applied separately. I'm not sure what happened with
mach-s5p64x0/include/mach/tick.has that should be removed too.
Ok, I see.
Arnd
PATCH v4 16/19 irqchip: Move ARM VIC to drivers/irqchip
In reply to Rob HerringFrom: Rob Herring <[email protected]>
Now that we have drivers/irqchip, move VIC irqchip to drivers/irqchip.
--- arch/arm/common/Kconfig | 15 --------------- arch/arm/common/Makefile | 1 - drivers/irqchip/Kconfig | 15 +++++++++++++++ drivers/irqchip/Makefile | 1 + arch/arm/common/vic.c => drivers/irqchip/irq-vic.c | 5 +++++ 5 files changed, 21 insertions(+), 16 deletions(-) rename arch/arm/common/vic.c => drivers/irqchip/irq-vic.c (98%)
arch/arm/common/Kconfig +0 -15
@@ -1,18 +1,3 @@ -config ARM_VIC - bool - select IRQ_DOMAIN - select MULTI_IRQ_HANDLER - -config ARM_VIC_NR - int - default 4 if ARCH_S5PV210 - default 3 if ARCH_S5PC100 - default 2 - depends on ARM_VIC - help - The maximum number of VICs available in the system, for - power management. - config ICST bool
arch/arm/common/Makefile +0 -1
@@ -2,7 +2,6 @@ # Makefile for the linux kernel. # -obj-$(CONFIG_ARM_VIC) += vic.o obj-$(CONFIG_ICST) += icst.o obj-$(CONFIG_SA1111) += sa1111.o obj-$(CONFIG_PCI_HOST_VIA82C505) += via82c505.o
drivers/irqchip/Kconfig +15 -0
@@ -10,6 +10,21 @@ config ARM_GIC config GIC_NON_BANKED bool +config ARM_VIC + bool + select IRQ_DOMAIN + select MULTI_IRQ_HANDLER + +config ARM_VIC_NR + int + default 4 if ARCH_S5PV210 + default 3 if ARCH_S5PC100 + default 2 + depends on ARM_VIC + help + The maximum number of VICs available in the system, for + power management. + config VERSATILE_FPGA_IRQ bool select IRQ_DOMAIN
drivers/irqchip/Makefile +1 -0
@@ -4,4 +4,5 @@ obj-$(CONFIG_ARCH_BCM2835) += irq-bcm2835.o obj-$(CONFIG_ARCH_SUNXI) += irq-sunxi.o obj-$(CONFIG_ARCH_SPEAR3XX) += spear-shirq.o obj-$(CONFIG_ARM_GIC) += irq-gic.o +obj-$(CONFIG_ARM_VIC) += irq-vic.o obj-$(CONFIG_VERSATILE_FPGA_IRQ) += irq-versatile-fpga.o
drivers/irqchip/irq-vic.c renamed from arch/arm/common/vic.c +5 -0
@@ -35,6 +35,8 @@#include <asm/mach/irq.h> #include <asm/hardware/vic.h> +#include "irqchip.h" +#define VIC_IRQ_STATUS 0x00#define VIC_FIQ_STATUS 0x04#define VIC_INT_SELECT 0x0c/* 1 = FIQ, 0 = IRQ */
@@ -442,6 +444,9 @@ int __init vic_of_init(struct device_node *node, struct device_node *parent) return 0; } +IRQCHIP_DECLARE (arm_pl190_vic,"arm,pl190-vic" , vic_of_init); +IRQCHIP_DECLARE (arm_pl192_vic,"arm,pl192-vic" , vic_of_init); +IRQCHIP_DECLARE (arm_versatile_vic,"arm,versatile-vic" , vic_of_init);#endif /* CONFIG OF */ /*
Signature · 1 line
1.7.10.4
PATCH v4 17/19 ARM: spear: use common irqchip_init function
In reply to Rob HerringFrom: Rob Herring <[email protected]>
Convert spear DT irq initialization over to use common irqchip_init function.
--- arch/arm/mach-spear3xx/include/mach/generic.h | 1 - arch/arm/mach-spear3xx/spear300.c | 3 ++- arch/arm/mach-spear3xx/spear310.c | 3 ++- arch/arm/mach-spear3xx/spear320.c | 3 ++- arch/arm/mach-spear3xx/spear3xx.c | 16 ---------------- arch/arm/mach-spear6xx/spear6xx.c | 15 ++------------- drivers/irqchip/spear-shirq.c | 3 +++ 7 files changed, 11 insertions(+), 33 deletions(-)
arch/arm/mach-spear3xx/include/mach/generic.h +0 -1
@@ -30,7 +30,6 @@ extern struct pl08x_platform_data pl080_plat_data;void __init spear_setup_of_timer (void );void __init spear3xx_clk_init (void );void __init spear3xx_map_io (void ); -void __init spear3xx_dt_init_irq (void );void spear_restart (char ,const char *);
arch/arm/mach-spear3xx/spear300.c +2 -1
@@ -14,6 +14,7 @@#define pr_fmt (fmt) "SPEAr300: " fmt#include <linux/amba/pl08x.h> +#include <linux/irqchip.h> #include <linux/of_platform.h> #include <asm/mach/arch.h> #include <mach/generic.h>
@@ -211,7 +212,7 @@ static void __init spear300_map_io(void)DT_MACHINE_START (SPEAR300_DT ,"ST SPEAr300 SoC with Flattened Device Tree" ) .map_io = spear300_map_io, - .init_irq = spear3xx_dt_init_irq, + .init_irq = irqchip_init, .timer = &spear3xx_timer, .init_machine = spear300_dt_init, .restart = spear_restart,
arch/arm/mach-spear3xx/spear310.c +2 -1
@@ -15,6 +15,7 @@#include <linux/amba/pl08x.h> #include <linux/amba/serial.h> +#include <linux/irqchip.h> #include <linux/of_platform.h> #include <asm/mach/arch.h> #include <mach/generic.h>
@@ -253,7 +254,7 @@ static void __init spear310_map_io(void)DT_MACHINE_START (SPEAR310_DT ,"ST SPEAr310 SoC with Flattened Device Tree" ) .map_io = spear310_map_io, - .init_irq = spear3xx_dt_init_irq, + .init_irq = irqchip_init, .timer = &spear3xx_timer, .init_machine = spear310_dt_init, .restart = spear_restart,
arch/arm/mach-spear3xx/spear320.c +2 -1
@@ -16,6 +16,7 @@#include <linux/amba/pl022.h> #include <linux/amba/pl08x.h> #include <linux/amba/serial.h> +#include <linux/irqchip.h> #include <linux/of_platform.h> #include <asm/mach/arch.h> #include <mach/generic.h>
@@ -267,7 +268,7 @@ static void __init spear320_map_io(void)DT_MACHINE_START (SPEAR320_DT ,"ST SPEAr320 SoC with Flattened Device Tree" ) .map_io = spear320_map_io, - .init_irq = spear3xx_dt_init_irq, + .init_irq = irqchip_init, .timer = &spear3xx_timer, .init_machine = spear320_dt_init, .restart = spear_restart,
arch/arm/mach-spear3xx/spear3xx.c +0 -16
@@ -15,11 +15,8 @@#include <linux/amba/pl022.h> #include <linux/amba/pl08x.h> -#include <linux/irqchip/spear-shirq.h> -#include <linux/of_irq.h> #include <linux/io.h> #include <asm/hardware/pl080.h> -#include <asm/hardware/vic.h> #include <plat/pl080.h> #include <mach/generic.h> #include <mach/spear.h>
@@ -119,16 +116,3 @@ static void __init spear3xx_timer_init(void)struct sys_timer spear3xx_timer = { .init = spear3xx_timer_init, }; - -static const struct of_device_id vic_of_match[]__initconst = { - { .compatible ="arm,pl190-vic" , .data = vic_of_init, }, - { .compatible ="st,spear300-shirq" , .data = spear300_shirq_of_init, }, - { .compatible ="st,spear310-shirq" , .data = spear310_shirq_of_init, }, - { .compatible ="st,spear320-shirq" , .data = spear320_shirq_of_init, }, - {/* Sentinel */ } -}; - -void __init spear3xx_dt_init_irq (void ) -{ -of_irq_init (vic_of_match); -}
arch/arm/mach-spear6xx/spear6xx.c +2 -13
@@ -16,12 +16,11 @@#include <linux/amba/pl08x.h> #include <linux/clk.h> #include <linux/err.h> +#include <linux/irqchip.h> #include <linux/of.h> #include <linux/of_address.h> -#include <linux/of_irq.h> #include <linux/of_platform.h> #include <asm/hardware/pl080.h> -#include <asm/hardware/vic.h> #include <asm/mach/arch.h> #include <asm/mach/time.h> #include <asm/mach/map.h>
@@ -425,19 +424,9 @@ static const char *spear600_dt_board_compat[] = {NULL }; -static const struct of_device_id vic_of_match[]__initconst = { - { .compatible ="arm,pl190-vic" , .data = vic_of_init, }, - {/* Sentinel */ } -}; - -static void __init spear6xx_dt_init_irq (void ) -{ -of_irq_init (vic_of_match); -} -DT_MACHINE_START (SPEAR600_DT ,"ST SPEAr600 (Flattened Device Tree)" ) .map_io = spear6xx_map_io, - .init_irq = spear6xx_dt_init_irq, + .init_irq = irqchip_init, .timer = &spear6xx_timer, .init_machine = spear600_dt_init, .restart = spear_restart,
drivers/irqchip/spear-shirq.c +3 -0
@@ -300,6 +300,7 @@ int __init spear300_shirq_of_init(struct device_node *np,return shirq_init (spear300_shirq_blocks,ARRAY_SIZE (spear300_shirq_blocks), np); } +IRQCHIP_DECLARE (spear300_shirq,"st,spear300-shirq" , spear300_shirq_of_init);int __init spear310_shirq_of_init (struct device_node *np,struct device_node *parent)
@@ -307,6 +308,7 @@ int __init spear310_shirq_of_init(struct device_node *np,return shirq_init (spear310_shirq_blocks,ARRAY_SIZE (spear310_shirq_blocks), np); } +IRQCHIP_DECLARE (spear310_shirq,"st,spear310-shirq" , spear310_shirq_of_init);int __init spear320_shirq_of_init (struct device_node *np,struct device_node *parent)
@@ -314,3 +316,4 @@ int __init spear320_shirq_of_init(struct device_node *np,return shirq_init (spear320_shirq_blocks,ARRAY_SIZE (spear320_shirq_blocks), np); } +IRQCHIP_DECLARE (spear320_shirq,"st,spear320-shirq" , spear320_shirq_of_init);
Signature · 1 line
1.7.10.4
PATCH v4 18/19 ARM: picoxcell: use common irqchip_init function
In reply to Rob HerringFrom: Rob Herring <[email protected]>
--- arch/arm/mach-picoxcell/common.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-)
arch/arm/mach-picoxcell/common.c +2 -12
@@ -9,6 +9,7 @@*/ #include <linux/delay.h> #include <linux/irq.h> +#include <linux/irqchip.h> #include <linux/irqdomain.h> #include <linux/of.h> #include <linux/of_address.h>
@@ -17,7 +18,6 @@#include <linux/dw_apb_timer.h> #include <asm/mach/arch.h> -#include <asm/hardware/vic.h> #include <asm/mach/map.h> #include "common.h"
@@ -70,16 +70,6 @@ static const char *picoxcell_dt_match[] = { NULL }; -static const struct of_device_id vic_of_match[]__initconst = { - { .compatible ="arm,pl192-vic" , .data = vic_of_init, }, - {/* Sentinel */ } -}; - -static void __init picoxcell_init_irq (void ) -{ -of_irq_init (vic_of_match); -} -static void picoxcell_wdt_restart (char mode,const char *cmd) {/*
@@ -97,7 +87,7 @@ static void picoxcell_wdt_restart(char mode, const char *cmd)DT_MACHINE_START (PICOXCELL ,"Picochip picoXcell" ) .map_io = picoxcell_map_io, .nr_irqs = NR_IRQS_LEGACY, - .init_irq = picoxcell_init_irq, + .init_irq = irqchip_init, .timer = &dw_apb_timer, .init_machine = picoxcell_init_machine, .dt_compat = picoxcell_dt_match,
Signature · 1 line
1.7.10.4
PATCH v4 18/19 ARM: picoxcell: use common irqchip_init function
Hi Rob,
Looks good!
Quoted 4 lines · Rob Herring
From: Rob Herring <[email protected]>
Signed-off-by Rob Herring <[email protected]>Cc Jamie Iles <[email protected]>
Thanks!
PATCH v4 19/19 irqchip: Move ARM vic.h to include/linux/irqchip/arm-vic.h
In reply to Rob HerringFrom: Rob Herring <[email protected]>
Now that we have VIC moved to drivers/irqchip and all VIC DT init for platforms using irqchip_init, move gic.h and update the remaining includes.
--- arch/arm/mach-ep93xx/core.c | 3 +-- arch/arm/mach-netx/generic.c | 2 +- arch/arm/mach-nomadik/cpu-8815.c | 2 +- arch/arm/mach-s3c64xx/common.c | 2 +- arch/arm/mach-s3c64xx/include/mach/regs-irq.h | 1 - arch/arm/mach-s3c64xx/include/mach/tick.h | 2 ++ arch/arm/mach-s5p64x0/include/mach/regs-irq.h | 1 - arch/arm/mach-s5pc100/include/mach/regs-irq.h | 1 - arch/arm/mach-s5pc100/include/mach/tick.h | 2 ++ arch/arm/mach-u300/core.c | 2 +- arch/arm/mach-versatile/core.c | 2 +- arch/arm/plat-samsung/s5p-irq-eint.c | 2 -- arch/arm/plat-samsung/s5p-irq.c | 3 +-- drivers/irqchip/irq-vic.c | 2 +- .../include/asm/hardware/vic.h => include/linux/irqchip/arm-vic.h | 1 - 15 files changed, 12 insertions(+), 16 deletions(-) rename arch/arm/include/asm/hardware/vic.h => include/linux/irqchip/arm-vic.h (94%)
arch/arm/mach-ep93xx/core.c +1 -2
@@ -34,6 +34,7 @@#include <linux/i2c-gpio.h> #include <linux/spi/spi.h> #include <linux/export.h> +#include <linux/irqchip/arm-vic.h> #include <mach/hardware.h> #include <linux/platform_data/video-ep93xx.h>
@@ -44,8 +45,6 @@#include <asm/mach/map.h> #include <asm/mach/time.h> -#include <asm/hardware/vic.h> -#include "soc.h" /*************************************************************************
arch/arm/mach-netx/generic.c +1 -1
@@ -23,9 +23,9 @@#include <linux/module.h> #include <linux/platform_device.h> #include <linux/io.h> +#include <linux/irqchip/arm-vic.h> #include <mach/hardware.h> #include <asm/mach/map.h> -#include <asm/hardware/vic.h> #include <mach/netx-regs.h> #include <asm/mach/irq.h>
arch/arm/mach-nomadik/cpu-8815.c +1 -1
@@ -25,13 +25,13 @@#include <linux/slab.h> #include <linux/irq.h> #include <linux/dma-mapping.h> +#include <linux/irqchip/arm-vic.h> #include <linux/platform_data/clk-nomadik.h> #include <linux/platform_data/pinctrl-nomadik.h> #include <mach/hardware.h> #include <mach/irqs.h> #include <asm/mach/map.h> -#include <asm/hardware/vic.h> #include <asm/cacheflush.h> #include <asm/hardware/cache-l2x0.h>
arch/arm/mach-s3c64xx/common.c +1 -1
@@ -25,10 +25,10 @@#include <linux/dma-mapping.h> #include <linux/irq.h> #include <linux/gpio.h> +#include <linux/irqchip/arm-vic.h> #include <asm/mach/arch.h> #include <asm/mach/map.h> -#include <asm/hardware/vic.h> #include <asm/system_misc.h> #include <mach/map.h>
arch/arm/mach-s3c64xx/include/mach/regs-irq.h +0 -1
@@ -15,6 +15,5 @@#ifndef __ASM_ARCH_REGS_IRQ_H#define __ASM_ARCH_REGS_IRQ_H __FILE__ -#include <asm/hardware/vic.h> #endif /* __ASM_ARCH_6400_REGS_IRQ_H */
arch/arm/mach-s3c64xx/include/mach/tick.h +2 -0
@@ -15,6 +15,8 @@#ifndef __ASM_ARCH_TICK_H#define __ASM_ARCH_TICK_H __FILE__ +#include <linux/irqchip/arm-vic.h> +/* note, the timer interrutps turn up in 2 places, the vic and then * the timer block. We take the VIC as the base at the moment. */
arch/arm/mach-s5p64x0/include/mach/regs-irq.h +0 -1
@@ -13,7 +13,6 @@#ifndef __ASM_ARCH_REGS_IRQ_H#define __ASM_ARCH_REGS_IRQ_H __FILE__ -#include <asm/hardware/vic.h> #include <mach/map.h> #endif /* __ASM_ARCH_REGS_IRQ_H */
arch/arm/mach-s5pc100/include/mach/regs-irq.h +0 -1
@@ -14,6 +14,5 @@#define __ASM_ARCH_REGS_IRQ_H __FILE__#include <mach/map.h> -#include <asm/hardware/vic.h> #endif /* __ASM_ARCH_REGS_IRQ_H */
arch/arm/mach-s5pc100/include/mach/tick.h +2 -0
@@ -15,6 +15,8 @@#ifndef __ASM_ARCH_TICK_H#define __ASM_ARCH_TICK_H __FILE__ +#include <linux/irqchip/arm-vic.h> +/* note, the timer interrutps turn up in 2 places, the vic and then * the timer block. We take the VIC as the base at the moment. */
arch/arm/mach-u300/core.c +1 -1
@@ -31,11 +31,11 @@#include <linux/dma-mapping.h> #include <linux/platform_data/clk-u300.h> #include <linux/platform_data/pinctrl-coh901.h> +#include <linux/irqchip/arm-vic.h> #include <asm/types.h> #include <asm/setup.h> #include <asm/memory.h> -#include <asm/hardware/vic.h> #include <asm/mach/map.h> #include <asm/mach-types.h> #include <asm/mach/arch.h>
arch/arm/mach-versatile/core.c +1 -1
@@ -32,6 +32,7 @@#include <linux/amba/mmci.h> #include <linux/amba/pl022.h> #include <linux/io.h> +#include <linux/irqchip/arm-vic.h> #include <linux/irqchip/versatile-fpga.h> #include <linux/gfp.h> #include <linux/clkdev.h>
@@ -40,7 +41,6 @@#include <asm/irq.h> #include <asm/hardware/arm_timer.h> #include <asm/hardware/icst.h> -#include <asm/hardware/vic.h> #include <asm/mach-types.h> #include <asm/mach/arch.h>
arch/arm/plat-samsung/s5p-irq-eint.c +0 -2
@@ -17,8 +17,6 @@#include <linux/gpio.h> #include <linux/irqchip/arm-vic.h> -#include <asm/hardware/vic.h> -#include <plat/regs-irqtype.h> #include <mach/map.h>
arch/arm/plat-samsung/s5p-irq.c +1 -2
@@ -13,8 +13,7 @@#include <linux/interrupt.h> #include <linux/irq.h> #include <linux/io.h> - -#include <asm/hardware/vic.h> +#include <linux/irqchip/arm-vic.h> #include <mach/map.h> #include <plat/regs-timer.h>
drivers/irqchip/irq-vic.c +1 -1
@@ -30,10 +30,10 @@#include <linux/syscore_ops.h> #include <linux/device.h> #include <linux/amba/bus.h> +#include <linux/irqchip/arm-vic.h> #include <asm/exception.h> #include <asm/mach/irq.h> -#include <asm/hardware/vic.h> #include "irqchip.h"
include/linux/irqchip/arm-vic.h renamed from arch/arm/include/asm/hardware/vic.h +0 -1
@@ -32,6 +32,5 @@ struct pt_regs;void __vic_init (void __iomem *base,int irq_start,u32 vic_sources,u32 resume_sources,struct device_node *node);void vic_init (void __iomem *base,unsigned int irq_start,u32 vic_sources,u32 resume_sources); -int vic_of_init (struct device_node *node,struct device_node *parent);#endif
Signature · 1 line
1.7.10.4
PATCH v4 19/19 irqchip: Move ARM vic.h to include/linux/irqchip/arm-vic.h
Quoted 17 lines · Rob Herring
From: Rob Herring <[email protected]>
Now that we have VIC moved to
drivers/irqchipand all VIC DT init for platforms usingirqchip_init, movegic.hand update the remaining includes.Signed-off-by Rob Herring <[email protected]>Cc Thomas Gleixner <[email protected]>Cc Hartley Sweeten <[email protected]>Cc Ryan Mallon <[email protected]>Cc Russell King <[email protected]>Cc Alessandro Rubini <[email protected]>Cc Linus Walleij <[email protected]>Cc STEricsson <[email protected]>Cc Ben Dooks <[email protected]>Cc Kukjin Kim <[email protected]>Cc linux-samsung-soc at vger.kernel.org
Quoted 2 lines
--- arch/arm/mach-ep93xx/core.c | 3 +--
For ep93xx:
PATCH v4 19/19 irqchip: Move ARM vic.h to include/linux/irqchip/arm-vic.h
In reply to Rob HerringQuoted 5 lines · Rob Herring
From: Rob Herring <[email protected]>
Now that we have VIC moved to
drivers/irqchipand all VIC DT init for platforms usingirqchip_init, movegic.hand update the remaining includes.
This will need to be rebased on fixes merged for -rc3.
Apart from that, Acked-by: Linus Walleij <[email protected]>
Yours,
Linus Walleij