Skip to contentSkip to conversation

Move GIC and VIC to drivers/irqchip

PATCH New Rob Herring 14 participants 57 messages Jan 3, 2013 – Feb 12, 2013

Subsystems (22)
lore
Share & tools
lore
#0 lore raw

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
#1 lore raw

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
index 62ca575..93dfd8f 100644
@@ -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
index bf4609a..29b78c9 100644
@@ -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
new file mode 100644
index 0000000..f496afc
@@ -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
new file mode 100644
index 0000000..e445ba2
@@ -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
index d1ea7ce..c80c599 100644
@@ -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
new file mode 100644
index 0000000..e0006f1
@@ -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
maintainer
#2 lore raw

PATCH 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 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

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.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.

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

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.

#3 lore raw

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 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

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.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.

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
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.

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

#4 lore raw

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
#5 lore raw

PATCH v4 2/19 arm: add set_handle_irq() to register the parent IRQ controller handler function

In reply to Rob Herring

From: 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.

[Rob Herring: remove warning. 1st one to initialize wins.]
---
 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
index 15cb035..18c8830 100644
@@ -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
index 8961650..8e4ef4c 100644
@@ -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
#6 lore raw

PATCH v4 3/19 ARM: mach-ux500: use SGI0 to wake up the other core

In reply to Rob Herring

From: 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
index 3db7782..79531f1 100644
@@ -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
#7 lore raw

PATCH v4 4/19 ARM: GIC: remove assembly ifdefs from gic.h

In reply to Rob Herring

From: 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
index 4b1ce6c..fc59698 100644
@@ -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
#8 lore raw

PATCH v4 5/19 ARM: GIC: remove direct use of gic_raise_softirq

In reply to Rob Herring

From: 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.

Cc Russell King <[email protected]>
Cc Kukjin Kim <[email protected]>
Cc Sascha Hauer <[email protected]>
Cc David Brown <[email protected]>
Cc Daniel Walker <[email protected]>
Cc Bryan Huntsman <[email protected]>
Cc Paul Mundt <[email protected]>
Cc Magnus Damm <[email protected]>
Cc Shiraz Hashim <[email protected]>
Cc Stephen Warren <[email protected]>
Cc Srinidhi Kasagar <[email protected]>
Cc Linus Walleij <[email protected]>
---
 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
index 36ae03a..788658c 100644
@@ -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
index fc59698..cfd3a7e 100644
@@ -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
index 84f4cbf..3fc96db 100644
@@ -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
index c5c840e..5898f82 100644
@@ -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
index 1129957..f305c91 100644
@@ -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
index 3777b80..8e72057 100644
@@ -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
index 7ed69b69..e27e57b 100644
@@ -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
index cd42d92..668172a 100644
@@ -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
index 300f706..98e3052 100644
@@ -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
index ed8d235..d393c52 100644
@@ -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
index f674562..6262d67 100644
@@ -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
index 68dd1b6..98a2220 100644
@@ -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
index 2eaa3fa..27e3f69 100644
@@ -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
index 1b926df..d8e6754 100644
@@ -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
index 79531f1..fa07d4d 100644
@@ -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
index 60838dd..0ad050f 100644
@@ -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
index c5d70de..3bc0e38 100644
@@ -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
index 04ca493..2336024 100644
@@ -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
#9 lore raw

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 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.

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?

maintainer
#10 lore raw

PATCH 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 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.

Quoted 5 lines

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?

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
index 4e2a1f6..a828240 100644
@@ -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]>
#11 lore raw

PATCH v4 6/19 ARM: GIC: set handle_arch_irq in GIC initialization

In reply to Rob Herring

From: 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
index 788658c..4b4ccf3 100644
@@ -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
#12 lore raw

PATCH v4 7/19 ARM: remove mach .handle_irq for GIC users

In reply to Rob Herring

From: Rob Herring <[email protected]>

Now that the GIC initialization sets up the handle_arch_irq pointer, we can remove it for all machines.

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]>
Cc Shiraz Hashim <[email protected]>
Cc Stephen Warren <[email protected]>
Cc Srinidhi Kasagar <[email protected]>
Cc Linus Walleij <[email protected]>
---
 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
