[RFC PATCH 05/10] sh: intc: remove dependency on NR_IRQS
From: Nobuhiro Iwamatsu <hidden>
Date: 2012-01-17 01:54:20
Also in:
linux-sh
Hi, 2012/1/14 Rob Herring [off-list ref]:
quoted hunk ↗ jump to hunk
From: Rob Herring <redacted> SH intc has a compile time dependency on NR_IRQS. Make this dependency a local define so that shmobile (and ARM in general) can have run-time NR_IRQS setting. SH has NR_IRQS set to 512 and shmobile has NR_IRQS set to 1024, so we are using the maximum. Signed-off-by: Rob Herring <redacted> --- ?drivers/sh/intc/balancing.c | ? ?2 +- ?drivers/sh/intc/core.c ? ? ?| ? ?2 +- ?drivers/sh/intc/handle.c ? ?| ? ?2 +- ?drivers/sh/intc/internals.h | ? ?9 +++++++++ ?drivers/sh/intc/virq.c ? ? ?| ? ?2 +- ?5 files changed, 13 insertions(+), 4 deletions(-)diff --git a/drivers/sh/intc/balancing.c b/drivers/sh/intc/balancing.c index cec7a96..bc78080 100644 --- a/drivers/sh/intc/balancing.c +++ b/drivers/sh/intc/balancing.c@@ -9,7 +9,7 @@?*/ ?#include "internals.h" -static unsigned long dist_handle[NR_IRQS]; +static unsigned long dist_handle[INTC_NR_IRQS]; ?void intc_balancing_enable(unsigned int irq) ?{diff --git a/drivers/sh/intc/core.c b/drivers/sh/intc/core.c index e53e449..2fde897 100644 --- a/drivers/sh/intc/core.c +++ b/drivers/sh/intc/core.c@@ -42,7 +42,7 @@ unsigned int nr_intc_controllers;?* - this needs to be at least 2 for 5-bit priorities on 7780 ?*/ ?static unsigned int default_prio_level = 2; ? ?/* 2 - 16 */ -static unsigned int intc_prio_level[NR_IRQS]; ?/* for now */ +static unsigned int intc_prio_level[INTC_NR_IRQS]; ? ? /* for now */ ?unsigned int intc_get_dfl_prio_level(void) ?{diff --git a/drivers/sh/intc/handle.c b/drivers/sh/intc/handle.c index 057ce56..f461d53 100644 --- a/drivers/sh/intc/handle.c +++ b/drivers/sh/intc/handle.c@@ -13,7 +13,7 @@?#include <linux/spinlock.h> ?#include "internals.h" -static unsigned long ack_handle[NR_IRQS]; +static unsigned long ack_handle[INTC_NR_IRQS]; ?static intc_enum __init intc_grp_id(struct intc_desc *desc, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?intc_enum enum_id)diff --git a/drivers/sh/intc/internals.h b/drivers/sh/intc/internals.h index b0e9155..469f092 100644 --- a/drivers/sh/intc/internals.h +++ b/drivers/sh/intc/internals.h@@ -6,6 +6,15 @@?#include <linux/radix-tree.h> ?#include <linux/device.h> +#define INTC_NR_IRQS ? 1024
On SH, INTC_NR_IRQS ( NR_IRQS ) is using to by arch/sh/kernel/machvec.c. And, this is defined by arch/sh/include/asm/irq.h. You need to remove or rename from these.
+ +#ifndef evt2irq +#define evt2irq(evt) ? ? ? ? ? ?(((evt) >> 5) - 16) +#endif +#ifndef irq2evt +#define irq2evt(irq) ? ? ? ? ? ?(((irq) + 16) << 5) +#endif +
These are defined in arch/arm/mach-shmobile/include/mach/irqs.h and
arch/sh/include/asm/irq.h.
I propose that linux/sh_intc.h defines these.
Best regards,
Nobuhiro
--
Nobuhiro Iwamatsu
?? iwamatsu at {nigauri.org / debian.org}
?? GPG ID: 40AD1FA6