Merge tag 'gic-vic-to-irqchip' of git://sources.calxeda.com/kernel/linux into next...
authorOlof Johansson <olof@lixom.net>
Tue, 15 Jan 2013 01:22:00 +0000 (17:22 -0800)
committerOlof Johansson <olof@lixom.net>
Tue, 15 Jan 2013 03:55:03 +0000 (19:55 -0800)
From Rob Herring:

Initial irqchip init infrastructure and GIC and VIC clean-ups

This creates irqchip initialization infrastructure from Thomas
Petazzoni. The VIC and GIC irqchip code is moved to drivers/irqchips
and adapted to use the new infrastructure. All DT enabled platforms
using GIC and VIC are converted over to use the new irqchip_init.

* tag 'gic-vic-to-irqchip' of git://sources.calxeda.com/kernel/linux:
  irqchip: Move ARM vic.h to include/linux/irqchip/arm-vic.h
  ARM: picoxcell: use common irqchip_init function
  ARM: spear: use common irqchip_init function
  irqchip: Move ARM VIC to drivers/irqchip
  ARM: samsung: remove unused tick.h
  ARM: remove unneeded vic.h includes
  ARM: remove mach .handle_irq for VIC users
  ARM: VIC: set handle_arch_irq in VIC initialization
  ARM: VIC: shrink down vic.h
  irqchip: Move ARM gic.h to include/linux/irqchip/arm-gic.h
  ARM: use common irqchip_init for GIC init
  irqchip: Move ARM GIC to drivers/irqchip
  ARM: remove mach .handle_irq for GIC users
  ARM: GIC: set handle_arch_irq in GIC initialization
  ARM: GIC: remove direct use of gic_raise_softirq
  ARM: GIC: remove assembly ifdefs from gic.h
  ARM: mach-ux500: use SGI0 to wake up the other core
  arm: add set_handle_irq() to register the parent IRQ controller handler function
  irqchip: add basic infrastructure
  irqchip: add to the directories part of the IRQ subsystem in MAINTAINERS

Fixed up massive merge conflicts with the timer cleanup due to adjacent changes:

Signed-off-by: Olof Johansson <olof@lixom.net>
Conflicts:
arch/arm/mach-bcm/board_bcm.c
arch/arm/mach-cns3xxx/cns3420vb.c
arch/arm/mach-ep93xx/adssphere.c
arch/arm/mach-ep93xx/edb93xx.c
arch/arm/mach-ep93xx/gesbc9312.c
arch/arm/mach-ep93xx/micro9.c
arch/arm/mach-ep93xx/simone.c
arch/arm/mach-ep93xx/snappercl15.c
arch/arm/mach-ep93xx/ts72xx.c
arch/arm/mach-ep93xx/vision_ep9307.c
arch/arm/mach-highbank/highbank.c
arch/arm/mach-imx/mach-imx6q.c
arch/arm/mach-msm/board-dt-8960.c
arch/arm/mach-netx/nxdb500.c
arch/arm/mach-netx/nxdkn.c
arch/arm/mach-netx/nxeb500hmi.c
arch/arm/mach-nomadik/board-nhk8815.c
arch/arm/mach-picoxcell/common.c
arch/arm/mach-realview/realview_eb.c
arch/arm/mach-realview/realview_pb1176.c
arch/arm/mach-realview/realview_pb11mp.c
arch/arm/mach-realview/realview_pba8.c
arch/arm/mach-realview/realview_pbx.c
arch/arm/mach-socfpga/socfpga.c
arch/arm/mach-spear13xx/spear1310.c
arch/arm/mach-spear13xx/spear1340.c
arch/arm/mach-spear13xx/spear13xx.c
arch/arm/mach-spear3xx/spear300.c
arch/arm/mach-spear3xx/spear310.c
arch/arm/mach-spear3xx/spear320.c
arch/arm/mach-spear3xx/spear3xx.c
arch/arm/mach-spear6xx/spear6xx.c
arch/arm/mach-tegra/board-dt-tegra20.c
arch/arm/mach-tegra/board-dt-tegra30.c
arch/arm/mach-u300/core.c
arch/arm/mach-ux500/board-mop500.c
arch/arm/mach-ux500/cpu-db8500.c
arch/arm/mach-versatile/versatile_ab.c
arch/arm/mach-versatile/versatile_dt.c
arch/arm/mach-versatile/versatile_pb.c
arch/arm/mach-vexpress/v2m.c
include/asm-generic/vmlinux.lds.h

