Commit a18fad85 authored by H Hartley Sweeten's avatar H Hartley Sweeten Committed by Greg Kroah-Hartman

staging: comedi: adv_pci1710: use cfc_handle_events()

Use the comedi_fc helper function to automatically call the subdevice
(*cancel) function when needed and call comedi_event().

Update the Kconfig to select COMEDI_FC when COMEDI_ADL_PCI9111 is enabled.
Signed-off-by: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: default avatarIan Abbott <abbotti@mev.co.uk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 0056f548
...@@ -753,6 +753,7 @@ config COMEDI_ADL_PCI9118 ...@@ -753,6 +753,7 @@ config COMEDI_ADL_PCI9118
config COMEDI_ADV_PCI1710 config COMEDI_ADV_PCI1710
tristate "Advantech PCI-171x, PCI-1720 and PCI-1731 support" tristate "Advantech PCI-171x, PCI-1720 and PCI-1731 support"
select COMEDI_FC
---help--- ---help---
Enable support for Advantech PCI-1710, PCI-1710HG, PCI-1711, Enable support for Advantech PCI-1710, PCI-1710HG, PCI-1711,
PCI-1713, PCI-1720 and PCI-1731 PCI-1713, PCI-1720 and PCI-1731
......
...@@ -759,17 +759,15 @@ static void interrupt_pci1710_every_sample(void *d) ...@@ -759,17 +759,15 @@ static void interrupt_pci1710_every_sample(void *d)
m = inw(dev->iobase + PCI171x_STATUS); m = inw(dev->iobase + PCI171x_STATUS);
if (m & Status_FE) { if (m & Status_FE) {
dev_dbg(dev->class_dev, "A/D FIFO empty (%4x)\n", m); dev_dbg(dev->class_dev, "A/D FIFO empty (%4x)\n", m);
pci171x_ai_cancel(dev, s);
s->async->events |= COMEDI_CB_EOA | COMEDI_CB_ERROR; s->async->events |= COMEDI_CB_EOA | COMEDI_CB_ERROR;
comedi_event(dev, s); cfc_handle_events(dev, s);
return; return;
} }
if (m & Status_FF) { if (m & Status_FF) {
dev_dbg(dev->class_dev, dev_dbg(dev->class_dev,
"A/D FIFO Full status (Fatal Error!) (%4x)\n", m); "A/D FIFO Full status (Fatal Error!) (%4x)\n", m);
pci171x_ai_cancel(dev, s);
s->async->events |= COMEDI_CB_EOA | COMEDI_CB_ERROR; s->async->events |= COMEDI_CB_EOA | COMEDI_CB_ERROR;
comedi_event(dev, s); cfc_handle_events(dev, s);
return; return;
} }
...@@ -788,10 +786,9 @@ static void interrupt_pci1710_every_sample(void *d) ...@@ -788,10 +786,9 @@ static void interrupt_pci1710_every_sample(void *d)
act_chanlist[s-> act_chanlist[s->
async->cur_chan] & 0xf000) >> async->cur_chan] & 0xf000) >>
12); 12);
pci171x_ai_cancel(dev, s);
s->async->events |= s->async->events |=
COMEDI_CB_EOA | COMEDI_CB_ERROR; COMEDI_CB_EOA | COMEDI_CB_ERROR;
comedi_event(dev, s); cfc_handle_events(dev, s);
return; return;
} }
comedi_buf_put(s->async, sampl & 0x0fff); comedi_buf_put(s->async, sampl & 0x0fff);
...@@ -810,9 +807,8 @@ static void interrupt_pci1710_every_sample(void *d) ...@@ -810,9 +807,8 @@ static void interrupt_pci1710_every_sample(void *d)
if ((!devpriv->neverending_ai) && if ((!devpriv->neverending_ai) &&
(devpriv->ai_act_scan >= devpriv->ai_scans)) { (devpriv->ai_act_scan >= devpriv->ai_scans)) {
/* all data sampled */ /* all data sampled */
pci171x_ai_cancel(dev, s);
s->async->events |= COMEDI_CB_EOA; s->async->events |= COMEDI_CB_EOA;
comedi_event(dev, s); cfc_handle_events(dev, s);
return; return;
} }
} }
...@@ -820,7 +816,7 @@ static void interrupt_pci1710_every_sample(void *d) ...@@ -820,7 +816,7 @@ static void interrupt_pci1710_every_sample(void *d)
outb(0, dev->iobase + PCI171x_CLRINT); /* clear our INT request */ outb(0, dev->iobase + PCI171x_CLRINT); /* clear our INT request */
comedi_event(dev, s); cfc_handle_events(dev, s);
} }
/* /*
...@@ -848,10 +844,9 @@ static int move_block_from_fifo(struct comedi_device *dev, ...@@ -848,10 +844,9 @@ static int move_block_from_fifo(struct comedi_device *dev,
(devpriv->act_chanlist[j] & 0xf000) >> 12, (devpriv->act_chanlist[j] & 0xf000) >> 12,
i, j, devpriv->ai_act_scan, n, turn, i, j, devpriv->ai_act_scan, n, turn,
sampl); sampl);
pci171x_ai_cancel(dev, s);
s->async->events |= s->async->events |=
COMEDI_CB_EOA | COMEDI_CB_ERROR; COMEDI_CB_EOA | COMEDI_CB_ERROR;
comedi_event(dev, s); cfc_handle_events(dev, s);
return 1; return 1;
} }
comedi_buf_put(s->async, sampl & 0x0fff); comedi_buf_put(s->async, sampl & 0x0fff);
...@@ -883,17 +878,15 @@ static void interrupt_pci1710_half_fifo(void *d) ...@@ -883,17 +878,15 @@ static void interrupt_pci1710_half_fifo(void *d)
m = inw(dev->iobase + PCI171x_STATUS); m = inw(dev->iobase + PCI171x_STATUS);
if (!(m & Status_FH)) { if (!(m & Status_FH)) {
dev_dbg(dev->class_dev, "A/D FIFO not half full! (%4x)\n", m); dev_dbg(dev->class_dev, "A/D FIFO not half full! (%4x)\n", m);
pci171x_ai_cancel(dev, s);
s->async->events |= COMEDI_CB_EOA | COMEDI_CB_ERROR; s->async->events |= COMEDI_CB_EOA | COMEDI_CB_ERROR;
comedi_event(dev, s); cfc_handle_events(dev, s);
return; return;
} }
if (m & Status_FF) { if (m & Status_FF) {
dev_dbg(dev->class_dev, dev_dbg(dev->class_dev,
"A/D FIFO Full status (Fatal Error!) (%4x)\n", m); "A/D FIFO Full status (Fatal Error!) (%4x)\n", m);
pci171x_ai_cancel(dev, s);
s->async->events |= COMEDI_CB_EOA | COMEDI_CB_ERROR; s->async->events |= COMEDI_CB_EOA | COMEDI_CB_ERROR;
comedi_event(dev, s); cfc_handle_events(dev, s);
return; return;
} }
...@@ -913,14 +906,13 @@ static void interrupt_pci1710_half_fifo(void *d) ...@@ -913,14 +906,13 @@ static void interrupt_pci1710_half_fifo(void *d)
if (!devpriv->neverending_ai) if (!devpriv->neverending_ai)
if (devpriv->ai_act_scan >= devpriv->ai_scans) { /* all data if (devpriv->ai_act_scan >= devpriv->ai_scans) { /* all data
sampled */ sampled */
pci171x_ai_cancel(dev, s);
s->async->events |= COMEDI_CB_EOA; s->async->events |= COMEDI_CB_EOA;
comedi_event(dev, s); cfc_handle_events(dev, s);
return; return;
} }
outb(0, dev->iobase + PCI171x_CLRINT); /* clear our INT request */ outb(0, dev->iobase + PCI171x_CLRINT); /* clear our INT request */
comedi_event(dev, s); cfc_handle_events(dev, s);
} }
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment