diff options
author | Shawn Guo <shawn.guo@linaro.org> | 2012-06-28 02:42:08 -0400 |
---|---|---|
committer | Shawn Guo <shawn.guo@linaro.org> | 2012-07-01 09:59:19 -0400 |
commit | bc89663aa5c7ca620f58c34ab531ca409119becc (patch) | |
tree | af249454a1660849004f1beb26eeccddba61ba2f /arch/arm | |
parent | 1ee8f65b5689504b98dacb6641fc8b2cc5618ad4 (diff) |
ARM: fiq: change FIQ_START to a variable
The commit a2be01b (ARM: only include mach/irqs.h for !SPARSE_IRQ)
makes mach/irqs.h only be included for !SPARSE_IRQ build. There are
a nubmer of platforms have FIQ_START defined in mach/irqs.h for FIQ
support.
arch/arm/mach-rpc/include/mach/irqs.h:#define FIQ_START 64
arch/arm/mach-s3c24xx/include/mach/irqs.h:#define FIQ_START IRQ_EINT0
arch/arm/plat-mxc/include/mach/irqs.h:#define FIQ_START 0
If SPARSE_IRQ is enabled for any of these platforms, the following
compile error will be seen.
arch/arm/kernel/fiq.c: In function ‘enable_fiq’:
arch/arm/kernel/fiq.c:127:19: error: ‘FIQ_START’ undeclared (first use in this function)
arch/arm/kernel/fiq.c:127:19: note: each undeclared identifier is reported only once for each function it appears in
arch/arm/kernel/fiq.c: In function ‘disable_fiq’:
arch/arm/kernel/fiq.c:132:20: error: ‘FIQ_START’ undeclared (first use in this function)
The patch changes fiq code to have init_FIQ take FIQ_START from
platforms as a parameter and assign it to variable fiq_start which
is to replace FIQ_START uses in enable_fiq/disable_fiq.
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Cc: Kukjin Kim <kgene.kim@samsung.com>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Cc: Rob Herring <rob.herring@calxeda.com>
Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/include/asm/mach/irq.h | 2 | ||||
-rw-r--r-- | arch/arm/kernel/fiq.c | 9 | ||||
-rw-r--r-- | arch/arm/mach-rpc/irq.c | 2 | ||||
-rw-r--r-- | arch/arm/plat-mxc/avic.c | 2 | ||||
-rw-r--r-- | arch/arm/plat-mxc/tzic.c | 2 | ||||
-rw-r--r-- | arch/arm/plat-s3c24xx/irq.c | 2 |
6 files changed, 11 insertions, 8 deletions
diff --git a/arch/arm/include/asm/mach/irq.h b/arch/arm/include/asm/mach/irq.h index febe495d0c6e..15cb035309f7 100644 --- a/arch/arm/include/asm/mach/irq.h +++ b/arch/arm/include/asm/mach/irq.h | |||
@@ -17,7 +17,7 @@ struct seq_file; | |||
17 | /* | 17 | /* |
18 | * This is internal. Do not use it. | 18 | * This is internal. Do not use it. |
19 | */ | 19 | */ |
20 | extern void init_FIQ(void); | 20 | extern void init_FIQ(int); |
21 | extern int show_fiq_list(struct seq_file *, int); | 21 | extern int show_fiq_list(struct seq_file *, int); |
22 | 22 | ||
23 | #ifdef CONFIG_MULTI_IRQ_HANDLER | 23 | #ifdef CONFIG_MULTI_IRQ_HANDLER |
diff --git a/arch/arm/kernel/fiq.c b/arch/arm/kernel/fiq.c index c32f8456aa09..2adda11f712f 100644 --- a/arch/arm/kernel/fiq.c +++ b/arch/arm/kernel/fiq.c | |||
@@ -122,14 +122,16 @@ void release_fiq(struct fiq_handler *f) | |||
122 | while (current_fiq->fiq_op(current_fiq->dev_id, 0)); | 122 | while (current_fiq->fiq_op(current_fiq->dev_id, 0)); |
123 | } | 123 | } |
124 | 124 | ||
125 | static int fiq_start; | ||
126 | |||
125 | void enable_fiq(int fiq) | 127 | void enable_fiq(int fiq) |
126 | { | 128 | { |
127 | enable_irq(fiq + FIQ_START); | 129 | enable_irq(fiq + fiq_start); |
128 | } | 130 | } |
129 | 131 | ||
130 | void disable_fiq(int fiq) | 132 | void disable_fiq(int fiq) |
131 | { | 133 | { |
132 | disable_irq(fiq + FIQ_START); | 134 | disable_irq(fiq + fiq_start); |
133 | } | 135 | } |
134 | 136 | ||
135 | EXPORT_SYMBOL(set_fiq_handler); | 137 | EXPORT_SYMBOL(set_fiq_handler); |
@@ -140,7 +142,8 @@ EXPORT_SYMBOL(release_fiq); | |||
140 | EXPORT_SYMBOL(enable_fiq); | 142 | EXPORT_SYMBOL(enable_fiq); |
141 | EXPORT_SYMBOL(disable_fiq); | 143 | EXPORT_SYMBOL(disable_fiq); |
142 | 144 | ||
143 | void __init init_FIQ(void) | 145 | void __init init_FIQ(int start) |
144 | { | 146 | { |
145 | no_fiq_insn = *(unsigned long *)0xffff001c; | 147 | no_fiq_insn = *(unsigned long *)0xffff001c; |
148 | fiq_start = start; | ||
146 | } | 149 | } |
diff --git a/arch/arm/mach-rpc/irq.c b/arch/arm/mach-rpc/irq.c index cf0e669eaf1a..3e4fa849c64d 100644 --- a/arch/arm/mach-rpc/irq.c +++ b/arch/arm/mach-rpc/irq.c | |||
@@ -163,6 +163,6 @@ void __init rpc_init_irq(void) | |||
163 | } | 163 | } |
164 | } | 164 | } |
165 | 165 | ||
166 | init_FIQ(); | 166 | init_FIQ(FIQ_START); |
167 | } | 167 | } |
168 | 168 | ||
diff --git a/arch/arm/plat-mxc/avic.c b/arch/arm/plat-mxc/avic.c index e612cc1edede..f3d671ff7f1b 100644 --- a/arch/arm/plat-mxc/avic.c +++ b/arch/arm/plat-mxc/avic.c | |||
@@ -217,7 +217,7 @@ void __init mxc_init_irq(void __iomem *irqbase) | |||
217 | 217 | ||
218 | #ifdef CONFIG_FIQ | 218 | #ifdef CONFIG_FIQ |
219 | /* Initialize FIQ */ | 219 | /* Initialize FIQ */ |
220 | init_FIQ(); | 220 | init_FIQ(FIQ_START); |
221 | #endif | 221 | #endif |
222 | 222 | ||
223 | printk(KERN_INFO "MXC IRQ initialized\n"); | 223 | printk(KERN_INFO "MXC IRQ initialized\n"); |
diff --git a/arch/arm/plat-mxc/tzic.c b/arch/arm/plat-mxc/tzic.c index abc90e4116f5..c60a7e416385 100644 --- a/arch/arm/plat-mxc/tzic.c +++ b/arch/arm/plat-mxc/tzic.c | |||
@@ -192,7 +192,7 @@ void __init tzic_init_irq(void __iomem *irqbase) | |||
192 | 192 | ||
193 | #ifdef CONFIG_FIQ | 193 | #ifdef CONFIG_FIQ |
194 | /* Initialize FIQ */ | 194 | /* Initialize FIQ */ |
195 | init_FIQ(); | 195 | init_FIQ(FIQ_START); |
196 | #endif | 196 | #endif |
197 | 197 | ||
198 | pr_info("TrustZone Interrupt Controller (TZIC) initialized\n"); | 198 | pr_info("TrustZone Interrupt Controller (TZIC) initialized\n"); |
diff --git a/arch/arm/plat-s3c24xx/irq.c b/arch/arm/plat-s3c24xx/irq.c index bc42c04091fd..fe57bbbf166b 100644 --- a/arch/arm/plat-s3c24xx/irq.c +++ b/arch/arm/plat-s3c24xx/irq.c | |||
@@ -533,7 +533,7 @@ void __init s3c24xx_init_irq(void) | |||
533 | int i; | 533 | int i; |
534 | 534 | ||
535 | #ifdef CONFIG_FIQ | 535 | #ifdef CONFIG_FIQ |
536 | init_FIQ(); | 536 | init_FIQ(FIQ_START); |
537 | #endif | 537 | #endif |
538 | 538 | ||
539 | irqdbf("s3c2410_init_irq: clearing interrupt status flags\n"); | 539 | irqdbf("s3c2410_init_irq: clearing interrupt status flags\n"); |