index 4b4ccf3..90eebfea 100644
@@ -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
index cfd3a7e..2a16e03 100644
@@ -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
index 49f335d..dc9bb01 100644
@@ -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
index 3a62f1b..6ad83d7 100644
@@ -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
index ae30539..26f36d7 100644
@@ -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
index b938f9f..a11a36f 100644
@@ -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
index 92757ff..34c45b6 100644
@@ -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
index e99d3d8..3a3bee4 100644
@@ -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
index 27d4ed8..55f8183 100644
@@ -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
index 5e34b9c..45cda36 100644
@@ -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
index ae6da40..d5dbd51 100644
@@ -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
index 35548e3..b095964 100644
@@ -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
index 9e3340f..be37775 100644
@@ -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
index 57668eb..baefe9b 100644
@@ -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
index dc24816..d48331c 100644
@@ -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
index 7191ab4..b0164da 100644
@@ -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_irq
 
 extern 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
index 4eb1b3a..1fbf9a1 100644
@@ -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
index b5b4de2..bd4062f9 100644
@@ -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
index 4490edb..f45e985 100644
@@ -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
index 476549a..4330285 100644
@@ -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
index 1cc6696..3de62a9 100644
@@ -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
index 53cb380b..73be868 100644
@@ -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
index 5c8e9ce..4df66c9 100644
@@ -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
index 6824674..1d5ee5c 100644
@@ -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
index 28511d4..3a73758 100644
@@ -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
index 07d6672..afa967b 100644
@@ -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
index 7ed53d7..d8a25b4 100644
@@ -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
index 9992431..5391d0a 100644
@@ -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
index 4f486f0..bfb834b 100644
@@ -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
index 032d108..81b31f5 100644
@@ -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
index bf88f9a..2df8e60 100644
@@ -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
index b52bc0d..f3f180d 100644
@@ -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
index c02448d..d160758 100644
@@ -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
index 449f928..fad8db1 100644
@@ -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
index d393c52..1f958d7 100644
@@ -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
index a47beeb..4a8cb69 100644
@@ -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
index 6732924..6a613b7 100644
@@ -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
index 02f4724..295bb04 100644
@@ -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
index 081014f..c3a7702 100644
@@ -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
index 734d9cc..04008c8 100644
@@ -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
index 6497d12..672db8a 100644
@@ -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
index d453522..af406c7 100644
@@ -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
index db0bb75..cc0fa09 100644
@@ -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
index 3bc0e38..dc1ace5 100644
@@ -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
index 011661a..557d361 100644
@@ -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
index e16d4be..40f46ae 100644
@@ -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
maintainer
#13 lore raw

PATCH 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_irq pointer, we can remove it for all machines.

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
maintainer
#14 lore raw

PATCH v4 7/19 ARM: remove mach .handle_irq for GIC users

In reply to Rob Herring
Quoted 17 lines · Rob Herring

From: Rob Herring <[email protected]>

Now that the GIC initialization sets up the handle_arch_irq pointer, we can remove it for all machines.

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

Just got around boot testing this, if not too late:

#15 lore raw

PATCH v4 7/19 ARM: remove mach .handle_irq for GIC users

In reply to Rob Herring

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".

#16 lore raw

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

#17 lore raw

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.

maintainer
#18 lore raw

PATCH 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 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.

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

#19 lore raw

PATCH v4 8/19 irqchip: Move ARM GIC to drivers/irqchip

In reply to Rob Herring

From: 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.

Cc Russell King <[email protected]>
Cc Thomas Gleixner <[email protected]>
---
 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
index 45ceeb0..7bf52b2 100644
@@ -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
index e8a4e58..4104b82 100644
@@ -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
index 93dfd8f..98f30b0 100644
@@ -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
index 29b78c9..f2a9a07 100644
@@ -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
similarity index 98%
rename from arch/arm/common/gic.c
rename to drivers/irqchip/irq-gic.c
index 90eebfea..dc511a4 100644
@@ -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
#20 lore raw

PATCH v4 9/19 ARM: use common irqchip_init for GIC init

In reply to Rob Herring

From: Rob Herring <[email protected]>

Convert all GIC DT initialization over to use common irqchip_init function.

Cc Russell King <[email protected]>
Cc Kukjin Kim <[email protected]>
Cc Shawn Guo <[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]>
Cc Viresh Kumar <[email protected]>
Cc Shiraz Hashim <[email protected]>
Cc Stephen Warren <[email protected]>
Cc Srinidhi Kasagar <[email protected]>
Cc Linus Walleij <[email protected]>
---
 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
index 2a16e03..5c14398 100644
@@ -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
index 6ad83d7..5c920bd 100644
@@ -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
index d6d0dc6..70de42e 100644
@@ -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
index d48331c..4168247 100644
@@ -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
index 1fbf9a1..724bfeb 100644
@@ -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
index bd4062f9..c111cec 100644
@@ -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
index f45e985..fad0e50 100644
@@ -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
index 6897ae2..addd161 100644
@@ -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
index 4a8cb69..5004034 100644
@@ -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
index 6a613b7..7d55feb 100644
@@ -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
index c33f4d9..510dec7 100644
@@ -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
index 295bb04..5de3e6f 100644
@@ -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
index c3a7702..18331de 100644
@@ -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
index c4af775..22e3cd5 100644
@@ -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
index d54cfc5..3599959 100644
@@ -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
index 721e7b4..a5931f7 100644
@@ -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
index 557d361..82be02b 100644
@@ -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
index 40f46ae..2d96745 100644
@@ -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
maintainer
#21 lore raw

PATCH 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

#22 lore raw

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_init only 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

#23 lore raw

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_init only 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/irqchip as 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

#24 lore raw

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_init only 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/irqchip as 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

#26 lore raw

PATCH v4 10/19 irqchip: Move ARM gic.h to include/linux/irqchip/arm-gic.h

In reply to Rob Herring

From: 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.

