• Ian Abbott's avatar
    staging: comedi: ni_mio_common: fix AO inttrig backwards compatibility · f0f4b0cc
    Ian Abbott authored
    Commit ebb657ba ("staging: comedi: ni_mio_common: clarify the
    cmd->start_arg validation and use") introduced a backwards compatibility
    issue in the use of asynchronous commands on the AO subdevice when
    `start_src` is `TRIG_EXT`.  Valid values for `start_src` are `TRIG_INT`
    (for internal, software trigger), and `TRIG_EXT` (for external trigger).
    When set to `TRIG_EXT`.  In both cases, the driver relies on an
    internal, software trigger to set things up (allowing the user
    application to write sufficient samples to the data buffer before the
    trigger), so it acts as a software "pre-trigger" in the `TRIG_EXT` case.
    The software trigger is handled by `ni_ao_inttrig()`.
    
    Prior to the above change, when `start_src` was `TRIG_INT`, `start_arg`
    was required to be 0, and `ni_ao_inttrig()` checked that the software
    trigger number was also 0.  After the above change, when `start_src` was
    `TRIG_INT`, any value was allowed for `start_arg`, and `ni_ao_inttrig()`
    checked that the software trigger number matched this `start_arg` value.
    The backwards compatibility issue is that the internal trigger number
    now has to match `start_arg` when `start_src` is `TRIG_EXT` when it
    previously had to be 0.
    
    Fix the backwards compatibility issue in `ni_ao_inttrig()` by always
    allowing software trigger number 0 when `start_src` is something other
    than `TRIG_INT`.
    
    Thanks to Spencer Olson for reporting the issue.
    Signed-off-by: default avatarIan Abbott <abbotti@mev.co.uk>
    Reported-by: default avatarSpencer Olson <olsonse@umich.edu>
    Fixes: ebb657ba ("staging: comedi: ni_mio_common: clarify the cmd->start_arg validation and use")
    Cc: stable <stable@vger.kernel.org>
    Reviewed-by: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    f0f4b0cc
Name
Last commit
Last update
..
drivers Loading commit data...
kcomedilib Loading commit data...
Kconfig Loading commit data...
Makefile Loading commit data...
TODO Loading commit data...
comedi.h Loading commit data...
comedi_buf.c Loading commit data...
comedi_compat32.c Loading commit data...
comedi_compat32.h Loading commit data...
comedi_fops.c Loading commit data...
comedi_internal.h Loading commit data...
comedi_pci.c Loading commit data...
comedi_pci.h Loading commit data...
comedi_pcmcia.c Loading commit data...
comedi_pcmcia.h Loading commit data...
comedi_usb.c Loading commit data...
comedi_usb.h Loading commit data...
comedidev.h Loading commit data...
comedilib.h Loading commit data...
drivers.c Loading commit data...
proc.c Loading commit data...
range.c Loading commit data...