forked from Minki/linux
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>
This commit is contained in:
parent
f4757af851
commit
1dacbe5b26
@ -236,6 +236,7 @@ void comedi_buf_reset(struct comedi_subdevice *s)
|
|||||||
async->buf_read_ptr = 0;
|
async->buf_read_ptr = 0;
|
||||||
|
|
||||||
async->cur_chan = 0;
|
async->cur_chan = 0;
|
||||||
|
async->scans_done = 0;
|
||||||
async->scan_progress = 0;
|
async->scan_progress = 0;
|
||||||
async->munge_chan = 0;
|
async->munge_chan = 0;
|
||||||
async->munge_count = 0;
|
async->munge_count = 0;
|
||||||
|
@ -121,6 +121,7 @@ struct comedi_buf_map {
|
|||||||
* @buf_read_ptr: buffer position for reader
|
* @buf_read_ptr: buffer position for reader
|
||||||
* @cur_chan: current position in chanlist for scan (for those
|
* @cur_chan: current position in chanlist for scan (for those
|
||||||
* drivers that use it)
|
* drivers that use it)
|
||||||
|
* @scans_done: the number of scans completed (COMEDI_CB_EOS)
|
||||||
* @scan_progress: amount received or sent for current scan (in bytes)
|
* @scan_progress: amount received or sent for current scan (in bytes)
|
||||||
* @munge_chan: current position in chanlist for "munging"
|
* @munge_chan: current position in chanlist for "munging"
|
||||||
* @munge_count: "munge" count (in bytes, modulo 2**32)
|
* @munge_count: "munge" count (in bytes, modulo 2**32)
|
||||||
@ -201,6 +202,7 @@ struct comedi_async {
|
|||||||
unsigned int buf_write_ptr;
|
unsigned int buf_write_ptr;
|
||||||
unsigned int buf_read_ptr;
|
unsigned int buf_read_ptr;
|
||||||
unsigned int cur_chan;
|
unsigned int cur_chan;
|
||||||
|
unsigned int scans_done;
|
||||||
unsigned int scan_progress;
|
unsigned int scan_progress;
|
||||||
unsigned int munge_chan;
|
unsigned int munge_chan;
|
||||||
unsigned int munge_count;
|
unsigned int munge_count;
|
||||||
|
@ -352,6 +352,13 @@ void comedi_inc_scan_progress(struct comedi_subdevice *s,
|
|||||||
|
|
||||||
async->scan_progress += num_bytes;
|
async->scan_progress += num_bytes;
|
||||||
if (async->scan_progress >= scan_length) {
|
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->scan_progress %= scan_length;
|
||||||
async->events |= COMEDI_CB_EOS;
|
async->events |= COMEDI_CB_EOS;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user