ARM: nomadik: convert to MULTI_IRQ_HANDLER
Now that there is a generic IRQ handler for multiple VIC devices use it for nomadik to help building multi platform kernels. Cc: Alessandro Rubini <rubini@unipv.it> Acked-by: Linus Walleij <linus.walleij@linaro.org> Cc: STEricsson <STEricsson_nomadik_linux@list.st.com> Tested-by: Thomas Abraham <thomas.abraham@linaro.org> Signed-off-by: Jamie Iles <jamie@jamieiles.com>
This commit is contained in:
parent
14f127bada
commit
42ab530454
|
@ -917,6 +917,7 @@ config ARCH_NOMADIK
|
||||||
select CLKDEV_LOOKUP
|
select CLKDEV_LOOKUP
|
||||||
select GENERIC_CLOCKEVENTS
|
select GENERIC_CLOCKEVENTS
|
||||||
select ARCH_REQUIRE_GPIOLIB
|
select ARCH_REQUIRE_GPIOLIB
|
||||||
|
select MULTI_IRQ_HANDLER
|
||||||
help
|
help
|
||||||
Support for the Nomadik platform by ST-Ericsson
|
Support for the Nomadik platform by ST-Ericsson
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include <linux/mtd/onenand.h>
|
#include <linux/mtd/onenand.h>
|
||||||
#include <linux/mtd/partitions.h>
|
#include <linux/mtd/partitions.h>
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
|
#include <asm/hardware/vic.h>
|
||||||
#include <asm/sizes.h>
|
#include <asm/sizes.h>
|
||||||
#include <asm/mach-types.h>
|
#include <asm/mach-types.h>
|
||||||
#include <asm/mach/arch.h>
|
#include <asm/mach/arch.h>
|
||||||
|
@ -280,6 +281,7 @@ MACHINE_START(NOMADIK, "NHK8815")
|
||||||
.atag_offset = 0x100,
|
.atag_offset = 0x100,
|
||||||
.map_io = cpu8815_map_io,
|
.map_io = cpu8815_map_io,
|
||||||
.init_irq = cpu8815_init_irq,
|
.init_irq = cpu8815_init_irq,
|
||||||
|
.handle_irq = vic_handle_irq,
|
||||||
.timer = &nomadik_timer,
|
.timer = &nomadik_timer,
|
||||||
.init_machine = nhk8815_platform_init,
|
.init_machine = nhk8815_platform_init,
|
||||||
MACHINE_END
|
MACHINE_END
|
||||||
|
|
|
@ -6,38 +6,8 @@
|
||||||
* warranty of any kind, whether express or implied.
|
* warranty of any kind, whether express or implied.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <mach/hardware.h>
|
|
||||||
#include <mach/irqs.h>
|
|
||||||
|
|
||||||
.macro disable_fiq
|
.macro disable_fiq
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro get_irqnr_preamble, base, tmp
|
|
||||||
ldr \base, =IO_ADDRESS(NOMADIK_IC_BASE)
|
|
||||||
.endm
|
|
||||||
|
|
||||||
.macro arch_ret_to_user, tmp1, tmp2
|
.macro arch_ret_to_user, tmp1, tmp2
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro get_irqnr_and_base, irqnr, irqstat, base, tmp
|
|
||||||
|
|
||||||
/* This stanza gets the irq mask from one of two status registers */
|
|
||||||
mov \irqnr, #0
|
|
||||||
ldr \irqstat, [\base, #VIC_REG_IRQSR0] @ get masked status
|
|
||||||
cmp \irqstat, #0
|
|
||||||
bne 1001f
|
|
||||||
add \irqnr, \irqnr, #32
|
|
||||||
ldr \irqstat, [\base, #VIC_REG_IRQSR1] @ get masked status
|
|
||||||
|
|
||||||
1001: tst \irqstat, #15
|
|
||||||
bne 1002f
|
|
||||||
add \irqnr, \irqnr, #4
|
|
||||||
movs \irqstat, \irqstat, lsr #4
|
|
||||||
bne 1001b
|
|
||||||
1002: tst \irqstat, #1
|
|
||||||
bne 1003f
|
|
||||||
add \irqnr, \irqnr, #1
|
|
||||||
movs \irqstat, \irqstat, lsr #1
|
|
||||||
bne 1002b
|
|
||||||
1003: /* EQ will be set if no irqs pending */
|
|
||||||
.endm
|
|
||||||
|
|
Loading…
Reference in New Issue