Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

[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
Loading
Loading
Loading
Loading
+0 −24
Original line number Original line Diff line number Diff line
@@ -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)
		__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)
		/* 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));
+0 −3
Original line number Original line Diff line number Diff line
@@ -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)
			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;
+0 −24
Original line number Original line Diff line number Diff line
@@ -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)
	__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)
		__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) +
+0 −3
Original line number Original line Diff line number Diff line
@@ -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)
	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;