Commit 11ca25aa authored by Ralf Baechle's avatar Ralf Baechle

[MIPS] Sibyte: Delete {sb1250,bcm1480}_steal_irq().

They break the timer interrupt initialization and only seem to be a kludge
for initialization happening in the wrong order.  Further testing done by
Thiemo confirms the suspicion that the other invocations also seem to have
useless.
Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent 229f773e
...@@ -280,27 +280,6 @@ static struct irqaction bcm1480_dummy_action = { ...@@ -280,27 +280,6 @@ static struct irqaction bcm1480_dummy_action = {
.dev_id = 0 .dev_id = 0
}; };
int bcm1480_steal_irq(int irq)
{
struct irq_desc *desc = irq_desc + irq;
unsigned long flags;
int retval = 0;
if (irq >= BCM1480_NR_IRQS)
return -EINVAL;
spin_lock_irqsave(&desc->lock, flags);
/* Don't allow sharing at all for these */
if (desc->action != NULL)
retval = -EBUSY;
else {
desc->action = &bcm1480_dummy_action;
desc->depth = 0;
}
spin_unlock_irqrestore(&desc->lock, flags);
return 0;
}
/* /*
* init_IRQ is called early in the boot sequence from init/main.c. It * init_IRQ is called early in the boot sequence from init/main.c. It
* is responsible for setting up the interrupt mapper and installing the * is responsible for setting up the interrupt mapper and installing the
...@@ -386,8 +365,6 @@ void __init arch_init_irq(void) ...@@ -386,8 +365,6 @@ void __init arch_init_irq(void)
__raw_writeq(tmp, IOADDR(A_BCM1480_IMR_REGISTER(cpu, R_BCM1480_IMR_INTERRUPT_MASK_L))); __raw_writeq(tmp, IOADDR(A_BCM1480_IMR_REGISTER(cpu, R_BCM1480_IMR_INTERRUPT_MASK_L)));
} }
bcm1480_steal_irq(K_BCM1480_INT_MBOX_0_0);
/* /*
* Note that the timer interrupts are also mapped, but this is * Note that the timer interrupts are also mapped, but this is
* done in bcm1480_time_init(). Also, the profiling driver * done in bcm1480_time_init(). Also, the profiling driver
...@@ -411,7 +388,6 @@ void __init arch_init_irq(void) ...@@ -411,7 +388,6 @@ void __init arch_init_irq(void)
/* QQQ FIXME */ /* QQQ FIXME */
__raw_writeq(M_DUART_IMR_BRK, IO_SPACE_BASE + A_DUART_IMRREG(kgdb_port)); __raw_writeq(M_DUART_IMR_BRK, IO_SPACE_BASE + A_DUART_IMRREG(kgdb_port));
bcm1480_steal_irq(kgdb_irq);
__raw_writeq(IMR_IP6_VAL, __raw_writeq(IMR_IP6_VAL,
IO_SPACE_BASE + A_BCM1480_IMR_REGISTER(0, R_BCM1480_IMR_INTERRUPT_MAP_BASE_H) + IO_SPACE_BASE + A_BCM1480_IMR_REGISTER(0, R_BCM1480_IMR_INTERRUPT_MAP_BASE_H) +
(kgdb_irq<<3)); (kgdb_irq<<3));
......
...@@ -37,8 +37,6 @@ ...@@ -37,8 +37,6 @@
#define IMR_IP3_VAL K_BCM1480_INT_MAP_I1 #define IMR_IP3_VAL K_BCM1480_INT_MAP_I1
#define IMR_IP4_VAL K_BCM1480_INT_MAP_I2 #define IMR_IP4_VAL K_BCM1480_INT_MAP_I2
extern int bcm1480_steal_irq(int irq);
/* /*
* The general purpose timer ticks at 1MHz independent if * The general purpose timer ticks at 1MHz independent if
* the rest of the system * the rest of the system
...@@ -142,7 +140,6 @@ void __cpuinit sb1480_clockevent_init(void) ...@@ -142,7 +140,6 @@ void __cpuinit sb1480_clockevent_init(void)
R_BCM1480_IMR_INTERRUPT_MAP_BASE_H) + (irq << 3))); R_BCM1480_IMR_INTERRUPT_MAP_BASE_H) + (irq << 3)));
bcm1480_unmask_irq(cpu, irq); bcm1480_unmask_irq(cpu, irq);
bcm1480_steal_irq(irq);
action->handler = sibyte_counter_handler; action->handler = sibyte_counter_handler;
action->flags = IRQF_DISABLED | IRQF_PERCPU; action->flags = IRQF_DISABLED | IRQF_PERCPU;
......
...@@ -250,27 +250,6 @@ static struct irqaction sb1250_dummy_action = { ...@@ -250,27 +250,6 @@ static struct irqaction sb1250_dummy_action = {
.dev_id = 0 .dev_id = 0
}; };
int sb1250_steal_irq(int irq)
{
struct irq_desc *desc = irq_desc + irq;
unsigned long flags;
int retval = 0;
if (irq >= SB1250_NR_IRQS)
return -EINVAL;
spin_lock_irqsave(&desc->lock, flags);
/* Don't allow sharing at all for these */
if (desc->action != NULL)
retval = -EBUSY;
else {
desc->action = &sb1250_dummy_action;
desc->depth = 0;
}
spin_unlock_irqrestore(&desc->lock, flags);
return 0;
}
/* /*
* arch_init_irq is called early in the boot sequence from init/main.c via * arch_init_irq is called early in the boot sequence from init/main.c via
* init_IRQ. It is responsible for setting up the interrupt mapper and * init_IRQ. It is responsible for setting up the interrupt mapper and
...@@ -342,8 +321,6 @@ void __init arch_init_irq(void) ...@@ -342,8 +321,6 @@ void __init arch_init_irq(void)
__raw_writeq(tmp, IOADDR(A_IMR_REGISTER(0, R_IMR_INTERRUPT_MASK))); __raw_writeq(tmp, IOADDR(A_IMR_REGISTER(0, R_IMR_INTERRUPT_MASK)));
__raw_writeq(tmp, IOADDR(A_IMR_REGISTER(1, R_IMR_INTERRUPT_MASK))); __raw_writeq(tmp, IOADDR(A_IMR_REGISTER(1, R_IMR_INTERRUPT_MASK)));
sb1250_steal_irq(K_INT_MBOX_0);
/* /*
* Note that the timer interrupts are also mapped, but this is * Note that the timer interrupts are also mapped, but this is
* done in sb1250_time_init(). Also, the profiling driver * done in sb1250_time_init(). Also, the profiling driver
...@@ -367,7 +344,6 @@ void __init arch_init_irq(void) ...@@ -367,7 +344,6 @@ void __init arch_init_irq(void)
__raw_writeq(M_DUART_IMR_BRK, __raw_writeq(M_DUART_IMR_BRK,
IOADDR(A_DUART_IMRREG(kgdb_port))); IOADDR(A_DUART_IMRREG(kgdb_port)));
sb1250_steal_irq(kgdb_irq);
__raw_writeq(IMR_IP6_VAL, __raw_writeq(IMR_IP6_VAL,
IOADDR(A_IMR_REGISTER(0, IOADDR(A_IMR_REGISTER(0,
R_IMR_INTERRUPT_MAP_BASE) + R_IMR_INTERRUPT_MAP_BASE) +
......
...@@ -50,8 +50,6 @@ ...@@ -50,8 +50,6 @@
#define SB1250_HPT_VALUE M_SCD_TIMER_CNT /* max value */ #define SB1250_HPT_VALUE M_SCD_TIMER_CNT /* max value */
extern int sb1250_steal_irq(int irq);
/* /*
* The general purpose timer ticks at 1 Mhz independent if * The general purpose timer ticks at 1 Mhz independent if
* the rest of the system * the rest of the system
...@@ -159,7 +157,6 @@ void __cpuinit sb1250_clockevent_init(void) ...@@ -159,7 +157,6 @@ void __cpuinit sb1250_clockevent_init(void)
cd->cpumask = cpumask_of_cpu(0); cd->cpumask = cpumask_of_cpu(0);
sb1250_unmask_irq(cpu, irq); sb1250_unmask_irq(cpu, irq);
sb1250_steal_irq(irq);
action->handler = sibyte_counter_handler; action->handler = sibyte_counter_handler;
action->flags = IRQF_DISABLED | IRQF_PERCPU; action->flags = IRQF_DISABLED | IRQF_PERCPU;
......
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