* [PATCH 0/2] ARM: Remove boilerplate irqchip_init code
@ 2013-03-28 9:41 Maxime Ripard
2013-03-28 9:41 ` [PATCH 1/2] ARM: irq: Call irqchit_init if no init_irq function is specified Maxime Ripard
2013-03-28 9:41 ` [PATCH 2/2] ARM: remove mach .init_irq for irqchip_init users Maxime Ripard
0 siblings, 2 replies; 17+ messages in thread
From: Maxime Ripard @ 2013-03-28 9:41 UTC (permalink / raw)
To: linux-arm-kernel
Hi,
The introduction of the irqchip architecture has made possible to define
a central common function, irqchip_init, as our .init_irq callback in the
machine_desc structure.
We actually see more and more sub-architectures using only the irqchip_init
as their init_irq function, so in order to remove some boilerplate code,
this patchset makes the ARM core to call irqchip_init if no function has
been specified in the init_irq machine_desc field.
This has been tested on the sunxi platform, on top of the cleanup patches,and
it is based on the current arm-soc/for-next branch.
Maxime Ripard (2):
ARM: irq: Call irqchit_init if no init_irq function is specified
ARM: remove mach .init_irq for irqchip_init users
arch/arm/kernel/irq.c | 6 +++++-
arch/arm/mach-bcm/board_bcm.c | 1 -
arch/arm/mach-msm/board-dt-8660.c | 1 -
arch/arm/mach-msm/board-dt-8960.c | 1 -
arch/arm/mach-nomadik/cpu-8815.c | 1 -
arch/arm/mach-picoxcell/common.c | 1 -
arch/arm/mach-prima2/common.c | 1 -
arch/arm/mach-shmobile/board-kzm9g-reference.c | 1 -
arch/arm/mach-shmobile/setup-emev2.c | 1 -
arch/arm/mach-shmobile/setup-sh73a0.c | 1 -
arch/arm/mach-spear/spear1310.c | 1 -
arch/arm/mach-spear/spear1340.c | 1 -
arch/arm/mach-spear/spear300.c | 1 -
arch/arm/mach-spear/spear310.c | 1 -
arch/arm/mach-spear/spear320.c | 1 -
arch/arm/mach-spear/spear6xx.c | 1 -
arch/arm/mach-vexpress/v2m.c | 1 -
arch/arm/mach-virt/virt.c | 1 -
arch/arm/mach-zynq/common.c | 1 -
19 files changed, 5 insertions(+), 19 deletions(-)
--
1.7.10.4
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 1/2] ARM: irq: Call irqchit_init if no init_irq function is specified
2013-03-28 9:41 [PATCH 0/2] ARM: Remove boilerplate irqchip_init code Maxime Ripard
@ 2013-03-28 9:41 ` Maxime Ripard
2013-03-28 14:48 ` Rob Herring
2013-03-28 9:41 ` [PATCH 2/2] ARM: remove mach .init_irq for irqchip_init users Maxime Ripard
1 sibling, 1 reply; 17+ messages in thread
From: Maxime Ripard @ 2013-03-28 9:41 UTC (permalink / raw)
To: linux-arm-kernel
More and more sub-architectures are using only the irqchip_init
function. Make the core code call this function if no init_irq field is
provided in the machine description to remove some boilerplate code.
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
---
arch/arm/kernel/irq.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c
index 8e4ef4c..df6f9a1 100644
--- a/arch/arm/kernel/irq.c
+++ b/arch/arm/kernel/irq.c
@@ -26,6 +26,7 @@
#include <linux/ioport.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
+#include <linux/irqchip.h>
#include <linux/random.h>
#include <linux/smp.h>
#include <linux/init.h>
@@ -114,7 +115,10 @@ EXPORT_SYMBOL_GPL(set_irq_flags);
void __init init_IRQ(void)
{
- machine_desc->init_irq();
+ if (machine_desc->init_irq)
+ machine_desc->init_irq();
+ else
+ irqchip_init();
}
#ifdef CONFIG_MULTI_IRQ_HANDLER
--
1.7.10.4
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 2/2] ARM: remove mach .init_irq for irqchip_init users
2013-03-28 9:41 [PATCH 0/2] ARM: Remove boilerplate irqchip_init code Maxime Ripard
2013-03-28 9:41 ` [PATCH 1/2] ARM: irq: Call irqchit_init if no init_irq function is specified Maxime Ripard
@ 2013-03-28 9:41 ` Maxime Ripard
2013-03-28 12:42 ` Simon Horman
1 sibling, 1 reply; 17+ messages in thread
From: Maxime Ripard @ 2013-03-28 9:41 UTC (permalink / raw)
To: linux-arm-kernel
Now that the arm core code calls irqchip_init, we can remove it from all
the machines that were using it.
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
---
arch/arm/mach-bcm/board_bcm.c | 1 -
arch/arm/mach-msm/board-dt-8660.c | 1 -
arch/arm/mach-msm/board-dt-8960.c | 1 -
arch/arm/mach-nomadik/cpu-8815.c | 1 -
arch/arm/mach-picoxcell/common.c | 1 -
arch/arm/mach-prima2/common.c | 1 -
arch/arm/mach-shmobile/board-kzm9g-reference.c | 1 -
arch/arm/mach-shmobile/setup-emev2.c | 1 -
arch/arm/mach-shmobile/setup-sh73a0.c | 1 -
arch/arm/mach-spear/spear1310.c | 1 -
arch/arm/mach-spear/spear1340.c | 1 -
arch/arm/mach-spear/spear300.c | 1 -
arch/arm/mach-spear/spear310.c | 1 -
arch/arm/mach-spear/spear320.c | 1 -
arch/arm/mach-spear/spear6xx.c | 1 -
arch/arm/mach-vexpress/v2m.c | 1 -
arch/arm/mach-virt/virt.c | 1 -
arch/arm/mach-zynq/common.c | 1 -
18 files changed, 18 deletions(-)
diff --git a/arch/arm/mach-bcm/board_bcm.c b/arch/arm/mach-bcm/board_bcm.c
index f0f9aba..4c819e2 100644
--- a/arch/arm/mach-bcm/board_bcm.c
+++ b/arch/arm/mach-bcm/board_bcm.c
@@ -34,7 +34,6 @@ 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 = irqchip_init,
.init_time = timer_init,
.init_machine = board_init,
.dt_compat = bcm11351_dt_compat,
diff --git a/arch/arm/mach-msm/board-dt-8660.c b/arch/arm/mach-msm/board-dt-8660.c
index 7dcfc53..1360226 100644
--- a/arch/arm/mach-msm/board-dt-8660.c
+++ b/arch/arm/mach-msm/board-dt-8660.c
@@ -44,7 +44,6 @@ 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 = irqchip_init,
.init_machine = msm8x60_dt_init,
.init_late = msm8x60_init_late,
.init_time = msm_dt_timer_init,
diff --git a/arch/arm/mach-msm/board-dt-8960.c b/arch/arm/mach-msm/board-dt-8960.c
index 7301936..1e8eb1d 100644
--- a/arch/arm/mach-msm/board-dt-8960.c
+++ b/arch/arm/mach-msm/board-dt-8960.c
@@ -31,7 +31,6 @@ 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 = irqchip_init,
.init_time = msm_dt_timer_init,
.init_machine = msm_dt_init,
.dt_compat = msm8960_dt_match,
diff --git a/arch/arm/mach-nomadik/cpu-8815.c b/arch/arm/mach-nomadik/cpu-8815.c
index 59f6ff5..3d43f95 100644
--- a/arch/arm/mach-nomadik/cpu-8815.c
+++ b/arch/arm/mach-nomadik/cpu-8815.c
@@ -323,7 +323,6 @@ static const char * cpu8815_board_compat[] = {
DT_MACHINE_START(NOMADIK_DT, "Nomadik STn8815")
.map_io = cpu8815_map_io,
- .init_irq = irqchip_init,
.init_time = cpu8815_timer_init_of,
.init_machine = cpu8815_init_of,
.restart = cpu8815_restart,
diff --git a/arch/arm/mach-picoxcell/common.c b/arch/arm/mach-picoxcell/common.c
index 70b441a..b444947 100644
--- a/arch/arm/mach-picoxcell/common.c
+++ b/arch/arm/mach-picoxcell/common.c
@@ -87,7 +87,6 @@ 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 = irqchip_init,
.init_time = dw_apb_timer_init,
.init_machine = picoxcell_init_machine,
.dt_compat = picoxcell_dt_match,
diff --git a/arch/arm/mach-prima2/common.c b/arch/arm/mach-prima2/common.c
index 72efb4f..efdfc32 100644
--- a/arch/arm/mach-prima2/common.c
+++ b/arch/arm/mach-prima2/common.c
@@ -90,7 +90,6 @@ DT_MACHINE_START(MARCO_DT, "Generic MARCO (Flattened Device Tree)")
/* Maintainer: Barry Song <baohua.song@csr.com> */
.smp = smp_ops(sirfsoc_smp_ops),
.map_io = sirfsoc_map_io,
- .init_irq = irqchip_init,
.init_time = sirfsoc_marco_timer_init,
.init_machine = sirfsoc_mach_init,
.init_late = sirfsoc_init_late,
diff --git a/arch/arm/mach-shmobile/board-kzm9g-reference.c b/arch/arm/mach-shmobile/board-kzm9g-reference.c
index aefa50d..eaec498 100644
--- a/arch/arm/mach-shmobile/board-kzm9g-reference.c
+++ b/arch/arm/mach-shmobile/board-kzm9g-reference.c
@@ -100,7 +100,6 @@ DT_MACHINE_START(KZM9G_DT, "kzm9g-reference")
.map_io = sh73a0_map_io,
.init_early = sh73a0_init_delay,
.nr_irqs = NR_IRQS_LEGACY,
- .init_irq = irqchip_init,
.init_machine = kzm_init,
.init_time = shmobile_timer_init,
.dt_compat = kzm9g_boards_compat_dt,
diff --git a/arch/arm/mach-shmobile/setup-emev2.c b/arch/arm/mach-shmobile/setup-emev2.c
index e4545c1..36d1ac7 100644
--- a/arch/arm/mach-shmobile/setup-emev2.c
+++ b/arch/arm/mach-shmobile/setup-emev2.c
@@ -454,7 +454,6 @@ 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 = irqchip_init,
.init_machine = emev2_add_standard_devices_dt,
.init_time = shmobile_timer_init,
.dt_compat = emev2_boards_compat_dt,
diff --git a/arch/arm/mach-shmobile/setup-sh73a0.c b/arch/arm/mach-shmobile/setup-sh73a0.c
index e8cd93a..ad13508 100644
--- a/arch/arm/mach-shmobile/setup-sh73a0.c
+++ b/arch/arm/mach-shmobile/setup-sh73a0.c
@@ -1035,7 +1035,6 @@ DT_MACHINE_START(SH73A0_DT, "Generic SH73A0 (Flattened Device Tree)")
.map_io = sh73a0_map_io,
.init_early = sh73a0_init_delay,
.nr_irqs = NR_IRQS_LEGACY,
- .init_irq = irqchip_init,
.init_machine = sh73a0_add_standard_devices_dt,
.init_time = shmobile_timer_init,
.dt_compat = sh73a0_boards_compat_dt,
diff --git a/arch/arm/mach-spear/spear1310.c b/arch/arm/mach-spear/spear1310.c
index ed3b5c2..673783f 100644
--- a/arch/arm/mach-spear/spear1310.c
+++ b/arch/arm/mach-spear/spear1310.c
@@ -88,7 +88,6 @@ 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 = irqchip_init,
.init_time = spear13xx_timer_init,
.init_machine = spear1310_dt_init,
.restart = spear_restart,
diff --git a/arch/arm/mach-spear/spear1340.c b/arch/arm/mach-spear/spear1340.c
index 75e3864..ea78f93 100644
--- a/arch/arm/mach-spear/spear1340.c
+++ b/arch/arm/mach-spear/spear1340.c
@@ -185,7 +185,6 @@ 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 = irqchip_init,
.init_time = spear13xx_timer_init,
.init_machine = spear1340_dt_init,
.restart = spear_restart,
diff --git a/arch/arm/mach-spear/spear300.c b/arch/arm/mach-spear/spear300.c
index bac56e8..185b9ba 100644
--- a/arch/arm/mach-spear/spear300.c
+++ b/arch/arm/mach-spear/spear300.c
@@ -212,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 = irqchip_init,
.init_time = spear3xx_timer_init,
.init_machine = spear300_dt_init,
.restart = spear_restart,
diff --git a/arch/arm/mach-spear/spear310.c b/arch/arm/mach-spear/spear310.c
index 6ffbc63..ebc07e6 100644
--- a/arch/arm/mach-spear/spear310.c
+++ b/arch/arm/mach-spear/spear310.c
@@ -254,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 = irqchip_init,
.init_time = spear3xx_timer_init,
.init_machine = spear310_dt_init,
.restart = spear_restart,
diff --git a/arch/arm/mach-spear/spear320.c b/arch/arm/mach-spear/spear320.c
index 6eb3eec..1fa4929 100644
--- a/arch/arm/mach-spear/spear320.c
+++ b/arch/arm/mach-spear/spear320.c
@@ -269,7 +269,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 = irqchip_init,
.init_time = spear3xx_timer_init,
.init_machine = spear320_dt_init,
.restart = spear_restart,
diff --git a/arch/arm/mach-spear/spear6xx.c b/arch/arm/mach-spear/spear6xx.c
index ec8eefb..0359f2e 100644
--- a/arch/arm/mach-spear/spear6xx.c
+++ b/arch/arm/mach-spear/spear6xx.c
@@ -423,7 +423,6 @@ static const char *spear600_dt_board_compat[] = {
DT_MACHINE_START(SPEAR600_DT, "ST SPEAr600 (Flattened Device Tree)")
.map_io = spear6xx_map_io,
- .init_irq = irqchip_init,
.init_time = spear6xx_timer_init,
.init_machine = spear600_dt_init,
.restart = spear_restart,
diff --git a/arch/arm/mach-vexpress/v2m.c b/arch/arm/mach-vexpress/v2m.c
index d0ad789..bc1493d 100644
--- a/arch/arm/mach-vexpress/v2m.c
+++ b/arch/arm/mach-vexpress/v2m.c
@@ -478,7 +478,6 @@ 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 = irqchip_init,
.init_time = v2m_dt_timer_init,
.init_machine = v2m_dt_init,
.restart = vexpress_restart,
diff --git a/arch/arm/mach-virt/virt.c b/arch/arm/mach-virt/virt.c
index 31666f6..6c1c46e 100644
--- a/arch/arm/mach-virt/virt.c
+++ b/arch/arm/mach-virt/virt.c
@@ -46,7 +46,6 @@ static const char *virt_dt_match[] = {
extern struct smp_operations virt_smp_ops;
DT_MACHINE_START(VIRT, "Dummy Virtual Machine")
- .init_irq = irqchip_init,
.init_time = virt_timer_init,
.init_machine = virt_init,
.smp = smp_ops(virt_smp_ops),
diff --git a/arch/arm/mach-zynq/common.c b/arch/arm/mach-zynq/common.c
index 5c89832..23b2d54 100644
--- a/arch/arm/mach-zynq/common.c
+++ b/arch/arm/mach-zynq/common.c
@@ -97,7 +97,6 @@ static const char *xilinx_dt_match[] = {
MACHINE_START(XILINX_EP107, "Xilinx Zynq Platform")
.map_io = xilinx_map_io,
- .init_irq = irqchip_init,
.init_machine = xilinx_init_machine,
.init_time = xilinx_zynq_timer_init,
.dt_compat = xilinx_dt_match,
--
1.7.10.4
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 2/2] ARM: remove mach .init_irq for irqchip_init users
2013-03-28 9:41 ` [PATCH 2/2] ARM: remove mach .init_irq for irqchip_init users Maxime Ripard
@ 2013-03-28 12:42 ` Simon Horman
2013-03-28 18:24 ` Maxime Ripard
0 siblings, 1 reply; 17+ messages in thread
From: Simon Horman @ 2013-03-28 12:42 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, Mar 28, 2013 at 10:41:44AM +0100, Maxime Ripard wrote:
> Now that the arm core code calls irqchip_init, we can remove it from all
> the machines that were using it.
>
> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> ---
> arch/arm/mach-bcm/board_bcm.c | 1 -
> arch/arm/mach-msm/board-dt-8660.c | 1 -
> arch/arm/mach-msm/board-dt-8960.c | 1 -
> arch/arm/mach-nomadik/cpu-8815.c | 1 -
> arch/arm/mach-picoxcell/common.c | 1 -
> arch/arm/mach-prima2/common.c | 1 -
> arch/arm/mach-shmobile/board-kzm9g-reference.c | 1 -
> arch/arm/mach-shmobile/setup-emev2.c | 1 -
> arch/arm/mach-shmobile/setup-sh73a0.c | 1 -
> arch/arm/mach-spear/spear1310.c | 1 -
> arch/arm/mach-spear/spear1340.c | 1 -
> arch/arm/mach-spear/spear300.c | 1 -
> arch/arm/mach-spear/spear310.c | 1 -
> arch/arm/mach-spear/spear320.c | 1 -
> arch/arm/mach-spear/spear6xx.c | 1 -
> arch/arm/mach-vexpress/v2m.c | 1 -
> arch/arm/mach-virt/virt.c | 1 -
> arch/arm/mach-zynq/common.c | 1 -
> 18 files changed, 18 deletions(-)
mach-shmobile portion:
Acked-by: Simon Horman <horms+renesas@verge.net.au>
I have some new users of this queued up for v3.10.
How should we handle that?
In particular:
arch/arm/mach-shmobile/setup-r8a73a4.c
arch/arm/mach-shmobile/intc-r8a7779.c
arch/arm/mach-shmobile/setup-r8a7778.c
You can find these in the renesas-next-20130328 tag of
my renesas tree on kernel.org. They are or will soon
be in linux-next.
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 1/2] ARM: irq: Call irqchit_init if no init_irq function is specified
2013-03-28 9:41 ` [PATCH 1/2] ARM: irq: Call irqchit_init if no init_irq function is specified Maxime Ripard
@ 2013-03-28 14:48 ` Rob Herring
2013-03-28 14:51 ` Russell King - ARM Linux
0 siblings, 1 reply; 17+ messages in thread
From: Rob Herring @ 2013-03-28 14:48 UTC (permalink / raw)
To: linux-arm-kernel
On 03/28/2013 04:41 AM, Maxime Ripard wrote:
> More and more sub-architectures are using only the irqchip_init
> function. Make the core code call this function if no init_irq field is
> provided in the machine description to remove some boilerplate code.
>
> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> ---
> arch/arm/kernel/irq.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c
> index 8e4ef4c..df6f9a1 100644
> --- a/arch/arm/kernel/irq.c
> +++ b/arch/arm/kernel/irq.c
> @@ -26,6 +26,7 @@
> #include <linux/ioport.h>
> #include <linux/interrupt.h>
> #include <linux/irq.h>
> +#include <linux/irqchip.h>
> #include <linux/random.h>
> #include <linux/smp.h>
> #include <linux/init.h>
> @@ -114,7 +115,10 @@ EXPORT_SYMBOL_GPL(set_irq_flags);
>
> void __init init_IRQ(void)
> {
> - machine_desc->init_irq();
> + if (machine_desc->init_irq)
> + machine_desc->init_irq();
> + else
> + irqchip_init();
There needs to be an empty version defined for !OF.
Rob
> }
>
> #ifdef CONFIG_MULTI_IRQ_HANDLER
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 1/2] ARM: irq: Call irqchit_init if no init_irq function is specified
2013-03-28 14:48 ` Rob Herring
@ 2013-03-28 14:51 ` Russell King - ARM Linux
2013-03-28 15:25 ` Arnd Bergmann
2013-03-28 18:40 ` Rob Herring
0 siblings, 2 replies; 17+ messages in thread
From: Russell King - ARM Linux @ 2013-03-28 14:51 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, Mar 28, 2013 at 09:48:18AM -0500, Rob Herring wrote:
> On 03/28/2013 04:41 AM, Maxime Ripard wrote:
> > + if (machine_desc->init_irq)
> > + machine_desc->init_irq();
> > + else
> > + irqchip_init();
>
> There needs to be an empty version defined for !OF.
Better:
#ifdef CONFIG_OF
if (!machine_desc->init_irq)
irqchip_init();
else
#endif
machine_desc->init_irq();
which means we don't even get the test if !OF, and if someone mistakenly
sets this to NULL for a !OF platform, they get to know about it.
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 1/2] ARM: irq: Call irqchit_init if no init_irq function is specified
2013-03-28 14:51 ` Russell King - ARM Linux
@ 2013-03-28 15:25 ` Arnd Bergmann
2013-03-28 15:36 ` Russell King - ARM Linux
2013-03-28 18:40 ` Rob Herring
1 sibling, 1 reply; 17+ messages in thread
From: Arnd Bergmann @ 2013-03-28 15:25 UTC (permalink / raw)
To: linux-arm-kernel
On Thursday 28 March 2013, Russell King - ARM Linux wrote:
> Better:
>
> #ifdef CONFIG_OF
> if (!machine_desc->init_irq)
> irqchip_init();
> else
> #endif
> machine_desc->init_irq();
>
> which means we don't even get the test if !OF, and if someone mistakenly
> sets this to NULL for a !OF platform, they get to know about it.
Right. With the new IS_DEFINED() macro, we could even turn this into
if (IS_DEFINED(CONFIG_OF) && !machine_desc->init_irq)
irqchip_init();
else
machine_desc->init_irq();
to the same effect.
Arnd
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 1/2] ARM: irq: Call irqchit_init if no init_irq function is specified
2013-03-28 15:25 ` Arnd Bergmann
@ 2013-03-28 15:36 ` Russell King - ARM Linux
2013-03-28 15:49 ` Arnd Bergmann
0 siblings, 1 reply; 17+ messages in thread
From: Russell King - ARM Linux @ 2013-03-28 15:36 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, Mar 28, 2013 at 03:25:42PM +0000, Arnd Bergmann wrote:
> On Thursday 28 March 2013, Russell King - ARM Linux wrote:
> > Better:
> >
> > #ifdef CONFIG_OF
> > if (!machine_desc->init_irq)
> > irqchip_init();
> > else
> > #endif
> > machine_desc->init_irq();
> >
> > which means we don't even get the test if !OF, and if someone mistakenly
> > sets this to NULL for a !OF platform, they get to know about it.
>
> Right. With the new IS_DEFINED() macro, we could even turn this into
>
> if (IS_DEFINED(CONFIG_OF) && !machine_desc->init_irq)
> irqchip_init();
> else
> machine_desc->init_irq();
>
> to the same effect.
Provided irqchip_init() keeps its prototype visible, then yes.
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 1/2] ARM: irq: Call irqchit_init if no init_irq function is specified
2013-03-28 15:36 ` Russell King - ARM Linux
@ 2013-03-28 15:49 ` Arnd Bergmann
2013-03-28 18:20 ` Maxime Ripard
0 siblings, 1 reply; 17+ messages in thread
From: Arnd Bergmann @ 2013-03-28 15:49 UTC (permalink / raw)
To: linux-arm-kernel
On Thursday 28 March 2013, Russell King - ARM Linux wrote:
> On Thu, Mar 28, 2013 at 03:25:42PM +0000, Arnd Bergmann wrote:
> > if (IS_DEFINED(CONFIG_OF) && !machine_desc->init_irq)
> > irqchip_init();
> > else
> > machine_desc->init_irq();
> >
> > to the same effect.
>
> Provided irqchip_init() keeps its prototype visible, then yes.
Yes, I checked that before my reply. We have a few function declarations
that are unfortunately completely hidden when some config symbol is not
defined, but this is not one of them.
Arnd
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 1/2] ARM: irq: Call irqchit_init if no init_irq function is specified
2013-03-28 15:49 ` Arnd Bergmann
@ 2013-03-28 18:20 ` Maxime Ripard
0 siblings, 0 replies; 17+ messages in thread
From: Maxime Ripard @ 2013-03-28 18:20 UTC (permalink / raw)
To: linux-arm-kernel
Le 28/03/2013 16:49, Arnd Bergmann a ?crit :
> On Thursday 28 March 2013, Russell King - ARM Linux wrote:
>> On Thu, Mar 28, 2013 at 03:25:42PM +0000, Arnd Bergmann wrote:
>>> if (IS_DEFINED(CONFIG_OF) && !machine_desc->init_irq)
>>> irqchip_init();
>>> else
>>> machine_desc->init_irq();
>>>
>>> to the same effect.
>>
>> Provided irqchip_init() keeps its prototype visible, then yes.
>
> Yes, I checked that before my reply. We have a few function declarations
> that are unfortunately completely hidden when some config symbol is not
> defined, but this is not one of them.
I'll send a v2 with the suggested change.
Thanks!
Maxime
--
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 2/2] ARM: remove mach .init_irq for irqchip_init users
2013-03-28 12:42 ` Simon Horman
@ 2013-03-28 18:24 ` Maxime Ripard
2013-03-29 3:48 ` Simon Horman
0 siblings, 1 reply; 17+ messages in thread
From: Maxime Ripard @ 2013-03-28 18:24 UTC (permalink / raw)
To: linux-arm-kernel
Hi Simon,
Le 28/03/2013 13:42, Simon Horman a ?crit :
> On Thu, Mar 28, 2013 at 10:41:44AM +0100, Maxime Ripard wrote:
>> Now that the arm core code calls irqchip_init, we can remove it from all
>> the machines that were using it.
>>
>> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
>> ---
>> arch/arm/mach-bcm/board_bcm.c | 1 -
>> arch/arm/mach-msm/board-dt-8660.c | 1 -
>> arch/arm/mach-msm/board-dt-8960.c | 1 -
>> arch/arm/mach-nomadik/cpu-8815.c | 1 -
>> arch/arm/mach-picoxcell/common.c | 1 -
>> arch/arm/mach-prima2/common.c | 1 -
>> arch/arm/mach-shmobile/board-kzm9g-reference.c | 1 -
>> arch/arm/mach-shmobile/setup-emev2.c | 1 -
>> arch/arm/mach-shmobile/setup-sh73a0.c | 1 -
>> arch/arm/mach-spear/spear1310.c | 1 -
>> arch/arm/mach-spear/spear1340.c | 1 -
>> arch/arm/mach-spear/spear300.c | 1 -
>> arch/arm/mach-spear/spear310.c | 1 -
>> arch/arm/mach-spear/spear320.c | 1 -
>> arch/arm/mach-spear/spear6xx.c | 1 -
>> arch/arm/mach-vexpress/v2m.c | 1 -
>> arch/arm/mach-virt/virt.c | 1 -
>> arch/arm/mach-zynq/common.c | 1 -
>> 18 files changed, 18 deletions(-)
>
> mach-shmobile portion:
>
> Acked-by: Simon Horman <horms+renesas@verge.net.au>
Thanks!
>
> I have some new users of this queued up for v3.10.
> How should we handle that?
Since the old behaviour is preserved, I guess it doesn't matter much,
and one of us can always make a followup patch on top of these patches.
Maxime
--
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 1/2] ARM: irq: Call irqchit_init if no init_irq function is specified
2013-03-28 14:51 ` Russell King - ARM Linux
2013-03-28 15:25 ` Arnd Bergmann
@ 2013-03-28 18:40 ` Rob Herring
2013-03-28 19:02 ` Russell King - ARM Linux
1 sibling, 1 reply; 17+ messages in thread
From: Rob Herring @ 2013-03-28 18:40 UTC (permalink / raw)
To: linux-arm-kernel
On 03/28/2013 09:51 AM, Russell King - ARM Linux wrote:
> On Thu, Mar 28, 2013 at 09:48:18AM -0500, Rob Herring wrote:
>> On 03/28/2013 04:41 AM, Maxime Ripard wrote:
>>> + if (machine_desc->init_irq)
>>> + machine_desc->init_irq();
>>> + else
>>> + irqchip_init();
>>
>> There needs to be an empty version defined for !OF.
>
> Better:
>
> #ifdef CONFIG_OF
> if (!machine_desc->init_irq)
> irqchip_init();
> else
> #endif
Or the new style:
if (IS_ENABLED(CONFIG_OF) && !machine_desc->init_irq)
irqchip_init();
else
That needs the empty version, but handles your case.
Rob
> machine_desc->init_irq();
>
> which means we don't even get the test if !OF, and if someone mistakenly
> sets this to NULL for a !OF platform, they get to know about it.
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 1/2] ARM: irq: Call irqchit_init if no init_irq function is specified
2013-03-28 18:40 ` Rob Herring
@ 2013-03-28 19:02 ` Russell King - ARM Linux
0 siblings, 0 replies; 17+ messages in thread
From: Russell King - ARM Linux @ 2013-03-28 19:02 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, Mar 28, 2013 at 01:40:09PM -0500, Rob Herring wrote:
> On 03/28/2013 09:51 AM, Russell King - ARM Linux wrote:
> > On Thu, Mar 28, 2013 at 09:48:18AM -0500, Rob Herring wrote:
> >> On 03/28/2013 04:41 AM, Maxime Ripard wrote:
> >>> + if (machine_desc->init_irq)
> >>> + machine_desc->init_irq();
> >>> + else
> >>> + irqchip_init();
> >>
> >> There needs to be an empty version defined for !OF.
> >
> > Better:
> >
> > #ifdef CONFIG_OF
> > if (!machine_desc->init_irq)
> > irqchip_init();
> > else
> > #endif
>
> Or the new style:
>
> if (IS_ENABLED(CONFIG_OF) && !machine_desc->init_irq)
> irqchip_init();
> else
>
> That needs the empty version, but handles your case.
It shouldn't need the empty version at all - because the compiler should
optimize the "true" case away entirely.
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 1/2] ARM: irq: Call irqchit_init if no init_irq function is specified
2013-03-28 20:46 [PATCHv2 0/2] ARM: Remove boilerplate irqchip_init code Maxime Ripard
@ 2013-03-28 20:46 ` Maxime Ripard
2013-03-28 22:52 ` Rob Herring
2013-04-02 18:23 ` Olof Johansson
0 siblings, 2 replies; 17+ messages in thread
From: Maxime Ripard @ 2013-03-28 20:46 UTC (permalink / raw)
To: linux-arm-kernel
More and more sub-architectures are using only the irqchip_init
function. Make the core code call this function if no init_irq field is
provided in the machine description to remove some boilerplate code.
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
---
arch/arm/kernel/irq.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c
index 8e4ef4c..9723d17 100644
--- a/arch/arm/kernel/irq.c
+++ b/arch/arm/kernel/irq.c
@@ -26,6 +26,7 @@
#include <linux/ioport.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
+#include <linux/irqchip.h>
#include <linux/random.h>
#include <linux/smp.h>
#include <linux/init.h>
@@ -114,7 +115,10 @@ EXPORT_SYMBOL_GPL(set_irq_flags);
void __init init_IRQ(void)
{
- machine_desc->init_irq();
+ if (IS_ENABLED(CONFIG_OF) && !machine_desc->init_irq)
+ irqchip_init();
+ else
+ machine_desc->init_irq();
}
#ifdef CONFIG_MULTI_IRQ_HANDLER
--
1.7.10.4
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 1/2] ARM: irq: Call irqchit_init if no init_irq function is specified
2013-03-28 20:46 ` [PATCH 1/2] ARM: irq: Call irqchit_init if no init_irq function is specified Maxime Ripard
@ 2013-03-28 22:52 ` Rob Herring
2013-04-02 18:23 ` Olof Johansson
1 sibling, 0 replies; 17+ messages in thread
From: Rob Herring @ 2013-03-28 22:52 UTC (permalink / raw)
To: linux-arm-kernel
On 03/28/2013 03:46 PM, Maxime Ripard wrote:
> More and more sub-architectures are using only the irqchip_init
> function. Make the core code call this function if no init_irq field is
> provided in the machine description to remove some boilerplate code.
>
> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Acked-by: Rob Herring <rob.herring@calxeda.com>
> ---
> arch/arm/kernel/irq.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c
> index 8e4ef4c..9723d17 100644
> --- a/arch/arm/kernel/irq.c
> +++ b/arch/arm/kernel/irq.c
> @@ -26,6 +26,7 @@
> #include <linux/ioport.h>
> #include <linux/interrupt.h>
> #include <linux/irq.h>
> +#include <linux/irqchip.h>
> #include <linux/random.h>
> #include <linux/smp.h>
> #include <linux/init.h>
> @@ -114,7 +115,10 @@ EXPORT_SYMBOL_GPL(set_irq_flags);
>
> void __init init_IRQ(void)
> {
> - machine_desc->init_irq();
> + if (IS_ENABLED(CONFIG_OF) && !machine_desc->init_irq)
> + irqchip_init();
> + else
> + machine_desc->init_irq();
> }
>
> #ifdef CONFIG_MULTI_IRQ_HANDLER
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 2/2] ARM: remove mach .init_irq for irqchip_init users
2013-03-28 18:24 ` Maxime Ripard
@ 2013-03-29 3:48 ` Simon Horman
0 siblings, 0 replies; 17+ messages in thread
From: Simon Horman @ 2013-03-29 3:48 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, Mar 28, 2013 at 07:24:02PM +0100, Maxime Ripard wrote:
> Hi Simon,
>
> Le 28/03/2013 13:42, Simon Horman a ?crit :
> > On Thu, Mar 28, 2013 at 10:41:44AM +0100, Maxime Ripard wrote:
> >> Now that the arm core code calls irqchip_init, we can remove it from all
> >> the machines that were using it.
> >>
> >> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> >> ---
> >> arch/arm/mach-bcm/board_bcm.c | 1 -
> >> arch/arm/mach-msm/board-dt-8660.c | 1 -
> >> arch/arm/mach-msm/board-dt-8960.c | 1 -
> >> arch/arm/mach-nomadik/cpu-8815.c | 1 -
> >> arch/arm/mach-picoxcell/common.c | 1 -
> >> arch/arm/mach-prima2/common.c | 1 -
> >> arch/arm/mach-shmobile/board-kzm9g-reference.c | 1 -
> >> arch/arm/mach-shmobile/setup-emev2.c | 1 -
> >> arch/arm/mach-shmobile/setup-sh73a0.c | 1 -
> >> arch/arm/mach-spear/spear1310.c | 1 -
> >> arch/arm/mach-spear/spear1340.c | 1 -
> >> arch/arm/mach-spear/spear300.c | 1 -
> >> arch/arm/mach-spear/spear310.c | 1 -
> >> arch/arm/mach-spear/spear320.c | 1 -
> >> arch/arm/mach-spear/spear6xx.c | 1 -
> >> arch/arm/mach-vexpress/v2m.c | 1 -
> >> arch/arm/mach-virt/virt.c | 1 -
> >> arch/arm/mach-zynq/common.c | 1 -
> >> 18 files changed, 18 deletions(-)
> >
> > mach-shmobile portion:
> >
> > Acked-by: Simon Horman <horms+renesas@verge.net.au>
>
> Thanks!
>
> >
> > I have some new users of this queued up for v3.10.
> > How should we handle that?
>
> Since the old behaviour is preserved, I guess it doesn't matter much,
> and one of us can always make a followup patch on top of these patches.
Ok, sound good.
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 1/2] ARM: irq: Call irqchit_init if no init_irq function is specified
2013-03-28 20:46 ` [PATCH 1/2] ARM: irq: Call irqchit_init if no init_irq function is specified Maxime Ripard
2013-03-28 22:52 ` Rob Herring
@ 2013-04-02 18:23 ` Olof Johansson
1 sibling, 0 replies; 17+ messages in thread
From: Olof Johansson @ 2013-04-02 18:23 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, Mar 28, 2013 at 09:46:44PM +0100, Maxime Ripard wrote:
> More and more sub-architectures are using only the irqchip_init
> function. Make the core code call this function if no init_irq field is
> provided in the machine description to remove some boilerplate code.
>
> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Applied to next/cleanup (fixed the typo in the subject though :).
I'm trying to figure out how to best apply 2/2 without causing a lot of
merge conflicts. It might make sense to either do it late in the merge
window or stage it at the base of 3.11 cleanup. I'll revisit after I've
dealt with the rest of the pull request queue.
-Olof
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2013-04-02 18:23 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-28 9:41 [PATCH 0/2] ARM: Remove boilerplate irqchip_init code Maxime Ripard
2013-03-28 9:41 ` [PATCH 1/2] ARM: irq: Call irqchit_init if no init_irq function is specified Maxime Ripard
2013-03-28 14:48 ` Rob Herring
2013-03-28 14:51 ` Russell King - ARM Linux
2013-03-28 15:25 ` Arnd Bergmann
2013-03-28 15:36 ` Russell King - ARM Linux
2013-03-28 15:49 ` Arnd Bergmann
2013-03-28 18:20 ` Maxime Ripard
2013-03-28 18:40 ` Rob Herring
2013-03-28 19:02 ` Russell King - ARM Linux
2013-03-28 9:41 ` [PATCH 2/2] ARM: remove mach .init_irq for irqchip_init users Maxime Ripard
2013-03-28 12:42 ` Simon Horman
2013-03-28 18:24 ` Maxime Ripard
2013-03-29 3:48 ` Simon Horman
-- strict thread matches above, loose matches on Subject: below --
2013-03-28 20:46 [PATCHv2 0/2] ARM: Remove boilerplate irqchip_init code Maxime Ripard
2013-03-28 20:46 ` [PATCH 1/2] ARM: irq: Call irqchit_init if no init_irq function is specified Maxime Ripard
2013-03-28 22:52 ` Rob Herring
2013-04-02 18:23 ` Olof Johansson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).