diff options
Diffstat (limited to 'arch/powerpc/sysdev/mpic.c')
| -rw-r--r-- | arch/powerpc/sysdev/mpic.c | 38 | 
1 files changed, 19 insertions, 19 deletions
| diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c index 0e166ed4cd16..8209744b2829 100644 --- a/arch/powerpc/sysdev/mpic.c +++ b/arch/powerpc/sysdev/mpic.c @@ -886,25 +886,25 @@ int mpic_set_irq_type(struct irq_data *d, unsigned int flow_type)  	/* Default: read HW settings */  	if (flow_type == IRQ_TYPE_DEFAULT) { -		switch(vold & (MPIC_INFO(VECPRI_POLARITY_MASK) | -			       MPIC_INFO(VECPRI_SENSE_MASK))) { -			case MPIC_INFO(VECPRI_SENSE_EDGE) | -			     MPIC_INFO(VECPRI_POLARITY_POSITIVE): -				flow_type = IRQ_TYPE_EDGE_RISING; -				break; -			case MPIC_INFO(VECPRI_SENSE_EDGE) | -			     MPIC_INFO(VECPRI_POLARITY_NEGATIVE): -				flow_type = IRQ_TYPE_EDGE_FALLING; -				break; -			case MPIC_INFO(VECPRI_SENSE_LEVEL) | -			     MPIC_INFO(VECPRI_POLARITY_POSITIVE): -				flow_type = IRQ_TYPE_LEVEL_HIGH; -				break; -			case MPIC_INFO(VECPRI_SENSE_LEVEL) | -			     MPIC_INFO(VECPRI_POLARITY_NEGATIVE): -				flow_type = IRQ_TYPE_LEVEL_LOW; -				break; -		} +		int vold_ps; + +		vold_ps = vold & (MPIC_INFO(VECPRI_POLARITY_MASK) | +				  MPIC_INFO(VECPRI_SENSE_MASK)); + +		if (vold_ps == (MPIC_INFO(VECPRI_SENSE_EDGE) | +				MPIC_INFO(VECPRI_POLARITY_POSITIVE))) +			flow_type = IRQ_TYPE_EDGE_RISING; +		else if	(vold_ps == (MPIC_INFO(VECPRI_SENSE_EDGE) | +				     MPIC_INFO(VECPRI_POLARITY_NEGATIVE))) +			flow_type = IRQ_TYPE_EDGE_FALLING; +		else if (vold_ps == (MPIC_INFO(VECPRI_SENSE_LEVEL) | +				     MPIC_INFO(VECPRI_POLARITY_POSITIVE))) +			flow_type = IRQ_TYPE_LEVEL_HIGH; +		else if (vold_ps == (MPIC_INFO(VECPRI_SENSE_LEVEL) | +				     MPIC_INFO(VECPRI_POLARITY_NEGATIVE))) +			flow_type = IRQ_TYPE_LEVEL_LOW; +		else +			WARN_ONCE(1, "mpic: unknown IRQ type %d\n", vold);  	}  	/* Apply to irq desc */ |