Commit 3c009442 authored by Ralf Baechle's avatar Ralf Baechle

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

Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent 0307e8d0
...@@ -360,7 +360,7 @@ static struct hw_interrupt_type bridge_irq_type = { ...@@ -360,7 +360,7 @@ static struct hw_interrupt_type bridge_irq_type = {
static unsigned long irq_map[NR_IRQS / BITS_PER_LONG]; static unsigned long irq_map[NR_IRQS / BITS_PER_LONG];
static int allocate_irqno(void) int allocate_irqno(void)
{ {
int irq; int irq;
......
...@@ -89,11 +89,13 @@ static int set_rtc_mmss(unsigned long nowtime) ...@@ -89,11 +89,13 @@ static int set_rtc_mmss(unsigned long nowtime)
} }
#endif #endif
static unsigned int rt_timer_irq;
void ip27_rt_timer_interrupt(struct pt_regs *regs) void ip27_rt_timer_interrupt(struct pt_regs *regs)
{ {
int cpu = smp_processor_id(); int cpu = smp_processor_id();
int cpuA = cputoslice(cpu) == 0; int cpuA = cputoslice(cpu) == 0;
int irq = 9; /* XXX Assign number */ unsigned int irq = rt_timer_irq;
irq_enter(); irq_enter();
write_seqlock(&xtime_lock); write_seqlock(&xtime_lock);
...@@ -179,13 +181,68 @@ static __init unsigned long get_m48t35_time(void) ...@@ -179,13 +181,68 @@ static __init unsigned long get_m48t35_time(void)
return mktime(year, month, date, hour, min, sec); 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) 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 */ /* over-write the handler, we use our own way */
irq->handler = no_action; irq->handler = no_action;
/* setup irqaction */ /* 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) void __init ip27_time_init(void)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment