Re: [PATCH 00/34] staging: comedi: cleanup async cmd->stop_{src, arg} usage

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2014-09-10 00:15, H Hartley Sweeten wrote:
The cmd->stop_src is used to determine how an async command is terminated.
Typically the following sources are used:

   TRIG_NONE:  command must be stopped with a (*cancel) operation
                 cmd->stop_arg is always 0
   TRIG_COUNT: command terminates after cmd->stop_arg scans
   TRIG_EXT:   command terminates with an external signal (not common,
                 cmd->stop_arg should define the signal, i.e. channel,
                 that stops the command)

For TRIG_COUNT sources, some of the drivers currently allow a stop_arg == 0.
This causes the (*do_cmd) to immediately terminate the command with a
COMEDI_CB_EOA, indicating an "empty acquisition". This is not really useful
and some of the drivers actually enable the hardware enough that interrupts
are generated but no data is actually returned to the user.

Remove all the "empty acquisition" code and make sure the (*do_cmdtest) for
all drivers validates the cmd->stop_arg is >= 1 when the cmd->stop_src is
TRIG_COUNT.

Do a bit of additional cleanup regarding the cmd->stop_{src,arg} usage in the
drivers.

H Hartley Sweeten (34):
   staging: comedi: addi_apci_2032: remove "empty acquisition" async command
   staging: comedi: addi_apci_2032: absorb apci2032_int_start()
   staging: comedi: amplc_dio200_common: remove "empty acquisition" async command
   staging: comedi: amplc_dio200_common: 'stopcount' is always 'stop_arg'
   staging: comedi: amplc_dio200_common: return void from dio200_start_intr()
   staging: comedi: amplc_pci224: remove "empty acquisition" async command
   staging: comedi: amplc_pci224: simplify cmd->stop_arg validation
   staging: comedi: amplc_pci224: 'ao_stop_count' is always 'stop_arg'
   staging: comedi: amplc_pci230: remove analog output "empty acquisition" async command
   staging: comedi: amplc_pci230: 'ao_scan_count' is always 'stop_arg'
   staging: comedi: amplc_pci230: remove analog input "empty acquisition" async command
   staging: comedi: amplc_pci230: 'ai_scan_count' is always 'stop_arg'
   staging: comedi: cb_pcidas: prevent "empty acquisition" async commands
   staging: comedi: das16: prevent "empty acquisition" async command
   staging: comedi: das16m1: prevent "empty acquisition" async command
   staging: comedi: dt282x: prevent "empty acquisition" async commands
   staging: comedi: me4000: validate cmd->stop_arg in step 3 of (*do_cmdtest)
   staging: comedi: ni_atmio16d: prevent "empty acquisition" async command
   staging: comedi: ni_pcidio: prevent "empty acquisition" async command
   staging: comedi: pcl711: remove "empty acquisition" async command
   staging: comedi: pcmmio: remove "empty acquisition" async command
   staging: comedi: pcmmio: 'stop_count' is always 'stop_arg'
   staging: comedi: pcmmio: return void from pcmmio_start_intr()
   staging: comedi: pcmuio: remove "empty acquisition" async command
   staging: comedi: pcmuio: remove 'continuous' from private data
   staging: comedi: pcmuio: 'stop_count' is always 'stop_arg'
   staging: comedi: pcmuio: return void from pcmuio_start_intr()
   staging: comedi: rtd520: prevent "empty acquisition" async command
   staging: comedi: s626: remove 'ai_continuous' from private data
   staging: comedi: s626: clarify COMEDI_CB_EOA code
   staging: comedi: s626: 'ai_sample_count' is always 'stop_arg'
   staging: comedi: s626: fix cmd->stop_arg validation for stop_src == TRIG_COUNT
   staging: comedi: usbdux: prevent "empty acquisition" async commands
   staging: comedi: usbduxsigma: prevent "empty acquisition" async commands

  drivers/staging/comedi/drivers/addi_apci_2032.c    | 39 +++----------
  .../staging/comedi/drivers/amplc_dio200_common.c   | 66 +++++++---------------
  drivers/staging/comedi/drivers/amplc_pci224.c      | 54 +++++-------------
  drivers/staging/comedi/drivers/amplc_pci230.c      | 35 +++---------
  drivers/staging/comedi/drivers/cb_pcidas.c         |  8 ++-
  drivers/staging/comedi/drivers/das16.c             |  4 +-
  drivers/staging/comedi/drivers/das16m1.c           |  8 +--
  drivers/staging/comedi/drivers/dt282x.c            | 14 ++---
  drivers/staging/comedi/drivers/me4000.c            | 12 ++--
  drivers/staging/comedi/drivers/ni_atmio16d.c       |  7 +--
  drivers/staging/comedi/drivers/ni_pcidio.c         |  7 +--
  drivers/staging/comedi/drivers/pcl711.c            | 13 ++---
  drivers/staging/comedi/drivers/pcmmio.c            | 43 +++-----------
  drivers/staging/comedi/drivers/pcmuio.c            | 54 +++---------------
  drivers/staging/comedi/drivers/rtd520.c            |  8 +--
  drivers/staging/comedi/drivers/s626.c              | 35 ++++--------
  drivers/staging/comedi/drivers/usbdux.c            | 16 ++----
  drivers/staging/comedi/drivers/usbduxsigma.c       | 16 ++----
  18 files changed, 127 insertions(+), 312 deletions(-)


I'm not keen on patch 07 and think it should be dropped. That makes the description of patch 08 slightly wrong, so maybe that should be dropped too (it's only a minor improvement).

For the others PATCHES 01-06,09-34:
Reviewed-by: Ian Abbott <abbotti@xxxxxxxxx>

--
-=( Ian Abbott @ MEV Ltd.    E-mail: <abbotti@xxxxxxxxx>        )=-
-=( Tel: +44 (0)161 477 1898   FAX: +44 (0)161 718 3587         )=-
_______________________________________________
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxx
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel




[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux