From 7fb9db4270711a434a8dd322ad1e3a6e7f798b91 Mon Sep 17 00:00:00 2001
From: Russ Dill <Russ.Dill@ti.com>
Date: Thu, 28 Mar 2013 10:18:01 -0700
Subject: [PATCH] IIO: ti_adc: Handle overrun before threshold event

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

Signed-off-by: Russ Dill <Russ.Dill@ti.com>
---
 drivers/staging/iio/adc/ti_adc.c | 27 +++++++++++++--------------
 1 file changed, 13 insertions(+), 14 deletions(-)

diff --git a/drivers/staging/iio/adc/ti_adc.c b/drivers/staging/iio/adc/ti_adc.c
index 2821243..7dd2f27 100644
--- a/drivers/staging/iio/adc/ti_adc.c
+++ b/drivers/staging/iio/adc/ti_adc.c
@@ -152,7 +152,19 @@ static irqreturn_t tiadc_irq(int irq, void *private)
 	unsigned int status, config;
 
 	status = adc_readl(adc_dev, TSCADC_REG_IRQSTATUS);
-	if (status & TSCADC_IRQENB_FIFO1THRES) {
+	if (status & TSCADC_IRQENB_FIFO1OVRRUN) {
+		config = adc_readl(adc_dev, TSCADC_REG_CTRL);
+		config &= ~(TSCADC_CNTRLREG_TSCSSENB);
+		adc_writel(adc_dev, TSCADC_REG_CTRL, config);
+
+		adc_writel(adc_dev, TSCADC_REG_IRQSTATUS,
+				TSCADC_IRQENB_FIFO1OVRRUN |
+				TSCADC_IRQENB_FIFO1UNDRFLW);
+
+		adc_writel(adc_dev, TSCADC_REG_CTRL,
+			(config | TSCADC_CNTRLREG_TSCSSENB));
+		return IRQ_HANDLED;
+	} else if (status & TSCADC_IRQENB_FIFO1THRES) {
 		adc_writel(adc_dev, TSCADC_REG_IRQCLR,
 				TSCADC_IRQENB_FIFO1THRES);
 
@@ -165,19 +177,6 @@ static irqreturn_t tiadc_irq(int irq, void *private)
 		adc_writel(adc_dev, TSCADC_REG_IRQSTATUS,
 				TSCADC_IRQENB_FIFO1THRES);
 		return IRQ_HANDLED;
-	} else if ((status & TSCADC_IRQENB_FIFO1OVRRUN) ||
-			(status & TSCADC_IRQENB_FIFO1UNDRFLW)) {
-		config = adc_readl(adc_dev, TSCADC_REG_CTRL);
-		config &= ~(TSCADC_CNTRLREG_TSCSSENB);
-		adc_writel(adc_dev, TSCADC_REG_CTRL, config);
-
-		adc_writel(adc_dev, TSCADC_REG_IRQSTATUS,
-				TSCADC_IRQENB_FIFO1OVRRUN |
-				TSCADC_IRQENB_FIFO1UNDRFLW);
-
-		adc_writel(adc_dev, TSCADC_REG_CTRL,
-			(config | TSCADC_CNTRLREG_TSCSSENB));
-		return IRQ_HANDLED;
 	} else {
 		return IRQ_NONE;
 	}
-- 
1.9.1