[PATCH 4/8] staging: comedi: adv_pci1710: introduce pci171x_ai_flush_fifo()

H Hartley Sweeten hsweeten at visionengravers.com
Fri Jun 20 19:01:56 UTC 2014


Introduce a helper function to flush the fifo and clear the INT
request.

Signed-off-by: H Hartley Sweeten <hsweeten at visionengravers.com>
Cc: Ian Abbott <abbotti at mev.co.uk>
Cc: Greg Kroah-Hartman <gregk at linuxfoundation.org>
---
 drivers/staging/comedi/drivers/adv_pci1710.c | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/drivers/staging/comedi/drivers/adv_pci1710.c b/drivers/staging/comedi/drivers/adv_pci1710.c
index f2a9c00..cb3edf9 100644
--- a/drivers/staging/comedi/drivers/adv_pci1710.c
+++ b/drivers/staging/comedi/drivers/adv_pci1710.c
@@ -429,6 +429,12 @@ static void pci171x_ai_setup_chanlist(struct comedi_device *dev,
 	outw(devpriv->ai_et_MuxVal, dev->iobase + PCI171x_MUX);
 }
 
+static void pci171x_ai_flush_fifo(struct comedi_device *dev)
+{
+	outb(0, dev->iobase + PCI171x_CLRFIFO);
+	outb(0, dev->iobase + PCI171x_CLRINT);
+}
+
 static int pci171x_ai_eoc(struct comedi_device *dev,
 			  struct comedi_subdevice *s,
 			  struct comedi_insn *insn,
@@ -454,8 +460,8 @@ static int pci171x_insn_read_ai(struct comedi_device *dev,
 	devpriv->CntrlReg &= Control_CNT0;
 	devpriv->CntrlReg |= Control_SW;	/*  set software trigger */
 	outw(devpriv->CntrlReg, dev->iobase + PCI171x_CONTROL);
-	outb(0, dev->iobase + PCI171x_CLRFIFO);
-	outb(0, dev->iobase + PCI171x_CLRINT);
+
+	pci171x_ai_flush_fifo(dev);
 
 	pci171x_ai_setup_chanlist(dev, s, &insn->chanspec, 1, 1);
 
@@ -476,8 +482,7 @@ static int pci171x_insn_read_ai(struct comedi_device *dev,
 		data[i] = val & s->maxdata;
 	}
 
-	outb(0, dev->iobase + PCI171x_CLRFIFO);
-	outb(0, dev->iobase + PCI171x_CLRINT);
+	pci171x_ai_flush_fifo(dev);
 
 	return ret ? ret : insn->n;
 }
@@ -716,8 +721,7 @@ static int pci171x_ai_cancel(struct comedi_device *dev,
 
 		outw(devpriv->CntrlReg, dev->iobase + PCI171x_CONTROL);	/*  reset any operations */
 		pci171x_start_pacer(dev, false);
-		outb(0, dev->iobase + PCI171x_CLRFIFO);
-		outb(0, dev->iobase + PCI171x_CLRINT);
+		pci171x_ai_flush_fifo(dev);
 		break;
 	}
 
@@ -890,8 +894,7 @@ static irqreturn_t interrupt_service_pci1710(int irq, void *d)
 		devpriv->CntrlReg |= Control_SW; /* set software trigger */
 		outw(devpriv->CntrlReg, dev->iobase + PCI171x_CONTROL);
 		devpriv->CntrlReg = devpriv->ai_et_CntrlReg;
-		outb(0, dev->iobase + PCI171x_CLRFIFO);
-		outb(0, dev->iobase + PCI171x_CLRINT);
+		pci171x_ai_flush_fifo(dev);
 		outw(devpriv->ai_et_MuxVal, dev->iobase + PCI171x_MUX);
 		outw(devpriv->CntrlReg, dev->iobase + PCI171x_CONTROL);
 		pci171x_start_pacer(dev, true);
@@ -916,8 +919,7 @@ static int pci171x_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
 	pci171x_ai_setup_chanlist(dev, s, cmd->chanlist, cmd->chanlist_len,
 				  devpriv->saved_seglen);
 
-	outb(0, dev->iobase + PCI171x_CLRFIFO);
-	outb(0, dev->iobase + PCI171x_CLRINT);
+	pci171x_ai_flush_fifo(dev);
 
 	devpriv->ai_act_scan = 0;
 	s->async->cur_chan = 0;
@@ -1042,8 +1044,7 @@ static int pci171x_reset(struct comedi_device *dev)
 	outw(0x30, dev->iobase + PCI171x_CNTCTRL);
 	devpriv->CntrlReg = Control_SW | Control_CNT0;	/*  Software trigger, CNT0=external */
 	outw(devpriv->CntrlReg, dev->iobase + PCI171x_CONTROL);	/*  reset any operations */
-	outb(0, dev->iobase + PCI171x_CLRFIFO);	/*  clear FIFO */
-	outb(0, dev->iobase + PCI171x_CLRINT);	/*  clear INT request */
+	pci171x_ai_flush_fifo(dev);
 	pci171x_start_pacer(dev, false);
 	devpriv->da_ranges = 0;
 	if (this_board->n_aochan) {
@@ -1056,8 +1057,7 @@ static int pci171x_reset(struct comedi_device *dev)
 		}
 	}
 	outw(0, dev->iobase + PCI171x_DO);	/*  digital outputs to 0 */
-	outb(0, dev->iobase + PCI171x_CLRFIFO);	/*  clear FIFO */
-	outb(0, dev->iobase + PCI171x_CLRINT);	/*  clear INT request */
+	pci171x_ai_flush_fifo(dev);
 
 	return 0;
 }
-- 
1.9.3



More information about the devel mailing list