Merge branch 'for-2.6.25' of git://git.kernel.org/pub/scm/linux/kernel/git/olof/pasemi
This commit is contained in:
@@ -83,6 +83,7 @@ static u32 mpic_infos[][MPIC_IDX_END] = {
|
||||
MPIC_CPU_WHOAMI,
|
||||
MPIC_CPU_INTACK,
|
||||
MPIC_CPU_EOI,
|
||||
MPIC_CPU_MCACK,
|
||||
|
||||
MPIC_IRQ_BASE,
|
||||
MPIC_IRQ_STRIDE,
|
||||
@@ -121,6 +122,7 @@ static u32 mpic_infos[][MPIC_IDX_END] = {
|
||||
TSI108_CPU_WHOAMI,
|
||||
TSI108_CPU_INTACK,
|
||||
TSI108_CPU_EOI,
|
||||
TSI108_CPU_MCACK,
|
||||
|
||||
TSI108_IRQ_BASE,
|
||||
TSI108_IRQ_STRIDE,
|
||||
@@ -1126,6 +1128,11 @@ struct mpic * __init mpic_alloc(struct device_node *node,
|
||||
mb();
|
||||
}
|
||||
|
||||
if (flags & MPIC_ENABLE_MCK)
|
||||
mpic_write(mpic->gregs, MPIC_INFO(GREG_GLOBAL_CONF_0),
|
||||
mpic_read(mpic->gregs, MPIC_INFO(GREG_GLOBAL_CONF_0))
|
||||
| MPIC_GREG_GCONF_MCK);
|
||||
|
||||
/* Read feature register, calculate num CPUs and, for non-ISU
|
||||
* MPICs, num sources as well. On ISU MPICs, sources are counted
|
||||
* as ISUs are added
|
||||
@@ -1272,6 +1279,11 @@ void __init mpic_init(struct mpic *mpic)
|
||||
mpic_read(mpic->gregs, MPIC_INFO(GREG_GLOBAL_CONF_0))
|
||||
| MPIC_GREG_GCONF_8259_PTHROU_DIS);
|
||||
|
||||
if (mpic->flags & MPIC_NO_BIAS)
|
||||
mpic_write(mpic->gregs, MPIC_INFO(GREG_GLOBAL_CONF_0),
|
||||
mpic_read(mpic->gregs, MPIC_INFO(GREG_GLOBAL_CONF_0))
|
||||
| MPIC_GREG_GCONF_NO_BIAS);
|
||||
|
||||
/* Set current processor priority to 0 */
|
||||
mpic_cpu_write(MPIC_INFO(CPU_CURRENT_TASK_PRI), 0);
|
||||
|
||||
@@ -1438,13 +1450,13 @@ void mpic_send_ipi(unsigned int ipi_no, unsigned int cpu_mask)
|
||||
mpic_physmask(cpu_mask & cpus_addr(cpu_online_map)[0]));
|
||||
}
|
||||
|
||||
unsigned int mpic_get_one_irq(struct mpic *mpic)
|
||||
static unsigned int _mpic_get_one_irq(struct mpic *mpic, int reg)
|
||||
{
|
||||
u32 src;
|
||||
|
||||
src = mpic_cpu_read(MPIC_INFO(CPU_INTACK)) & MPIC_INFO(VECPRI_VECTOR_MASK);
|
||||
src = mpic_cpu_read(reg) & MPIC_INFO(VECPRI_VECTOR_MASK);
|
||||
#ifdef DEBUG_LOW
|
||||
DBG("%s: get_one_irq(): %d\n", mpic->name, src);
|
||||
DBG("%s: get_one_irq(reg 0x%x): %d\n", mpic->name, reg, src);
|
||||
#endif
|
||||
if (unlikely(src == mpic->spurious_vec)) {
|
||||
if (mpic->flags & MPIC_SPV_EOI)
|
||||
@@ -1462,6 +1474,11 @@ unsigned int mpic_get_one_irq(struct mpic *mpic)
|
||||
return irq_linear_revmap(mpic->irqhost, src);
|
||||
}
|
||||
|
||||
unsigned int mpic_get_one_irq(struct mpic *mpic)
|
||||
{
|
||||
return _mpic_get_one_irq(mpic, MPIC_INFO(CPU_INTACK));
|
||||
}
|
||||
|
||||
unsigned int mpic_get_irq(void)
|
||||
{
|
||||
struct mpic *mpic = mpic_primary;
|
||||
@@ -1471,6 +1488,14 @@ unsigned int mpic_get_irq(void)
|
||||
return mpic_get_one_irq(mpic);
|
||||
}
|
||||
|
||||
unsigned int mpic_get_mcirq(void)
|
||||
{
|
||||
struct mpic *mpic = mpic_primary;
|
||||
|
||||
BUG_ON(mpic == NULL);
|
||||
|
||||
return _mpic_get_one_irq(mpic, MPIC_INFO(CPU_MCACK));
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
void mpic_request_ipis(void)
|
||||
|
||||
@@ -38,9 +38,6 @@ static inline int mpic_pasemi_msi_init(struct mpic *mpic)
|
||||
|
||||
extern int mpic_set_irq_type(unsigned int virq, unsigned int flow_type);
|
||||
extern void mpic_set_vector(unsigned int virq, unsigned int vector);
|
||||
extern void mpic_end_irq(unsigned int irq);
|
||||
extern void mpic_mask_irq(unsigned int irq);
|
||||
extern void mpic_unmask_irq(unsigned int irq);
|
||||
extern void mpic_set_affinity(unsigned int irq, cpumask_t cpumask);
|
||||
|
||||
#endif /* _POWERPC_SYSDEV_MPIC_H */
|
||||
|
||||
Reference in New Issue
Block a user