aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/sysdev/mpic.c
diff options
context:
space:
mode:
authorKumar Gala <galak@kernel.crashing.org>2008-05-21 16:59:23 -0400
committerPaul Mackerras <paulus@samba.org>2008-05-23 01:27:26 -0400
commit475ca391b490a683d66bf19999a8a7a24913f139 (patch)
treee7818dcd25169b9d9c9ed35723b3cafd2be455fd /arch/powerpc/sysdev/mpic.c
parent2ca7633dc73405ee775a2e9b7961b47a38bc882d (diff)
[POWERPC] mpic: Deal with bogus NIRQ in Feature Reporting Register
Some chips (like the SoCs from Freescale) report the wrong value in NIRQ and this causes issues if its doesn't match or exceed the value of irq_count. Add a flag that board code can set to just use irq_count instead of FRR[NIRQ]. Eventually we'll add a device tree property with the number of sources. Signed-off-by: Kumar Gala <galak@kernel.crashing.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/sysdev/mpic.c')
-rw-r--r--arch/powerpc/sysdev/mpic.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
index 8619f2a3f1f..466e2183e86 100644
--- a/arch/powerpc/sysdev/mpic.c
+++ b/arch/powerpc/sysdev/mpic.c
@@ -1144,9 +1144,12 @@ struct mpic * __init mpic_alloc(struct device_node *node,
1144 mpic->num_cpus = ((greg_feature & MPIC_GREG_FEATURE_LAST_CPU_MASK) 1144 mpic->num_cpus = ((greg_feature & MPIC_GREG_FEATURE_LAST_CPU_MASK)
1145 >> MPIC_GREG_FEATURE_LAST_CPU_SHIFT) + 1; 1145 >> MPIC_GREG_FEATURE_LAST_CPU_SHIFT) + 1;
1146 if (isu_size == 0) 1146 if (isu_size == 0)
1147 mpic->num_sources = 1147 if (flags & MPIC_BROKEN_FRR_NIRQS)
1148 ((greg_feature & MPIC_GREG_FEATURE_LAST_SRC_MASK) 1148 mpic->num_sources = mpic->irq_count;
1149 >> MPIC_GREG_FEATURE_LAST_SRC_SHIFT) + 1; 1149 else
1150 mpic->num_sources =
1151 ((greg_feature & MPIC_GREG_FEATURE_LAST_SRC_MASK)
1152 >> MPIC_GREG_FEATURE_LAST_SRC_SHIFT) + 1;
1150 1153
1151 /* Map the per-CPU registers */ 1154 /* Map the per-CPU registers */
1152 for (i = 0; i < mpic->num_cpus; i++) { 1155 for (i = 0; i < mpic->num_cpus; i++) {