dect
/
linux-2.6
Archived
13
0
Fork 0

[MIPS] IP27: Fix collision with hardcoded interrupt number.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
Ralf Baechle 2006-06-16 17:10:49 +02:00
parent 0307e8d024
commit 3c0094426f
2 changed files with 60 additions and 3 deletions

View File

@ -360,7 +360,7 @@ static struct hw_interrupt_type bridge_irq_type = {
static unsigned long irq_map[NR_IRQS / BITS_PER_LONG];
static int allocate_irqno(void)
int allocate_irqno(void)
{
int irq;

View File

@ -89,11 +89,13 @@ static int set_rtc_mmss(unsigned long nowtime)
}
#endif
static unsigned int rt_timer_irq;
void ip27_rt_timer_interrupt(struct pt_regs *regs)
{
int cpu = smp_processor_id();
int cpuA = cputoslice(cpu) == 0;
int irq = 9; /* XXX Assign number */
unsigned int irq = rt_timer_irq;
irq_enter();
write_seqlock(&xtime_lock);
@ -179,13 +181,68 @@ static __init unsigned long get_m48t35_time(void)
return mktime(year, month, date, hour, min, sec);
}
static void startup_rt_irq(unsigned int irq)
{
}
static void shutdown_rt_irq(unsigned int irq)
{
}
static void enable_rt_irq(unsigned int irq)
{
}
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 hw_interrupt_type 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,
.end = end_rt_irq,
};
static struct irqaction rt_irqaction = {
.handler = ip27_rt_timer_interrupt,
.flags = SA_INTERRUPT,
.mask = CPU_MASK_NONE,
.name = "timer"
};
extern int allocate_irqno(void);
static void ip27_timer_setup(struct irqaction *irq)
{
int irqno = allocate_irqno();
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].handler = &rt_irq_type;
/* over-write the handler, we use our own way */
irq->handler = no_action;
/* setup irqaction */
// setup_irq(IP27_TIMER_IRQ, irq); /* XXX Can't do this yet. */
irq_desc[irqno].status |= IRQ_PER_CPU;
rt_timer_irq = irqno;
}
void __init ip27_time_init(void)