87 files changed:
1  2 
arch/arm/mach-bcm/board_bcm.c
arch/arm/mach-cns3xxx/cns3420vb.c
arch/arm/mach-cns3xxx/core.c
arch/arm/mach-ep93xx/adssphere.c
arch/arm/mach-ep93xx/core.c
arch/arm/mach-ep93xx/edb93xx.c
arch/arm/mach-ep93xx/gesbc9312.c
arch/arm/mach-ep93xx/micro9.c
arch/arm/mach-ep93xx/simone.c
arch/arm/mach-ep93xx/snappercl15.c
arch/arm/mach-ep93xx/ts72xx.c
arch/arm/mach-ep93xx/vision_ep9307.c
arch/arm/mach-exynos/mach-armlex4210.c
arch/arm/mach-exynos/mach-exynos4-dt.c
arch/arm/mach-exynos/mach-exynos5-dt.c
arch/arm/mach-exynos/mach-nuri.c
arch/arm/mach-exynos/mach-origen.c
arch/arm/mach-exynos/mach-smdk4x12.c
arch/arm/mach-exynos/mach-smdkv310.c
arch/arm/mach-exynos/mach-universal_c210.c
arch/arm/mach-exynos/mct.c
arch/arm/mach-highbank/highbank.c
arch/arm/mach-imx/mach-imx6q.c
arch/arm/mach-msm/board-dt-8660.c
arch/arm/mach-msm/board-dt-8960.c
arch/arm/mach-msm/timer.c
arch/arm/mach-netx/nxdb500.c
arch/arm/mach-netx/nxdkn.c
arch/arm/mach-netx/nxeb500hmi.c
arch/arm/mach-nomadik/board-nhk8815.c
arch/arm/mach-omap2/board-4430sdp.c
arch/arm/mach-omap2/board-generic.c
arch/arm/mach-omap2/board-omap4panda.c
arch/arm/mach-picoxcell/common.c
arch/arm/mach-realview/realview_eb.c
arch/arm/mach-realview/realview_pb1176.c
arch/arm/mach-realview/realview_pb11mp.c
arch/arm/mach-realview/realview_pba8.c
arch/arm/mach-realview/realview_pbx.c
arch/arm/mach-s3c64xx/mach-anw6410.c
arch/arm/mach-s3c64xx/mach-crag6410.c
arch/arm/mach-s3c64xx/mach-hmt.c
arch/arm/mach-s3c64xx/mach-mini6410.c
arch/arm/mach-s3c64xx/mach-ncp.c
arch/arm/mach-s3c64xx/mach-real6410.c
arch/arm/mach-s3c64xx/mach-smartq5.c
arch/arm/mach-s3c64xx/mach-smartq7.c
arch/arm/mach-s3c64xx/mach-smdk6400.c
arch/arm/mach-s3c64xx/mach-smdk6410.c
arch/arm/mach-s5p64x0/mach-smdk6440.c
arch/arm/mach-s5p64x0/mach-smdk6450.c
arch/arm/mach-s5pc100/mach-smdkc100.c
arch/arm/mach-s5pv210/mach-aquila.c
arch/arm/mach-s5pv210/mach-goni.c
arch/arm/mach-s5pv210/mach-smdkc110.c
arch/arm/mach-s5pv210/mach-smdkv210.c
arch/arm/mach-s5pv210/mach-torbreck.c
arch/arm/mach-shmobile/board-ag5evm.c
arch/arm/mach-shmobile/board-kota2.c
arch/arm/mach-shmobile/board-kzm9d.c
arch/arm/mach-shmobile/board-kzm9g.c
arch/arm/mach-shmobile/board-marzen.c
arch/arm/mach-shmobile/setup-emev2.c
arch/arm/mach-socfpga/socfpga.c
arch/arm/mach-spear13xx/include/mach/generic.h
arch/arm/mach-spear13xx/spear1310.c
arch/arm/mach-spear13xx/spear1340.c
arch/arm/mach-spear13xx/spear13xx.c
arch/arm/mach-spear3xx/include/mach/generic.h
arch/arm/mach-spear3xx/spear300.c
arch/arm/mach-spear3xx/spear310.c
arch/arm/mach-spear3xx/spear320.c
arch/arm/mach-spear3xx/spear3xx.c
arch/arm/mach-spear6xx/spear6xx.c
arch/arm/mach-sunxi/sunxi.c
arch/arm/mach-tegra/board-dt-tegra20.c
arch/arm/mach-tegra/board-dt-tegra30.c
arch/arm/mach-u300/core.c
arch/arm/mach-ux500/board-mop500.c
arch/arm/mach-ux500/cpu-db8500.c
arch/arm/mach-versatile/core.c
arch/arm/mach-versatile/versatile_ab.c
arch/arm/mach-versatile/versatile_dt.c
arch/arm/mach-versatile/versatile_pb.c
arch/arm/mach-vexpress/v2m.c
arch/arm/mach-zynq/common.c
include/asm-generic/vmlinux.lds.h

