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

Commit 78cbaaca authored by Rob Herring's avatar Rob Herring
Browse files

ARM: rpc: make default fiq handler run-time installed



Only rpc uses disable_fiq macro. Change it to a run-time installed
default FIQ handler. The handler is installed before FIQ is enabled
so the behavior should be unchanged.

Signed-off-by: default avatarRob Herring <rob.herring@calxeda.com>
Acked-by: default avatarNicolas Pitre <nico@linaro.org>
parent 13a5045d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -4,7 +4,7 @@

# Object file lists.

obj-y			:= dma.o irq.o riscpc.o
obj-y			:= dma.o fiq.o irq.o riscpc.o
obj-m			:=
obj-n			:=
obj-			:=
+16 −0
Original line number Diff line number Diff line
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <mach/hardware.h>
#include <mach/entry-macro.S>

	.text

	.global	rpc_default_fiq_end
ENTRY(rpc_default_fiq_start)
	mov	r12, #ioc_base_high
	.if	ioc_base_low
	orr	r12, r12, #ioc_base_low
	.endif
	strb	r12, [r12, #0x38]	@ Disable FIQ register
	subs	pc, lr, #4
rpc_default_fiq_end:
+6 −0
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@
#include <asm/mach/irq.h>
#include <asm/hardware/iomd.h>
#include <asm/irq.h>
#include <asm/fiq.h>

static void iomd_ack_irq_a(struct irq_data *d)
{
@@ -112,6 +113,8 @@ static struct irq_chip iomd_fiq_chip = {
	.irq_unmask	= iomd_unmask_irq_fiq,
};

extern unsigned char rpc_default_fiq_start, rpc_default_fiq_end;

void __init rpc_init_irq(void)
{
	unsigned int irq, flags;
@@ -121,6 +124,9 @@ void __init rpc_init_irq(void)
	iomd_writeb(0, IOMD_FIQMASK);
	iomd_writeb(0, IOMD_DMAMASK);

	set_fiq_handler(&rpc_default_fiq_start,
		&rpc_default_fiq_end - &rpc_default_fiq_start);

	for (irq = 0; irq < NR_IRQS; irq++) {
		flags = IRQF_VALID;