On 08/31/2017 01:52 AM, Michael Ellerman wrote: > Hi Gregory, > > Gregory Fong <[email protected]> writes: >> Hi all, >> >> In arch/powerpc/sysdev/mpic.c , it looks like IRQ_TYPE_EDGE_BOTH is >> handled the same way as IRQ_TYPE_EDGE_FALLING: >> >> static unsigned int mpic_type_to_vecpri(struct mpic *mpic, unsigned int type) >> { >> /* Now convert sense value */ >> switch(type & IRQ_TYPE_SENSE_MASK) { >> case IRQ_TYPE_EDGE_RISING: >> return MPIC_INFO(VECPRI_SENSE_EDGE) | >> MPIC_INFO(VECPRI_POLARITY_POSITIVE); >> case IRQ_TYPE_EDGE_FALLING: >> case IRQ_TYPE_EDGE_BOTH: >> return MPIC_INFO(VECPRI_SENSE_EDGE) | >> MPIC_INFO(VECPRI_POLARITY_NEGATIVE); >> case IRQ_TYPE_LEVEL_HIGH: >> return MPIC_INFO(VECPRI_SENSE_LEVEL) | >> MPIC_INFO(VECPRI_POLARITY_POSITIVE); >> case IRQ_TYPE_LEVEL_LOW: >> default: >> return MPIC_INFO(VECPRI_SENSE_LEVEL) | >> MPIC_INFO(VECPRI_POLARITY_NEGATIVE); >> } >> } >> >> If IRQ_TYPE_EDGE_BOTH is unsupported, shouldn't we be returning an >> error, instead of silently setting to use IRQ_TYPE_EDGE_FALLING? >> Something like the following (sorry if the diff wraps weirdly, on >> webmail at the moment): > > I don't know this code so I asked Ben and he said something like > "PowerMacs never use BOTH, so it hasn't mattered, but Freescale machines > might".
IIRC, the mpic in freescale MPICs the interrupts are either low or high, so not both. There's a bit which controls the interrupt polarity which selects if the interrupt triggers on high-to-low or low-to-high. So i guess it doesn't matter on freescale machines too. --- Best Regards, Laurentiu