@@@ -31,10 -24,9 +24,6 @@@ static void timer_init(void
  {
  }
  
- static void __init init_irq(void)
- {
-       of_irq_init(irq_match);
- }
 -static struct sys_timer timer = {
 -      .init = timer_init,
 -};
  
  static void __init board_init(void)
  {
@@@ -45,9 -37,8 +34,8 @@@
  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_time = timer_init,
        .init_machine = board_init,
        .dt_compat = bcm11351_dt_compat,
-       .handle_irq = gic_handle_irq,
  MACHINE_END
@@@ -250,8 -249,7 +249,7 @@@ MACHINE_START(CNS3420VB, "Cavium Networ
        .atag_offset    = 0x100,
        .map_io         = cns3420_map_io,
        .init_irq       = cns3xxx_init_irq,
 -      .timer          = &cns3xxx_timer,
 +      .init_time      = cns3xxx_timer_init,
-       .handle_irq     = gic_handle_irq,
        .init_machine   = cns3420_init,
        .restart        = cns3xxx_restart,
  MACHINE_END
Simple merge
@@@ -39,8 -38,7 +38,7 @@@ MACHINE_START(ADSSPHERE, "ADS Sphere bo
        .atag_offset    = 0x100,
        .map_io         = ep93xx_map_io,
        .init_irq       = ep93xx_init_irq,
-       .handle_irq     = vic_handle_irq,
 -      .timer          = &ep93xx_timer,
 +      .init_time      = ep93xx_timer_init,
        .init_machine   = adssphere_init_machine,
        .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
Simple merge
@@@ -276,8 -275,7 +275,7 @@@ MACHINE_START(EDB9301, "Cirrus Logic ED
        .atag_offset    = 0x100,
        .map_io         = ep93xx_map_io,
        .init_irq       = ep93xx_init_irq,
-       .handle_irq     = vic_handle_irq,
 -      .timer          = &ep93xx_timer,
 +      .init_time      = ep93xx_timer_init,
        .init_machine   = edb93xx_init_machine,
        .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
@@@ -290,8 -288,7 +288,7 @@@ MACHINE_START(EDB9302, "Cirrus Logic ED
        .atag_offset    = 0x100,
        .map_io         = ep93xx_map_io,
        .init_irq       = ep93xx_init_irq,
-       .handle_irq     = vic_handle_irq,
 -      .timer          = &ep93xx_timer,
 +      .init_time      = ep93xx_timer_init,
        .init_machine   = edb93xx_init_machine,
        .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
@@@ -304,8 -301,7 +301,7 @@@ MACHINE_START(EDB9302A, "Cirrus Logic E
        .atag_offset    = 0x100,
        .map_io         = ep93xx_map_io,
        .init_irq       = ep93xx_init_irq,
-       .handle_irq     = vic_handle_irq,
 -      .timer          = &ep93xx_timer,
 +      .init_time      = ep93xx_timer_init,
        .init_machine   = edb93xx_init_machine,
        .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
@@@ -318,8 -314,7 +314,7 @@@ MACHINE_START(EDB9307, "Cirrus Logic ED
        .atag_offset    = 0x100,
        .map_io         = ep93xx_map_io,
        .init_irq       = ep93xx_init_irq,
-       .handle_irq     = vic_handle_irq,
 -      .timer          = &ep93xx_timer,
 +      .init_time      = ep93xx_timer_init,
        .init_machine   = edb93xx_init_machine,
        .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
@@@ -332,8 -327,7 +327,7 @@@ MACHINE_START(EDB9307A, "Cirrus Logic E
        .atag_offset    = 0x100,
        .map_io         = ep93xx_map_io,
        .init_irq       = ep93xx_init_irq,
-       .handle_irq     = vic_handle_irq,
 -      .timer          = &ep93xx_timer,
 +      .init_time      = ep93xx_timer_init,
        .init_machine   = edb93xx_init_machine,
        .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
@@@ -346,8 -340,7 +340,7 @@@ MACHINE_START(EDB9312, "Cirrus Logic ED
        .atag_offset    = 0x100,
        .map_io         = ep93xx_map_io,
        .init_irq       = ep93xx_init_irq,
-       .handle_irq     = vic_handle_irq,
 -      .timer          = &ep93xx_timer,
 +      .init_time      = ep93xx_timer_init,
        .init_machine   = edb93xx_init_machine,
        .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
@@@ -360,8 -353,7 +353,7 @@@ MACHINE_START(EDB9315, "Cirrus Logic ED
        .atag_offset    = 0x100,
        .map_io         = ep93xx_map_io,
        .init_irq       = ep93xx_init_irq,
-       .handle_irq     = vic_handle_irq,
 -      .timer          = &ep93xx_timer,
 +      .init_time      = ep93xx_timer_init,
        .init_machine   = edb93xx_init_machine,
        .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
@@@ -374,8 -366,7 +366,7 @@@ MACHINE_START(EDB9315A, "Cirrus Logic E
        .atag_offset    = 0x100,
        .map_io         = ep93xx_map_io,
        .init_irq       = ep93xx_init_irq,
-       .handle_irq     = vic_handle_irq,
 -      .timer          = &ep93xx_timer,
 +      .init_time      = ep93xx_timer_init,
        .init_machine   = edb93xx_init_machine,
        .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
@@@ -39,8 -38,7 +38,7 @@@ MACHINE_START(GESBC9312, "Glomation GES
        .atag_offset    = 0x100,
        .map_io         = ep93xx_map_io,
        .init_irq       = ep93xx_init_irq,
-       .handle_irq     = vic_handle_irq,
 -      .timer          = &ep93xx_timer,
 +      .init_time      = ep93xx_timer_init,
        .init_machine   = gesbc9312_init_machine,
        .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
@@@ -82,8 -81,7 +81,7 @@@ MACHINE_START(MICRO9, "Contec Micro9-Hi
        .atag_offset    = 0x100,
        .map_io         = ep93xx_map_io,
        .init_irq       = ep93xx_init_irq,
-       .handle_irq     = vic_handle_irq,
 -      .timer          = &ep93xx_timer,
 +      .init_time      = ep93xx_timer_init,
        .init_machine   = micro9_init_machine,
        .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
@@@ -96,8 -94,7 +94,7 @@@ MACHINE_START(MICRO9M, "Contec Micro9-M
        .atag_offset    = 0x100,
        .map_io         = ep93xx_map_io,
        .init_irq       = ep93xx_init_irq,
-       .handle_irq     = vic_handle_irq,
 -      .timer          = &ep93xx_timer,
 +      .init_time      = ep93xx_timer_init,
        .init_machine   = micro9_init_machine,
        .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
@@@ -110,8 -107,7 +107,7 @@@ MACHINE_START(MICRO9L, "Contec Micro9-L
        .atag_offset    = 0x100,
        .map_io         = ep93xx_map_io,
        .init_irq       = ep93xx_init_irq,
-       .handle_irq     = vic_handle_irq,
 -      .timer          = &ep93xx_timer,
 +      .init_time      = ep93xx_timer_init,
        .init_machine   = micro9_init_machine,
        .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
@@@ -124,8 -120,7 +120,7 @@@ MACHINE_START(MICRO9S, "Contec Micro9-S
        .atag_offset    = 0x100,
        .map_io         = ep93xx_map_io,
        .init_irq       = ep93xx_init_irq,
-       .handle_irq     = vic_handle_irq,
 -      .timer          = &ep93xx_timer,
 +      .init_time      = ep93xx_timer_init,
        .init_machine   = micro9_init_machine,
        .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
@@@ -83,8 -82,7 +82,7 @@@ MACHINE_START(SIM_ONE, "Simplemachines 
        .atag_offset    = 0x100,
        .map_io         = ep93xx_map_io,
        .init_irq       = ep93xx_init_irq,
-       .handle_irq     = vic_handle_irq,
 -      .timer          = &ep93xx_timer,
 +      .init_time      = ep93xx_timer_init,
        .init_machine   = simone_init_machine,
        .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
@@@ -176,8 -175,7 +175,7 @@@ MACHINE_START(SNAPPER_CL15, "Bluewater 
        .atag_offset    = 0x100,
        .map_io         = ep93xx_map_io,
        .init_irq       = ep93xx_init_irq,
-       .handle_irq     = vic_handle_irq,
 -      .timer          = &ep93xx_timer,
 +      .init_time      = ep93xx_timer_init,
        .init_machine   = snappercl15_init_machine,
        .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
@@@ -246,8 -245,7 +245,7 @@@ MACHINE_START(TS72XX, "Technologic Syst
        .atag_offset    = 0x100,
        .map_io         = ts72xx_map_io,
        .init_irq       = ep93xx_init_irq,
-       .handle_irq     = vic_handle_irq,
 -      .timer          = &ep93xx_timer,
 +      .init_time      = ep93xx_timer_init,
        .init_machine   = ts72xx_init_machine,
        .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
@@@ -364,8 -363,7 +363,7 @@@ MACHINE_START(VISION_EP9307, "Vision En
        .atag_offset    = 0x100,
        .map_io         = vision_map_io,
        .init_irq       = ep93xx_init_irq,
-       .handle_irq     = vic_handle_irq,
 -      .timer          = &ep93xx_timer,
 +      .init_time      = ep93xx_timer_init,
        .init_machine   = vision_init_machine,
        .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
@@@ -201,9 -200,8 +200,8 @@@ 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,
 +      .init_time      = exynos4_timer_init,
        .restart        = exynos4_restart,
  MACHINE_END
@@@ -107,10 -106,9 +106,9 @@@ DT_MACHINE_START(EXYNOS4210_DT, "Samsun
        .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,
 +      .init_time      = exynos4_timer_init,
        .dt_compat      = exynos4_dt_compat,
        .restart        = exynos4_restart,
  MACHINE_END
@@@ -179,10 -178,9 +178,9 @@@ DT_MACHINE_START(EXYNOS5_DT, "SAMSUNG E
        .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,
 +      .init_time      = exynos4_timer_init,
        .dt_compat      = exynos5_dt_compat,
        .restart        = exynos5_restart,
        .reserve        = exynos5_reserve,
@@@ -1379,10 -1378,9 +1378,9 @@@ 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,
 +      .init_time      = exynos4_timer_init,
        .reserve        = &nuri_reserve,
        .restart        = exynos4_restart,
  MACHINE_END
@@@ -814,10 -813,9 +813,9 @@@ 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,
 +      .init_time      = exynos4_timer_init,
        .reserve        = &origen_reserve,
        .restart        = exynos4_restart,
  MACHINE_END
@@@ -376,9 -375,8 +375,8 @@@ 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,
 +      .init_time      = exynos4_timer_init,
        .restart        = exynos4_restart,
        .reserve        = &smdk4x12_reserve,
  MACHINE_END
@@@ -390,10 -388,9 +388,9 @@@ 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,
 +      .init_time      = exynos4_timer_init,
        .restart        = exynos4_restart,
        .reserve        = &smdk4x12_reserve,
  MACHINE_END
@@@ -423,9 -422,8 +422,8 @@@ 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,
 +      .init_time      = exynos4_timer_init,
        .reserve        = &smdkv310_reserve,
        .restart        = exynos4_restart,
  MACHINE_END
@@@ -436,10 -434,9 +434,9 @@@ 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,
 +      .init_time      = exynos4_timer_init,
        .reserve        = &smdkv310_reserve,
        .restart        = exynos4_restart,
  MACHINE_END
@@@ -1151,10 -1150,9 +1150,9 @@@ MACHINE_START(UNIVERSAL_C210, "UNIVERSA
        .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,
 +      .init_time      = s5p_timer_init,
        .reserve        = &universal_reserve,
        .restart        = exynos4_restart,
  MACHINE_END
Simple merge
@@@ -205,8 -203,7 +199,7 @@@ DT_MACHINE_START(HIGHBANK, "Highbank"
        .smp            = smp_ops(highbank_smp_ops),
        .map_io         = debug_ll_io_init,
        .init_irq       = highbank_init_irq,
 -      .timer          = &highbank_timer,
 +      .init_time      = highbank_timer_init,
-       .handle_irq     = gic_handle_irq,
        .init_machine   = highbank_init,
        .dt_compat      = highbank_match,
        .restart        = highbank_restart,
@@@ -250,8 -249,7 +245,7 @@@ DT_MACHINE_START(IMX6Q, "Freescale i.MX
        .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_time      = imx6q_timer_init,
        .init_machine   = imx6q_init_machine,
        .init_late      = imx6q_init_late,
        .dt_compat      = imx6q_dt_compat,
@@@ -55,10 -44,9 +44,9 @@@ static const char *msm8x60_fluid_match[
  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_irq = irqchip_init,
        .init_machine = msm8x60_dt_init,
        .init_late = msm8x60_init_late,
 -      .timer = &msm_dt_timer,
 +      .init_time      = msm_dt_timer_init,
        .dt_compat = msm8x60_fluid_match,
  MACHINE_END
@@@ -42,9 -31,8 +31,8 @@@ static const char * const msm8960_dt_ma
  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_time      = msm_dt_timer_init,
        .init_machine = msm_dt_init,
        .dt_compat = msm8960_dt_match,
-       .handle_irq = gic_handle_irq,
  MACHINE_END
Simple merge
@@@ -204,8 -203,7 +203,7 @@@ MACHINE_START(NXDB500, "Hilscher nxdb50
        .atag_offset    = 0x100,
        .map_io         = netx_map_io,
        .init_irq       = netx_init_irq,
-       .handle_irq     = vic_handle_irq,
 -      .timer          = &netx_timer,
 +      .init_time      = netx_timer_init,
        .init_machine   = nxdb500_init,
        .restart        = netx_restart,
  MACHINE_END
@@@ -97,8 -96,7 +96,7 @@@ 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_time      = netx_timer_init,
        .init_machine   = nxdkn_init,
        .restart        = netx_restart,
  MACHINE_END
@@@ -181,8 -180,7 +180,7 @@@ MACHINE_START(NXEB500HMI, "Hilscher nxe
        .atag_offset    = 0x100,
        .map_io         = netx_map_io,
        .init_irq       = netx_init_irq,
-       .handle_irq     = vic_handle_irq,
 -      .timer          = &netx_timer,
 +      .init_time      = netx_timer_init,
        .init_machine   = nxeb500hmi_init,
        .restart        = netx_restart,
  MACHINE_END
@@@ -348,8 -351,7 +347,7 @@@ 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_time      = nomadik_timer_init,
        .init_machine   = nhk8815_platform_init,
        .restart        = cpu8815_restart,
  MACHINE_END
@@@ -722,9 -722,8 +722,8 @@@ MACHINE_START(OMAP_4430SDP, "OMAP4430 4
        .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,
 +      .init_time      = omap4_local_timer_init,
        .restart        = omap44xx_restart,
  MACHINE_END
@@@ -156,10 -155,9 +155,9 @@@ DT_MACHINE_START(OMAP4_DT, "Generic OMA
        .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,
 +      .init_time      = omap4_local_timer_init,
        .dt_compat      = omap4_boards_compat,
        .restart        = omap44xx_restart,
  MACHINE_END
@@@ -177,9 -175,8 +175,8 @@@ DT_MACHINE_START(OMAP5_DT, "Generic OMA
        .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,
 +      .init_time      = omap5_realtime_timer_init,
        .dt_compat      = omap5_boards_compat,
        .restart        = omap44xx_restart,
  MACHINE_END
@@@ -453,9 -453,8 +453,8 @@@ MACHINE_START(OMAP4_PANDA, "OMAP4 Pand
        .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,
 +      .init_time      = omap4_local_timer_init,
        .restart        = omap44xx_restart,
  MACHINE_END
@@@ -97,9 -87,8 +87,8 @@@ static void picoxcell_wdt_restart(char 
  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,
+       .init_irq       = irqchip_init,
 -      .timer          = &dw_apb_timer,
 +      .init_time      = dw_apb_timer_init,
        .init_machine   = picoxcell_init_machine,
        .dt_compat      = picoxcell_dt_match,
        .restart        = picoxcell_wdt_restart,
@@@ -468,8 -472,7 +468,7 @@@ MACHINE_START(REALVIEW_EB, "ARM-RealVie
        .map_io         = realview_eb_map_io,
        .init_early     = realview_init_early,
        .init_irq       = gic_init_irq,
 -      .timer          = &realview_eb_timer,
 +      .init_time      = realview_eb_timer_init,
-       .handle_irq     = gic_handle_irq,
        .init_machine   = realview_eb_init,
  #ifdef CONFIG_ZONE_DMA
        .dma_zone_size  = SZ_256M,
@@@ -380,8 -384,7 +380,7 @@@ MACHINE_START(REALVIEW_PB1176, "ARM-Rea
        .map_io         = realview_pb1176_map_io,
        .init_early     = realview_init_early,
        .init_irq       = gic_init_irq,
 -      .timer          = &realview_pb1176_timer,
 +      .init_time      = realview_pb1176_timer_init,
-       .handle_irq     = gic_handle_irq,
        .init_machine   = realview_pb1176_init,
  #ifdef CONFIG_ZONE_DMA
        .dma_zone_size  = SZ_256M,
@@@ -363,8 -367,7 +363,7 @@@ MACHINE_START(REALVIEW_PB11MP, "ARM-Rea
        .map_io         = realview_pb11mp_map_io,
        .init_early     = realview_init_early,
        .init_irq       = gic_init_irq,
 -      .timer          = &realview_pb11mp_timer,
 +      .init_time      = realview_pb11mp_timer_init,
-       .handle_irq     = gic_handle_irq,
        .init_machine   = realview_pb11mp_init,
  #ifdef CONFIG_ZONE_DMA
        .dma_zone_size  = SZ_256M,
@@@ -304,8 -308,7 +304,7 @@@ MACHINE_START(REALVIEW_PBA8, "ARM-RealV
        .map_io         = realview_pba8_map_io,
        .init_early     = realview_init_early,
        .init_irq       = gic_init_irq,
 -      .timer          = &realview_pba8_timer,
 +      .init_time      = realview_pba8_timer_init,
-       .handle_irq     = gic_handle_irq,
        .init_machine   = realview_pba8_init,
  #ifdef CONFIG_ZONE_DMA
        .dma_zone_size  = SZ_256M,
@@@ -400,8 -404,7 +400,7 @@@ MACHINE_START(REALVIEW_PBX, "ARM-RealVi
        .map_io         = realview_pbx_map_io,
        .init_early     = realview_init_early,
        .init_irq       = gic_init_irq,
 -      .timer          = &realview_pbx_timer,
 +      .init_time      = realview_pbx_timer_init,
-       .handle_irq     = gic_handle_irq,
        .init_machine   = realview_pbx_init,
  #ifdef CONFIG_ZONE_DMA
        .dma_zone_size  = SZ_256M,
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -272,9 -271,8 +271,8 @@@ 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,
 +      .init_time      = s5p_timer_init,
        .restart        = s5p64x0_restart,
  MACHINE_END
@@@ -291,9 -290,8 +290,8 @@@ 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,
 +      .init_time      = s5p_timer_init,
        .restart        = s5p64x0_restart,
  MACHINE_END
@@@ -254,9 -253,8 +253,8 @@@ MACHINE_START(SMDKC100, "SMDKC100"
        /* Maintainer: Byungho Min <bhmin@samsung.com> */
        .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,
 +      .init_time      = s3c24xx_timer_init,
        .restart        = s5pc100_restart,
  MACHINE_END
@@@ -685,9 -684,8 +684,8 @@@ MACHINE_START(AQUILA, "Aquila"
           Kyungmin Park <kyungmin.park@samsung.com> */
        .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,
 +      .init_time      = s5p_timer_init,
        .restart        = s5pv210_restart,
  MACHINE_END
@@@ -972,10 -971,9 +971,9 @@@ MACHINE_START(GONI, "GONI"
        /* Maintainers: Kyungmin Park <kyungmin.park@samsung.com> */
        .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,
 +      .init_time      = s5p_timer_init,
        .reserve        = &goni_reserve,
        .restart        = s5pv210_restart,
  MACHINE_END
@@@ -152,10 -151,9 +151,9 @@@ MACHINE_START(SMDKC110, "SMDKC110"
        /* Maintainer: Kukjin Kim <kgene.kim@samsung.com> */
        .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,
 +      .init_time      = s5p_timer_init,
        .restart        = s5pv210_restart,
        .reserve        = &smdkc110_reserve,
  MACHINE_END
@@@ -328,10 -327,9 +327,9 @@@ MACHINE_START(SMDKV210, "SMDKV210"
        /* Maintainer: Kukjin Kim <kgene.kim@samsung.com> */
        .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,
 +      .init_time      = s5p_timer_init,
        .restart        = s5pv210_restart,
        .reserve        = &smdkv210_reserve,
  MACHINE_END
@@@ -129,9 -128,8 +128,8 @@@ MACHINE_START(TORBRECK, "TORBRECK"
        /* Maintainer: Hyunchul Ko <ghcstop@gmail.com> */
        .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,
 +      .init_time      = s5p_timer_init,
        .restart        = s5pv210_restart,
  MACHINE_END
@@@ -668,8 -668,7 +668,7 @@@ 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,
 +      .init_time      = sh73a0_earlytimer_init,
  MACHINE_END
@@@ -550,8 -550,7 +550,7 @@@ 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,
 +      .init_time      = sh73a0_earlytimer_init,
  MACHINE_END
@@@ -89,9 -88,8 +88,8 @@@ 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,
 +      .init_time      = shmobile_timer_init,
        .dt_compat      = kzm9d_boards_compat_dt,
  MACHINE_END
@@@ -792,10 -792,9 +792,9 @@@ 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,
 +      .init_time      = sh73a0_earlytimer_init,
        .restart        = kzm9g_restart,
        .dt_compat      = kzm9g_boards_compat_dt,
  MACHINE_END
@@@ -382,8 -381,7 +381,7 @@@ 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,
 +      .init_time      = r8a7779_earlytimer_init,
  MACHINE_END
@@@ -464,10 -454,9 +454,9 @@@ DT_MACHINE_START(EMEV2_DT, "Generic Emm
        .smp            = smp_ops(emev2_smp_ops),
        .init_early     = emev2_init_delay,
        .nr_irqs        = NR_IRQS_LEGACY,
-       .init_irq       = emev2_init_irq_dt,
-       .handle_irq     = gic_handle_irq,
+       .init_irq       = irqchip_init,
        .init_machine   = emev2_add_standard_devices_dt,
 -      .timer          = &shmobile_timer,
 +      .init_time      = shmobile_timer_init,
        .dt_compat      = emev2_boards_compat_dt,
  MACHINE_END
  
@@@ -105,9 -100,8 +100,8 @@@ 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,
-       .handle_irq     = gic_handle_irq,
+       .init_irq       = socfpga_init_irq,
 -      .timer          = &dw_apb_timer,
 +      .init_time      = dw_apb_timer_init,
        .init_machine   = socfpga_cyclone5_init,
        .restart        = socfpga_cyclone5_restart,
        .dt_compat      = altera_dt_match,
@@@ -90,9 -90,8 +90,8 @@@ static void __init spear1310_map_io(voi
  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,
+       .init_irq       =       irqchip_init,
 -      .timer          =       &spear13xx_timer,
 +      .init_time      =       spear13xx_timer_init,
        .init_machine   =       spear1310_dt_init,
        .restart        =       spear_restart,
        .dt_compat      =       spear1310_dt_board_compat,
@@@ -184,9 -184,8 +184,8 @@@ static const char * const spear1340_dt_
  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,
+       .init_irq       =       irqchip_init,
 -      .timer          =       &spear13xx_timer,
 +      .init_time      =       spear13xx_timer_init,
        .init_machine   =       spear1340_dt_init,
        .restart        =       spear_restart,
        .dt_compat      =       spear1340_dt_board_compat,
@@@ -182,13 -181,7 +181,3 @@@ void __init spear13xx_timer_init(void
        spear_setup_of_timer();
        twd_local_timer_of_register();
  }
--
- static const struct of_device_id gic_of_match[] __initconst = {
-       { .compatible = "arm,cortex-a9-gic", .data = gic_of_init },
-       { /* Sentinel */ }
 -struct sys_timer spear13xx_timer = {
 -      .init = spear13xx_timer_init,
--};
- void __init spear13xx_dt_init_irq(void)
- {
-       of_irq_init(gic_of_match);
- }
@@@ -212,9 -212,8 +212,8 @@@ 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,
+       .init_irq       =       irqchip_init,
 -      .timer          =       &spear3xx_timer,
 +      .init_time      =       spear3xx_timer_init,
        .init_machine   =       spear300_dt_init,
        .restart        =       spear_restart,
        .dt_compat      =       spear300_dt_board_compat,
@@@ -254,9 -254,8 +254,8 @@@ 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,
+       .init_irq       =       irqchip_init,
 -      .timer          =       &spear3xx_timer,
 +      .init_time      =       spear3xx_timer_init,
        .init_machine   =       spear310_dt_init,
        .restart        =       spear_restart,
        .dt_compat      =       spear310_dt_board_compat,
@@@ -268,9 -268,8 +268,8 @@@ 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,
+       .init_irq       =       irqchip_init,
 -      .timer          =       &spear3xx_timer,
 +      .init_time      =       spear3xx_timer_init,
        .init_machine   =       spear320_dt_init,
        .restart        =       spear_restart,
        .dt_compat      =       spear320_dt_board_compat,
@@@ -115,16 -112,7 +112,3 @@@ void __init spear3xx_timer_init(void
  
        spear_setup_of_timer();
  }
--
- 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 */ }
 -struct sys_timer spear3xx_timer = {
 -      .init = spear3xx_timer_init,
--};
- void __init spear3xx_dt_init_irq(void)
- {
-       of_irq_init(vic_of_match);
- }
@@@ -421,21 -424,10 +420,10 @@@ static const char *spear600_dt_board_co
        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,
-       .handle_irq     =       vic_handle_irq,
+       .init_irq       =       irqchip_init,
 -      .timer          =       &spear6xx_timer,
 +      .init_time      =       spear6xx_timer_init,
        .init_machine   =       spear600_dt_init,
        .restart        =       spear_restart,
        .dt_compat      =       spear600_dt_board_compat,
Simple merge
@@@ -202,8 -200,7 +200,7 @@@ DT_MACHINE_START(TEGRA_DT, "nVidia Tegr
        .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_time      = tegra_init_timer,
        .init_machine   = tegra_dt_init,
        .init_late      = tegra_dt_init_late,
        .restart        = tegra_assert_system_reset,
@@@ -112,8 -111,7 +111,7 @@@ DT_MACHINE_START(TEGRA30_DT, "NVIDIA Te
        .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_time      = tegra_init_timer,
        .init_machine   = tegra30_dt_init,
        .init_late      = tegra_init_late,
        .restart        = tegra_assert_system_reset,
@@@ -1779,8 -1779,7 +1779,7 @@@ MACHINE_START(U300, "Ericsson AB U335 S
        .map_io         = u300_map_io,
        .nr_irqs        = 0,
        .init_irq       = u300_init_irq,
-       .handle_irq     = vic_handle_irq,
 -      .timer          = &u300_timer,
 +      .init_time      = u300_timer_init,
        .init_machine   = u300_init_machine,
        .restart        = u300_restart,
  MACHINE_END
@@@ -751,8 -750,7 +750,7 @@@ MACHINE_START(U8500, "ST-Ericsson MOP50
        .map_io         = u8500_map_io,
        .init_irq       = ux500_init_irq,
        /* we re-use nomadik timer here */
 -      .timer          = &ux500_timer,
 +      .init_time      = ux500_timer_init,
-       .handle_irq     = gic_handle_irq,
        .init_machine   = mop500_init_machine,
        .init_late      = ux500_init_late,
  MACHINE_END
@@@ -761,8 -759,7 +759,7 @@@ MACHINE_START(U8520, "ST-Ericsson U852
        .atag_offset    = 0x100,
        .map_io         = u8500_map_io,
        .init_irq       = ux500_init_irq,
 -      .timer          = &ux500_timer,
 +      .init_time      = ux500_timer_init,
-       .handle_irq     = gic_handle_irq,
        .init_machine   = mop500_init_machine,
        .init_late      = ux500_init_late,
  MACHINE_END
@@@ -772,8 -769,7 +769,7 @@@ MACHINE_START(HREFV60, "ST-Ericsson U85
        .smp            = smp_ops(ux500_smp_ops),
        .map_io         = u8500_map_io,
        .init_irq       = ux500_init_irq,
 -      .timer          = &ux500_timer,
 +      .init_time      = ux500_timer_init,
-       .handle_irq     = gic_handle_irq,
        .init_machine   = hrefv60_init_machine,
        .init_late      = ux500_init_late,
  MACHINE_END
@@@ -784,8 -780,7 +780,7 @@@ MACHINE_START(SNOWBALL, "Calao Systems 
        .map_io         = u8500_map_io,
        .init_irq       = ux500_init_irq,
        /* we re-use nomadik timer here */
 -      .timer          = &ux500_timer,
 +      .init_time      = ux500_timer_init,
-       .handle_irq     = gic_handle_irq,
        .init_machine   = snowball_init_machine,
        .init_late      = NULL,
  MACHINE_END
@@@ -341,8 -340,7 +340,7 @@@ DT_MACHINE_START(U8500_DT, "ST-Ericsso
        .map_io         = u8500_map_io,
        .init_irq       = ux500_init_irq,
        /* we re-use nomadik timer here */
 -      .timer          = &ux500_timer,
 +      .init_time      = ux500_timer_init,
-       .handle_irq     = gic_handle_irq,
        .init_machine   = u8500_init_machine,
        .init_late      = NULL,
        .dt_compat      = stericsson_dt_platform_compat,
Simple merge
@@@ -39,8 -38,7 +38,7 @@@ MACHINE_START(VERSATILE_AB, "ARM-Versat
        .map_io         = versatile_map_io,
        .init_early     = versatile_init_early,
        .init_irq       = versatile_init_irq,
-       .handle_irq     = vic_handle_irq,
 -      .timer          = &versatile_timer,
 +      .init_time      = versatile_timer_init,
        .init_machine   = versatile_init,
        .restart        = versatile_restart,
  MACHINE_END
@@@ -46,8 -45,7 +45,7 @@@ DT_MACHINE_START(VERSATILE_PB, "ARM-Ver
        .map_io         = versatile_map_io,
        .init_early     = versatile_init_early,
        .init_irq       = versatile_init_irq,
-       .handle_irq     = vic_handle_irq,
 -      .timer          = &versatile_timer,
 +      .init_time      = versatile_timer_init,
        .init_machine   = versatile_dt_init,
        .dt_compat      = versatile_dt_match,
        .restart        = versatile_restart,
@@@ -107,8 -106,7 +106,7 @@@ MACHINE_START(VERSATILE_PB, "ARM-Versat
        .map_io         = versatile_map_io,
        .init_early     = versatile_init_early,
        .init_irq       = versatile_init_irq,
-       .handle_irq     = vic_handle_irq,
 -      .timer          = &versatile_timer,
 +      .init_time      = versatile_timer_init,
        .init_machine   = versatile_pb_init,
        .restart        = versatile_restart,
  MACHINE_END
@@@ -372,8 -376,7 +372,7 @@@ MACHINE_START(VEXPRESS, "ARM-Versatile 
        .map_io         = v2m_map_io,
        .init_early     = v2m_init_early,
        .init_irq       = v2m_init_irq,
 -      .timer          = &v2m_timer,
 +      .init_time      = v2m_timer_init,
-       .handle_irq     = gic_handle_irq,
        .init_machine   = v2m_init,
        .restart        = vexpress_restart,
  MACHINE_END
@@@ -489,9 -486,8 +478,8 @@@ DT_MACHINE_START(VEXPRESS_DT, "ARM-Vers
        .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_time      = v2m_dt_timer_init,
        .init_machine   = v2m_dt_init,
-       .handle_irq     = gic_handle_irq,
        .restart        = vexpress_restart,
  MACHINE_END
@@@ -110,9 -103,8 +96,8 @@@ 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_irq       = irqchip_init,
        .init_machine   = xilinx_init_machine,
 -      .timer          = &xttcpss_sys_timer,
 +      .init_time      = xilinx_zynq_timer_init,
        .dt_compat      = xilinx_dt_match,
  MACHINE_END
  #define TRACE_SYSCALLS()
  #endif
  
 +#ifdef CONFIG_CLKSRC_OF
 +#define CLKSRC_OF_TABLES() . = ALIGN(8);                              \
 +                         VMLINUX_SYMBOL(__clksrc_of_table) = .;       \
 +                         *(__clksrc_of_table)                         \
 +                         *(__clksrc_of_table_end)
 +#else
 +#define CLKSRC_OF_TABLES()
 +#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();                                                 \
        VMLINUX_SYMBOL(__dtb_start) = .;                                \
        DEV_DISCARD(init.rodata)                                        \
        CPU_DISCARD(init.rodata)                                        \
        MEM_DISCARD(init.rodata)                                        \
-       KERNEL_DTB()
 +      CLKSRC_OF_TABLES()                                              \
+       KERNEL_DTB()                                                    \
+       IRQCHIP_OF_MATCH_TABLE()
  
  #define INIT_TEXT                                                     \
        *(.init.text)                                                   \