[MIPS] IP27: Fix collision with hardcoded interrupt number.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
@@ -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)
|
|||||||
}
|
}
|
||||||
#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)
|
|||||||
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)
|
||||||
|
|||||||
Reference in New Issue
Block a user