aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/comedi/drivers.c
diff options
context:
space:
mode:
authorH Hartley Sweeten <hsweeten@visionengravers.com>2014-11-05 10:20:52 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-11-05 14:59:46 -0800
commit1dacbe5b26268fd3eaa6dad41271d296b072f3df (patch)
tree1602523e9f5cb50e02e8a0ae24cbdfe4e10a1014 /drivers/staging/comedi/drivers.c
parentstaging: panel: Fix single-open policy race condition (diff)
downloadlinux-dev-1dacbe5b26268fd3eaa6dad41271d296b072f3df.tar.xz
linux-dev-1dacbe5b26268fd3eaa6dad41271d296b072f3df.zip
staging: comedi: comedidev.h: add 'scans_done' member to comedi_async
Introduce a new member to comedi_async to count the number of scans completed. This member is cleared by comedi_buf_reset() along with the other comedi_async members. It is incremented in comedi_inc_scan_progress() when the end of scan is detected. This member will be used to clean up the scan counting in the comedi drivers. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Reviewed-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/comedi/drivers.c')
-rw-r--r--drivers/staging/comedi/drivers.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/staging/comedi/drivers.c b/drivers/staging/comedi/drivers.c
index 9a8c5fc8e8fe..02a01baf5cc6 100644
--- a/drivers/staging/comedi/drivers.c
+++ b/drivers/staging/comedi/drivers.c
@@ -352,6 +352,13 @@ void comedi_inc_scan_progress(struct comedi_subdevice *s,
async->scan_progress += num_bytes;
if (async->scan_progress >= scan_length) {
+ unsigned int nscans = async->scan_progress / scan_length;
+
+ if (async->scans_done < (UINT_MAX - nscans))
+ async->scans_done += nscans;
+ else
+ async->scans_done = UINT_MAX;
+
async->scan_progress %= scan_length;
async->events |= COMEDI_CB_EOS;
}