@@ -153,7 +153,6 @@ static const struct comedi_lrange dmm32at_aoranges = {
153
153
struct dmm32at_private {
154
154
int data ;
155
155
int ai_inuse ;
156
- unsigned int ai_scans_left ;
157
156
unsigned char dio_config ;
158
157
};
159
158
@@ -330,13 +329,10 @@ static int dmm32at_ai_cmdtest(struct comedi_device *dev,
330
329
331
330
err |= cfc_check_trigger_arg_is (& cmd -> scan_end_arg , cmd -> chanlist_len );
332
331
333
- if (cmd -> stop_src == TRIG_COUNT ) {
334
- err |= cfc_check_trigger_arg_max (& cmd -> stop_arg , 0xfffffff0 );
332
+ if (cmd -> stop_src == TRIG_COUNT )
335
333
err |= cfc_check_trigger_arg_min (& cmd -> stop_arg , 1 );
336
- } else {
337
- /* TRIG_NONE */
334
+ else /* TRIG_NONE */
338
335
err |= cfc_check_trigger_arg_is (& cmd -> stop_arg , 0 );
339
- }
340
336
341
337
if (err )
342
338
return 3 ;
@@ -405,7 +401,6 @@ static void dmm32at_setaitimer(struct comedi_device *dev, unsigned int nansec)
405
401
406
402
static int dmm32at_ai_cmd (struct comedi_device * dev , struct comedi_subdevice * s )
407
403
{
408
- struct dmm32at_private * devpriv = dev -> private ;
409
404
struct comedi_cmd * cmd = & s -> async -> cmd ;
410
405
int range ;
411
406
unsigned char chanlo , chanhi ;
@@ -437,13 +432,6 @@ static int dmm32at_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
437
432
/* reset the interrupt just in case */
438
433
outb (DMM32AT_INTRESET , dev -> iobase + DMM32AT_CNTRL );
439
434
440
- if (cmd -> stop_src == TRIG_COUNT )
441
- devpriv -> ai_scans_left = cmd -> stop_arg ;
442
- else { /* TRIG_NONE */
443
- devpriv -> ai_scans_left = 0xffffffff ; /* indicates TRIG_NONE to
444
- * isr */
445
- }
446
-
447
435
/*
448
436
* wait for circuit to settle
449
437
* we don't have the 'insn' here but it's not needed
@@ -452,7 +440,7 @@ static int dmm32at_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
452
440
if (ret )
453
441
return ret ;
454
442
455
- if (devpriv -> ai_scans_left > 1 ) {
443
+ if (cmd -> stop_src == TRIG_NONE || cmd -> stop_arg > 1 ) {
456
444
/* start the clock and enable the interrupts */
457
445
dmm32at_setaitimer (dev , cmd -> scan_begin_arg );
458
446
} else {
@@ -476,7 +464,6 @@ static int dmm32at_ai_cancel(struct comedi_device *dev,
476
464
static irqreturn_t dmm32at_isr (int irq , void * d )
477
465
{
478
466
struct comedi_device * dev = d ;
479
- struct dmm32at_private * devpriv = dev -> private ;
480
467
unsigned char intstat ;
481
468
unsigned int samp ;
482
469
unsigned short msb , lsb ;
@@ -503,14 +490,10 @@ static irqreturn_t dmm32at_isr(int irq, void *d)
503
490
comedi_buf_write_samples (s , & samp , 1 );
504
491
}
505
492
506
- if (devpriv -> ai_scans_left != 0xffffffff ) { /* TRIG_COUNT */
507
- devpriv -> ai_scans_left -- ;
508
- if (devpriv -> ai_scans_left == 0 ) {
509
- /* set the buffer to be flushed with an EOF */
510
- s -> async -> events |= COMEDI_CB_EOA ;
511
- }
493
+ if (cmd -> stop_src == TRIG_COUNT &&
494
+ s -> async -> scans_done >= cmd -> stop_arg )
495
+ s -> async -> events |= COMEDI_CB_EOA ;
512
496
513
- }
514
497
comedi_handle_events (dev , s );
515
498
}
516
499
0 commit comments