[PATCH 3/4] cris: convert arch-v32 away from __do_IRQ

From: Kyle McMartin
Date: Fri Oct 15 2010 - 00:05:33 EST


Again, since the caller of do_IRQ and crisv32_do_multiple are
masking and unmasking the relevant interrupts for us, it looks
like handle_simple_irq is appropriate here as well.

Also, remove a pile of unneeded handlers since the defaults will
be fine (or because they're tested for NULL already.)

Signed-off-by: Kyle McMartin <kyle@xxxxxxxxxx>
---
arch/cris/arch-v32/kernel/irq.c | 53 +++++++++------------------------
arch/cris/include/arch-v32/arch/irq.h | 4 +-
2 files changed, 16 insertions(+), 41 deletions(-)

diff --git a/arch/cris/arch-v32/kernel/irq.c b/arch/cris/arch-v32/kernel/irq.c
index 4c78afd..6fab3f5 100644
--- a/arch/cris/arch-v32/kernel/irq.c
+++ b/arch/cris/arch-v32/kernel/irq.c
@@ -277,7 +277,7 @@ out:
return cpu;
}

-void crisv32_mask_irq(int irq)
+void crisv32_mask_irq(unsigned int irq)
{
int cpu;

@@ -285,41 +285,11 @@ void crisv32_mask_irq(int irq)
block_irq(irq, cpu);
}

-void crisv32_unmask_irq(int irq)
+void crisv32_unmask_irq(unsigned int irq)
{
unblock_irq(irq, irq_cpu(irq));
}

-
-static unsigned int startup_crisv32_irq(unsigned int irq)
-{
- crisv32_unmask_irq(irq);
- return 0;
-}
-
-static void shutdown_crisv32_irq(unsigned int irq)
-{
- crisv32_mask_irq(irq);
-}
-
-static void enable_crisv32_irq(unsigned int irq)
-{
- crisv32_unmask_irq(irq);
-}
-
-static void disable_crisv32_irq(unsigned int irq)
-{
- crisv32_mask_irq(irq);
-}
-
-static void ack_crisv32_irq(unsigned int irq)
-{
-}
-
-static void end_crisv32_irq(unsigned int irq)
-{
-}
-
int set_affinity_crisv32_irq(unsigned int irq, const struct cpumask *dest)
{
unsigned long flags;
@@ -330,14 +300,16 @@ int set_affinity_crisv32_irq(unsigned int irq, const struct cpumask *dest)
return 0;
}

+static void crisv32_noop(unsigned int irq)
+{
+}
+
static struct irq_chip crisv32_irq_type = {
.name = "CRISv32",
- .startup = startup_crisv32_irq,
- .shutdown = shutdown_crisv32_irq,
- .enable = enable_crisv32_irq,
- .disable = disable_crisv32_irq,
- .ack = ack_crisv32_irq,
- .end = end_crisv32_irq,
+ .mask = crisv32_mask_irq,
+ .disable = crisv32_mask_irq,
+ .unmask = crisv32_unmask_irq,
+ .ack = crisv32_noop,
.set_affinity = set_affinity_crisv32_irq
};

@@ -472,15 +444,18 @@ init_IRQ(void)

/* Point all IRQ's to bad handlers. */
for (i = FIRST_IRQ, j = 0; j < NR_IRQS; i++, j++) {
- set_irq_chip_and_handler(j, &crisv32_irq_type, cris_do_IRQ);
+ set_irq_chip_and_handler(j, &crisv32_irq_type,
+ handle_simple_irq);
set_exception_vector(i, interrupt[j]);
}

/* Mark Timer and IPI IRQs as CPU local */
irq_allocations[TIMER0_INTR_VECT - FIRST_IRQ].cpu = CPU_FIXED;
irq_desc[TIMER0_INTR_VECT].status |= IRQ_PER_CPU;
+ set_irq_handler(TIMER0_INTR_VECT, handle_percpu_irq);
irq_allocations[IPI_INTR_VECT - FIRST_IRQ].cpu = CPU_FIXED;
irq_desc[IPI_INTR_VECT].status |= IRQ_PER_CPU;
+ set_irq_handler(IPI_INTR_VECT, handle_percpu_irq);

set_exception_vector(0x00, nmi_interrupt);
set_exception_vector(0x30, multiple_interrupt);
diff --git a/arch/cris/include/arch-v32/arch/irq.h b/arch/cris/include/arch-v32/arch/irq.h
index b31e998..fbe5d43 100644
--- a/arch/cris/include/arch-v32/arch/irq.h
+++ b/arch/cris/include/arch-v32/arch/irq.h
@@ -23,8 +23,8 @@ struct etrax_interrupt_vector {

extern struct etrax_interrupt_vector *etrax_irv; /* head.S */

-void crisv32_mask_irq(int irq);
-void crisv32_unmask_irq(int irq);
+void crisv32_mask_irq(unsigned int irq);
+void crisv32_unmask_irq(unsigned int irq);

void set_exception_vector(int n, irqvectptr addr);

--
1.7.3.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/