Cc Thomas Gleixner <[email protected]>
Cc Russell King <[email protected]>
Cc Anton Vorontsov <[email protected]>
Cc Kukjin Kim <[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 Viresh Kumar <[email protected]>
Cc Shiraz Hashim <[email protected]>
Cc Stephen Warren <[email protected]>
Cc Srinidhi Kasagar <[email protected]>
Cc Linus Walleij <[email protected]>
Cc Samuel Ortiz <[email protected]>
---
 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
index 031805b..db3806c 100644
@@ -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
index 70de42e..d291811 100644
@@ -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
index 9c7b4bf..f2b5050 100644
@@ -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
index 5898f82..60f7c5b 100644
@@ -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
index f305c91..2024f95 100644
@@ -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
index e1537f9..ff24920 100644
@@ -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
index 8e72057..d356931 100644
@@ -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
index e27e57b..42932865 100644
@@ -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
index 3de62a9..cb43253 100644
@@ -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
index 4df66c9..37495bc 100644
@@ -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
index 668172a..3616779 100644
@@ -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
index 5d3b4f4..8c5b5e3 100644
@@ -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
index addd161..5470948 100644
@@ -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
index 3a73758..728587c 100644
@@ -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
index afa967b..3d116c4 100644
@@ -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
index d8a25b4..e1b8efd 100644
@@ -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
index 5391d0a..0b037f2 100644
@@ -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
index bfb834b..a1f1ef5 100644
@@ -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
index 81b31f5..fd28358 100644
@@ -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
index 2df8e60..a1d315f 100644
@@ -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
index d160758..278c8f2 100644
@@ -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
index ef66f1a..8807c27 100644
@@ -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
index f0c5e51..9783699 100644
@@ -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
index 5004034..646d61b 100644
@@ -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
index 6262d67..953eb1f 100644
@@ -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
index 2ce6af9..3a4acf2 100644
@@ -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
index 624f00f..5c5bcb5 100644
@@ -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
index 98a2220..4e9e69d 100644
@@ -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
index 27e3f69..af4ade6 100644
@@ -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
index b7886f1..2ff2128 100644
@@ -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
index d8e6754..18d7290 100644
@@ -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
index a5931f7..5dd90d3 100644
@@ -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
index fa07d4d..b8adac9 100644
@@ -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
index 0ad050f..6f34497 100644
@@ -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
index 2336024..f2ac155 100644
@@ -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
index dc511a4..69d9a39 100644
@@ -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
index dc8826d..13f4ccf 100644
@@ -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
similarity index 92%
rename from arch/arm/include/asm/hardware/gic.h
rename to include/linux/irqchip/arm-gic.h
index 5c14398..a67ca55 100644
@@ -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
maintainer
#27 lore raw

PATCH 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/irqchip and all GIC DT init for platforms using irqchip_init, move gic.h and 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

#28 lore raw

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/irqchip and all GIC DT init for platforms using irqchip_init, move gic.h and 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

maintainer
#29 lore raw

PATCH 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/irqchip and all GIC DT init for platforms using irqchip_init, move gic.h and 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 needs gic_init. And Russell did not like it being left in arch/arm with the rest moved out.

Ok, makes sense.

Arnd

#30 lore raw

PATCH v4 10/19 irqchip: Move ARM gic.h to include/linux/irqchip/arm-gic.h

In reply to Rob Herring
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/irqchip and all GIC DT init for platforms using irqchip_init, move gic.h and 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
#31 lore raw

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/irqchip and all GIC DT init for platforms using irqchip_init, move gic.h and 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

#32 lore raw

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/irqchip and all GIC DT init for platforms using irqchip_init, move gic.h and 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
#33 lore raw

PATCH v4 10/19 irqchip: Move ARM gic.h to include/linux/irqchip/arm-gic.h

In reply to Arnd Bergmann

Dear 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/irqchip and all GIC DT init for platforms using irqchip_init, move gic.h and 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
#34 lore raw

PATCH v4 11/19 ARM: VIC: shrink down vic.h

In reply to Rob Herring

From: 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
index e4df17c..7431f47 100644
@@ -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
index 2bebad3..a44ef71 100644
@@ -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 r
 int 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
#35 lore raw

PATCH v4 12/19 ARM: VIC: set handle_arch_irq in VIC initialization

In reply to Rob Herring

From: 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
index 7431f47..6894df1 100644
@@ -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
#36 lore raw

PATCH v4 13/19 ARM: remove mach .handle_irq for VIC users

In reply to Rob Herring

From: 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
index 6894df1..d5ee437 100644
@@ -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
index a44ef71..de7aad1 100644
@@ -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
index 41383bf..03f793e 100644
@@ -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
index b8f53d5..4423a1e 100644
@@ -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
index 7fd705b..6df752f 100644
@@ -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
index 3d7cdab..6a66cda 100644
@@ -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
index 0eb3f17..a5dba8f 100644
@@ -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
index 50043ee..6be24c0 100644
@@ -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
index 3c4c233..66703f7 100644
@@ -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
index ba92e25..88303a2 100644
@@ -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
index 8b781ff..fe40c52 100644
@@ -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
index b26dbce..e09d0d4 100644
@@ -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
index 257382e..169172b 100644
@@ -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
index 98167a4..9c15879 100644
@@ -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
index f6c0849..b17401ac 100644
@@ -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
index 99e82ac..94c9e8a 100644
@@ -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
index cdde249..29bfec2 100644
@@ -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
index 2b14489..052c459 100644
@@ -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
index 07c349c..b5635fe 100644
@@ -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
index e5f9a79..08a445c 100644
@@ -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
index 7476f7c..5980c18 100644
@@ -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
index 96d6da2..28f3303 100644
@@ -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
index 7d1167b..2d8a5d5 100644
@@ -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
index a928fae..9de7c26 100644
@@ -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
index 574a9ee..65fea58 100644
@@ -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
index 1af8235..7b752ac 100644
@@ -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
index 62526cc..97585f3 100644
@@ -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
index 9abe95e..99686de 100644
@@ -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
index ee9fa5c..1cba073 100644
@@ -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
index c72b310..8f26d53 100644
@@ -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
index f1f3bd3..7fa0221 100644
@@ -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
index 6bc8404..ebf31ee 100644
@@ -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
index 18785cb..8936018 100644
@@ -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
index a69cbfd..7a11d85 100644
@@ -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
index b963ebb..9719f83 100644
@@ -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
index 66e3a0c..3a22d842 100644
@@ -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
index 5a5a52d..9d81068 100644
@@ -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
index 4ce77cd..a9d3bcf 100644
@@ -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
index 98f6549..886d976 100644
@@ -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
index ae5ad3c..17782cd 100644
@@ -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
index 1973833..4119320 100644
@@ -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
maintainer
#37 lore raw

PATCH 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_irq pointer, we can remove it for all machines and make it static.

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

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

#38 lore raw

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_irq pointer, we can remove it for all machines and make it static.

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
Quoted 1 line

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

#39 lore raw

PATCH v4 13/19 ARM: remove mach .handle_irq for VIC users

In reply to Rob Herring

arch/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.

#40 lore raw

PATCH v4 14/19 ARM: remove unneeded vic.h includes

In reply to Rob Herring

From: Rob Herring <[email protected]>

Numerous includes of asm/hardware/vic.h aren't needed, so remove them.

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.org
Cc patches at opensource.wolfsonmicro.com
---
 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
index 03f793e..19332bf 100644
@@ -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
index 4423a1e..5abf2cb 100644
@@ -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
index 6df752f..2a7375b 100644
@@ -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
index 6a66cda..723c0d3 100644
@@ -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
index a5dba8f..651a7db 100644
@@ -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
index 6be24c0..b4389d3 100644
@@ -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
index 66703f7..1eeee09 100644
@@ -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
index 88303a2..723d048 100644
@@ -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
index fe40c52..04d5e5e 100644
@@ -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
index e09d0d4..cf15bdd 100644
@@ -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
index 169172b..069bd26 100644
@@ -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
index 9c15879..edb3f8a 100644
@@ -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
index 94c9e8a..fa570c2 100644
@@ -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
index 29bfec2..9b6f20c 100644
@@ -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
index 052c459..2c81bf1 100644
@@ -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
index b5635fe..3f1e010 100644
@@ -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
index 08a445c..73caf9f 100644
@@ -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
index 5980c18..4f8129d 100644
@@ -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
index 28f3303..323399b 100644
@@ -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
index 2d8a5d5..9077b85 100644
@@ -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
index 9de7c26..7df76e4 100644
@@ -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
index 65fea58..ad5142a 100644
@@ -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
index 7b752ac..e241929 100644
@@ -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
index 97585f3..9992731 100644
@@ -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
index 99686de..c3f3095 100644
@@ -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
index 5c3b104..d8bc1e6 100644
@@ -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
index 1cba073..45eb0a8 100644
@@ -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
index 8f26d53..9f7f160 100644
@@ -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
index 7fa0221..2f152f9 100644
@@ -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
index ebf31ee..721967b 100644
@@ -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
index 8936018..0ed270f 100644
@@ -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
index 9be910f..b1b5131 100644
@@ -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
index 886d976..ddeec67 100644
@@ -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
index 17782cd..f48f2e4 100644
@@ -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
index 4119320..e52eb23 100644
@@ -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
#41 lore raw

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.h aren't needed, so remove them.

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.org
Cc 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:

maintainer
#42 lore raw

PATCH v4 14/19 ARM: remove unneeded vic.h includes

In reply to Rob Herring
Quoted 4 lines · Rob Herring

From: Rob Herring <[email protected]>

Numerous includes of asm/hardware/vic.h aren't needed, so remove them.

Quoted 15 lines
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.org
Cc patches at opensource.wolfsonmicro.com
#43 lore raw

PATCH v4 14/19 ARM: remove unneeded vic.h includes

In reply to Rob Herring

Le 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
index 9be910f..b1b5131 100644
@@ -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
#44 lore raw

PATCH v4 14/19 ARM: remove unneeded vic.h includes

In reply to Rob Herring
Quoted 3 lines · Rob Herring

From: Rob Herring <[email protected]>

Numerous includes of asm/hardware/vic.h aren'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>

#46 lore raw

PATCH v4 15/19 ARM: samsung: remove unused tick.h

In reply to Rob Herring

From: Rob Herring <[email protected]>

Remove tick.h on s5p64x0 and s5pv210 as they are unused.

Cc Ben Dooks <[email protected]>
Cc Kukjin Kim <[email protected]>
Cc linux-samsung-soc at vger.kernel.org
---
 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
deleted file mode 100644
index 7993b36..0000000
@@ -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
index 33bd3f3..974bf98 100644
@@ -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
maintainer
#47 lore raw

PATCH v4 15/19 ARM: samsung: remove unused tick.h

Quoted 8 lines · Rob Herring

From: Rob Herring <[email protected]>

Remove tick.h on s5p64x0 and s5pv210 as they are unused.

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

#48 lore raw

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.h on s5p64x0 and s5pv210 as they are unused.

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
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

maintainer
#49 lore raw

PATCH 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.h as that should be removed too.

Ok, I see.

Arnd

#50 lore raw

PATCH v4 16/19 irqchip: Move ARM VIC to drivers/irqchip

In reply to Rob Herring

From: Rob Herring <[email protected]>

Now that we have drivers/irqchip, move VIC irqchip to drivers/irqchip.

Cc Russell King <[email protected]>
Cc Thomas Gleixner <[email protected]>
---
 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
index 7bf52b2..9353184 100644
@@ -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
index 4104b82..dc8dd0d 100644
@@ -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
index 98f30b0..a350969 100644
@@ -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
index f2a9a07..0fb8655 100644
@@ -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
similarity index 98%
rename from arch/arm/common/vic.c
rename to drivers/irqchip/irq-vic.c
index d5ee437..554deaf 100644
@@ -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
#51 lore raw

PATCH v4 17/19 ARM: spear: use common irqchip_init function

In reply to Rob Herring

From: Rob Herring <[email protected]>

Convert spear DT irq initialization over to use common irqchip_init function.

Cc Viresh Kumar <[email protected]>
Cc Shiraz Hashim <[email protected]>
Cc Rajeev Kumar <[email protected]>
---
 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
index ce19113..c26b7a4 100644
@@ -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
index 7a11d85..499479b 100644
@@ -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
index 9719f83..367d9be 100644
@@ -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
index 3a22d842..34c212e 100644
@@ -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
index 38fe95d..c6003ef 100644
@@ -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
index 9d81068..3f6fac0 100644
@@ -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
index 80e1d2f..9011b2e 100644
@@ -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
#52 lore raw

PATCH v4 18/19 ARM: picoxcell: use common irqchip_init function

In reply to Rob Herring

From: 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
index b17401ac..35ee214 100644
@@ -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
#54 lore raw

PATCH v4 19/19 irqchip: Move ARM vic.h to include/linux/irqchip/arm-vic.h

In reply to Rob Herring

From: 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.

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
---
 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
index e85bf17..c533f37 100644
@@ -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
index aa62746..27c2cb7 100644
@@ -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
index 1273931..3514046 100644
@@ -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
index aef303b..0b9c0ba 100644
@@ -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
index bcce68a..6a11278 100644
@@ -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
index ebe18a9..db9c1b1 100644
@@ -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
index 4aaebda..d60397d 100644
@@ -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
index 4d9036d..7616278 100644
@@ -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
index 20f6873..0af8e41 100644
@@ -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
index a9d3bcf..26b48fa 100644
@@ -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
index 5d59294..49ac384 100644
@@ -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
index 974bf98..faa6516 100644
@@ -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
index dfb47d6..103e371 100644
@@ -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
index 554deaf..1fc2578 100644
@@ -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
similarity index 94%
rename from arch/arm/include/asm/hardware/vic.h
rename to include/linux/irqchip/arm-vic.h
index de7aad1..e3c82dc 100644
@@ -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
#55 lore raw

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/irqchip and all VIC DT init for platforms using irqchip_init, move gic.h and update the remaining includes.

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:

#56 lore raw

PATCH v4 19/19 irqchip: Move ARM vic.h to include/linux/irqchip/arm-vic.h

In reply to Rob Herring
Quoted 5 lines · Rob Herring

From: 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.

This will need to be rebased on fixes merged for -rc3.

Apart from that, Acked-by: Linus Walleij <[email protected]>

Yours,
Linus Walleij