From: Russ Dill <[email protected]>

If an overrun occurs, the threshold event is meaningless, handle
the overrun event first.

Signed-off-by: Russ Dill <[email protected]>
Signed-off-by: Zubair Lutfullah <[email protected]>
---
 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-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to