[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1374082010-28095-11-git-send-email-zubair.lutfullah@gmail.com>
Date: Wed, 17 Jul 2013 18:26:39 +0100
From: Zubair Lutfullah <zubair.lutfullah@...il.com>
To: jic23@....ac.uk
Cc: linux-iio@...r.kernel.org, gregkh@...uxfoundation.org,
linux-kernel@...r.kernel.org, koen@...inion.thruhere.net,
zubair.lutfullah@...il.com
Subject: [PATCH 10/21] 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@...com>
Signed-off-by: Zubair Lutfullah <zubair.lutfullah@...il.com>
---
drivers/iio/adc/ti_am335x_adc.c | 29 ++++++++++++++---------------
1 file changed, 14 insertions(+), 15 deletions(-)
diff --git a/drivers/iio/adc/ti_am335x_adc.c b/drivers/iio/adc/ti_am335x_adc.c
index 5c95eba..e510da7 100644
--- a/drivers/iio/adc/ti_am335x_adc.c
+++ b/drivers/iio/adc/ti_am335x_adc.c
@@ -171,7 +171,19 @@ 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);
@@ -183,20 +195,7 @@ 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;
+ 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 majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists