Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 206cb108 authored by Ian Abbott's avatar Ian Abbott Committed by Greg Kroah-Hartman
Browse files

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: default avatarIan Abbott <abbotti@mev.co.uk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent b0a2b6d8
Loading
Loading
Loading
Loading
+38 −0
Original line number Diff line number Diff line
@@ -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,