Commit 475ca391 authored by Kumar Gala's avatar Kumar Gala Committed by Paul Mackerras
Browse files

[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: default avatarKumar Gala <galak@kernel.crashing.org>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent 2ca7633d
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -1144,6 +1144,9 @@ struct mpic * __init mpic_alloc(struct device_node *node,
	mpic->num_cpus = ((greg_feature & MPIC_GREG_FEATURE_LAST_CPU_MASK)
			  >> MPIC_GREG_FEATURE_LAST_CPU_SHIFT) + 1;
	if (isu_size == 0)
		if (flags & MPIC_BROKEN_FRR_NIRQS)
			mpic->num_sources = mpic->irq_count;
		else
			mpic->num_sources =
				((greg_feature & MPIC_GREG_FEATURE_LAST_SRC_MASK)
				 >> MPIC_GREG_FEATURE_LAST_SRC_SHIFT) + 1;
+2 −0
Original line number Diff line number Diff line
@@ -353,6 +353,8 @@ struct mpic
#define MPIC_ENABLE_MCK			0x00000200
/* Disable bias among target selection, spread interrupts evenly */
#define MPIC_NO_BIAS			0x00000400
/* Ignore NIRQS as reported by FRR */
#define MPIC_BROKEN_FRR_NIRQS		0x00000800

/* MPIC HW modification ID */
#define MPIC_REGSET_MASK		0xf0000000