[MIPS] IRQ cleanups
This is a big irq cleanup patch. * Use set_irq_chip() to register irq_chip. * Initialize .mask, .unmask, .mask_ack field. Functions for these method are already exist in most case. * Do not initialize .startup, .shutdown, .enable, .disable fields if default routines provided by irq_chip_set_defaults() were suitable. * Remove redundant irq_desc initializations. * Remove unnecessary local_irq_save/local_irq_restore, spin_lock. With this cleanup, it would be easy to switch to slightly lightwait irq flow handlers (handle_level_irq(), etc.) instead of __do_IRQ(). Though whole this patch is quite large, changes in each irq_chip are not quite simple. Please review and test on your platform. Thanks. Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp> Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
committed by
Ralf Baechle
parent
c87b6ebaea
commit
1603b5aca4
@@ -172,15 +172,6 @@ static __init unsigned long get_m48t35_time(void)
|
||||
return mktime(year, month, date, hour, min, sec);
|
||||
}
|
||||
|
||||
static unsigned int startup_rt_irq(unsigned int irq)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void shutdown_rt_irq(unsigned int irq)
|
||||
{
|
||||
}
|
||||
|
||||
static void enable_rt_irq(unsigned int irq)
|
||||
{
|
||||
}
|
||||
@@ -189,21 +180,16 @@ static void disable_rt_irq(unsigned int irq)
|
||||
{
|
||||
}
|
||||
|
||||
static void mask_and_ack_rt(unsigned int irq)
|
||||
{
|
||||
}
|
||||
|
||||
static void end_rt_irq(unsigned int irq)
|
||||
{
|
||||
}
|
||||
|
||||
static struct irq_chip rt_irq_type = {
|
||||
.typename = "SN HUB RT timer",
|
||||
.startup = startup_rt_irq,
|
||||
.shutdown = shutdown_rt_irq,
|
||||
.enable = enable_rt_irq,
|
||||
.disable = disable_rt_irq,
|
||||
.ack = mask_and_ack_rt,
|
||||
.ack = disable_rt_irq,
|
||||
.mask = disable_rt_irq,
|
||||
.mask_ack = disable_rt_irq,
|
||||
.unmask = enable_rt_irq,
|
||||
.end = end_rt_irq,
|
||||
};
|
||||
|
||||
@@ -221,10 +207,7 @@ void __init plat_timer_setup(struct irqaction *irq)
|
||||
if (irqno < 0)
|
||||
panic("Can't allocate interrupt number for timer interrupt");
|
||||
|
||||
irq_desc[irqno].status = IRQ_DISABLED;
|
||||
irq_desc[irqno].action = NULL;
|
||||
irq_desc[irqno].depth = 1;
|
||||
irq_desc[irqno].chip = &rt_irq_type;
|
||||
set_irq_chip(irqno, &rt_irq_type);
|
||||
|
||||
/* over-write the handler, we use our own way */
|
||||
irq->handler = no_action;
|
||||
|
Reference in New Issue
Block a user