staging: comedi: define operations for INSN_CONFIG_DIGITAL_TRIG

The 'addi_apci_1032' driver recently started supporting the
`INSN_CONFIG_DIGITAL_TRIG` configuration instruction, but as no other
drivers were using it before, there was no existing practice of how the
instruction should look.

Define the format to be something a bit more configurable.  In
particular, a subdevice might have more than one trigger requiring an ID
and/or `COMEDI_EV_...` flags to disambiguate them, a trigger might have
more than 32 inputs, and a trigger might need several
`INSN_CONFIG_DIGITAL_TRIG` configuration instructions to configure
completely (if there are more than 32 inputs or if it uses a combination
of edge-triggered and level-triggered inputs).

Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Ian Abbott 2012-11-14 11:22:55 +00:00 committed by Greg Kroah-Hartman
parent b0a2b6d8ac
commit 206cb10816

View file

@ -283,6 +283,44 @@ enum configuration_ids {
INSN_CONFIG_PWM_GET_H_BRIDGE = 5004
};
/*
* Settings for INSN_CONFIG_DIGITAL_TRIG:
* data[0] = INSN_CONFIG_DIGITAL_TRIG
* data[1] = trigger ID
* data[2] = configuration operation
* data[3] = configuration parameter 1
* data[4] = configuration parameter 2
* data[5] = configuration parameter 3
*
* operation parameter 1 parameter 2 parameter 3
* --------------------------------- ----------- ----------- -----------
* COMEDI_DIGITAL_TRIG_DISABLE
* COMEDI_DIGITAL_TRIG_ENABLE_EDGES left-shift rising-edges falling-edges
* COMEDI_DIGITAL_TRIG_ENABLE_LEVELS left-shift high-levels low-levels
*
* COMEDI_DIGITAL_TRIG_DISABLE returns the trigger to its default, inactive,
* unconfigured state.
*
* COMEDI_DIGITAL_TRIG_ENABLE_EDGES sets the rising and/or falling edge inputs
* that each can fire the trigger.
*
* COMEDI_DIGITAL_TRIG_ENABLE_LEVELS sets a combination of high and/or low
* level inputs that can fire the trigger.
*
* "left-shift" is useful if the trigger has more than 32 inputs to specify the
* first input for this configuration.
*
* Some sequences of INSN_CONFIG_DIGITAL_TRIG instructions may have a (partly)
* accumulative effect, depending on the low-level driver. This is useful
* when setting up a trigger that has more than 32 inputs or has a combination
* of edge and level triggered inputs.
*/
enum comedi_digital_trig_op {
COMEDI_DIGITAL_TRIG_DISABLE = 0,
COMEDI_DIGITAL_TRIG_ENABLE_EDGES = 1,
COMEDI_DIGITAL_TRIG_ENABLE_LEVELS = 2
};
enum comedi_io_direction {
COMEDI_INPUT = 0,
COMEDI_OUTPUT = 1,