|
@@ -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 */
|