From: Russ Dill <Russ.Dill@xxxxxx> If an overrun occurs, the threshold event is meaningless, handle the overrun event first. Signed-off-by: Russ Dill <Russ.Dill@xxxxxx> Signed-off-by: Zubair Lutfullah <zubair.lutfullah@xxxxxxxxx> --- drivers/iio/adc/ti_am335x_adc.c | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/drivers/iio/adc/ti_am335x_adc.c b/drivers/iio/adc/ti_am335x_adc.c index 1c47818..7ac28a9 100644 --- a/drivers/iio/adc/ti_am335x_adc.c +++ b/drivers/iio/adc/ti_am335x_adc.c @@ -167,7 +167,16 @@ static irqreturn_t tiadc_irq(int irq, void *private) unsigned int status, config; status = tiadc_readl(adc_dev, REG_IRQSTATUS); - if (status & IRQENB_FIFO1THRES) { + if (status & IRQENB_FIFO1OVRRUN) { + config = tiadc_readl(adc_dev, REG_CTRL); + config &= ~(CNTRLREG_TSCSSENB); + tiadc_writel(adc_dev, REG_CTRL, config); + tiadc_writel(adc_dev, REG_IRQSTATUS, + IRQENB_FIFO1OVRRUN | IRQENB_FIFO1UNDRFLW); + tiadc_writel(adc_dev, REG_CTRL, + (config | CNTRLREG_TSCSSENB)); + return IRQ_HANDLED; + } else if (status & IRQENB_FIFO1THRES) { tiadc_writel(adc_dev, REG_IRQCLR, IRQENB_FIFO1THRES); @@ -180,19 +189,6 @@ static irqreturn_t tiadc_irq(int irq, void *private) tiadc_writel(adc_dev, REG_IRQSTATUS, IRQENB_FIFO1THRES); return IRQ_HANDLED; - } else if ((status & IRQENB_FIFO1OVRRUN) || - (status & IRQENB_FIFO1UNDRFLW)) { - config = tiadc_readl(adc_dev, REG_CTRL); - config &= ~(CNTRLREG_TSCSSENB); - tiadc_writel(adc_dev, REG_CTRL, config); - - tiadc_writel(adc_dev, REG_IRQSTATUS, - IRQENB_FIFO1OVRRUN | - IRQENB_FIFO1UNDRFLW); - - tiadc_writel(adc_dev, REG_CTRL, - (config | CNTRLREG_TSCSSENB)); - return IRQ_HANDLED; } else { return IRQ_NONE; } -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html