Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 66266f4a authored by Jamie Iles's avatar Jamie Iles Committed by Marc Zyngier
Browse files

ARM: spear: convert to MULTI_IRQ_HANDLER



Now that there is a generic IRQ handler for multiple VIC devices use it
for spear to help building multi platform kernels.

Acked-by: default avatarViresh Kumar <viresh.kumar@st.com>
Cc: Rajeev Kumar <rajeev-dlh.kumar@st.com>
Signed-off-by: default avatarJamie Iles <jamie@jamieiles.com>
parent 774b51f8
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -955,6 +955,7 @@ config PLAT_SPEAR
	select CLKSRC_MMIO
	select CLKSRC_MMIO
	select GENERIC_CLOCKEVENTS
	select GENERIC_CLOCKEVENTS
	select HAVE_CLK
	select HAVE_CLK
	select MULTI_IRQ_HANDLER
	help
	help
	  Support for ST's SPEAr platform (SPEAr3xx, SPEAr6xx and SPEAr13xx).
	  Support for ST's SPEAr platform (SPEAr3xx, SPEAr6xx and SPEAr13xx).


+0 −27
Original line number Original line Diff line number Diff line
@@ -11,35 +11,8 @@
 * warranty of any kind, whether express or implied.
 * warranty of any kind, whether express or implied.
 */
 */


#include <asm/hardware/vic.h>
#include <mach/hardware.h>

		.macro	disable_fiq
		.macro	disable_fiq
		.endm
		.endm


		.macro	get_irqnr_preamble, base, tmp
		.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
		ldr	\base, =VA_SPEAR3XX_ML1_VIC_BASE
		ldr	\irqstat, [\base, #VIC_IRQ_STATUS]	@ get status
		teq	\irqstat, #0
		beq	1001f				@ this will set/reset
							@ zero register
		/*
		 * Following code will find bit position of least significang
		 * bit set in irqstat, using following equation
		 * least significant bit set in n = (n & ~(n-1))
		 */
		sub	\tmp, \irqstat, #1		@ tmp = irqstat - 1
		mvn	\tmp, \tmp			@ tmp = ~tmp
		and	\irqstat, \irqstat, \tmp	@ irqstat &= tmp
		/* Now, irqstat is = bit no. of 1st bit set in vic irq status */
		clz	\tmp, \irqstat			@ tmp = leading zeros
		rsb	\irqnr, \tmp, #0x1F		@ irqnr = 32 - tmp - 1

1001:		/* EQ will be set if no irqs pending */
		.endm
+2 −0
Original line number Original line Diff line number Diff line
@@ -11,6 +11,7 @@
 * warranty of any kind, whether express or implied.
 * warranty of any kind, whether express or implied.
 */
 */


#include <asm/hardware/vic.h>
#include <asm/mach/arch.h>
#include <asm/mach/arch.h>
#include <asm/mach-types.h>
#include <asm/mach-types.h>
#include <mach/generic.h>
#include <mach/generic.h>
@@ -67,6 +68,7 @@ MACHINE_START(SPEAR300, "ST-SPEAR300-EVB")
	.atag_offset	=	0x100,
	.atag_offset	=	0x100,
	.map_io		=	spear3xx_map_io,
	.map_io		=	spear3xx_map_io,
	.init_irq	=	spear3xx_init_irq,
	.init_irq	=	spear3xx_init_irq,
	.handle_irq	=	vic_handle_irq,
	.timer		=	&spear3xx_timer,
	.timer		=	&spear3xx_timer,
	.init_machine	=	spear300_evb_init,
	.init_machine	=	spear300_evb_init,
MACHINE_END
MACHINE_END
+2 −0
Original line number Original line Diff line number Diff line
@@ -11,6 +11,7 @@
 * warranty of any kind, whether express or implied.
 * warranty of any kind, whether express or implied.
 */
 */


#include <asm/hardware/vic.h>
#include <asm/mach/arch.h>
#include <asm/mach/arch.h>
#include <asm/mach-types.h>
#include <asm/mach-types.h>
#include <mach/generic.h>
#include <mach/generic.h>
@@ -73,6 +74,7 @@ MACHINE_START(SPEAR310, "ST-SPEAR310-EVB")
	.atag_offset	=	0x100,
	.atag_offset	=	0x100,
	.map_io		=	spear3xx_map_io,
	.map_io		=	spear3xx_map_io,
	.init_irq	=	spear3xx_init_irq,
	.init_irq	=	spear3xx_init_irq,
	.handle_irq	=	vic_handle_irq,
	.timer		=	&spear3xx_timer,
	.timer		=	&spear3xx_timer,
	.init_machine	=	spear310_evb_init,
	.init_machine	=	spear310_evb_init,
MACHINE_END
MACHINE_END
+2 −0
Original line number Original line Diff line number Diff line
@@ -11,6 +11,7 @@
 * warranty of any kind, whether express or implied.
 * warranty of any kind, whether express or implied.
 */
 */


#include <asm/hardware/vic.h>
#include <asm/mach/arch.h>
#include <asm/mach/arch.h>
#include <asm/mach-types.h>
#include <asm/mach-types.h>
#include <mach/generic.h>
#include <mach/generic.h>
@@ -71,6 +72,7 @@ MACHINE_START(SPEAR320, "ST-SPEAR320-EVB")
	.atag_offset	=	0x100,
	.atag_offset	=	0x100,
	.map_io		=	spear3xx_map_io,
	.map_io		=	spear3xx_map_io,
	.init_irq	=	spear3xx_init_irq,
	.init_irq	=	spear3xx_init_irq,
	.handle_irq	=	vic_handle_irq,
	.timer		=	&spear3xx_timer,
	.timer		=	&spear3xx_timer,
	.init_machine	=	spear320_evb_init,
	.init_machine	=	spear320_evb_init,
MACHINE_END
MACHINE_END
Loading