Lines Matching +full:use +full:- +full:external +full:- +full:pwm
1 /* SPDX-License-Identifier: LGPL-2.0+ WITH Linux-syscall-note */
6 * COMEDI - Linux Control and Measurement Device Interface
7 * Copyright (C) 1998-2001 David A. Schleef <ds@schleef.org>
24 * don't want this to be much more than you actually use.
32 * NOTE: 'comedi_config --init-data' is deprecated
40 /* length of nth chunk of firmware data -*/
78 /* counters -- these are arbitrary values */
120 /* try to use a real-time interrupt while performing command */
123 /* wake up on end-of-scan events */
165 #define TRIG_EXT 0x00000040 /* trigger on external signal N */
166 #define TRIG_INT 0x00000080 /* trigger on comedi-internal signal N */
178 #define SDF_PWM_COUNTER 0x0080 /* PWM can automatically switch off */
179 #define SDF_PWM_HBRIDGE 0x0100 /* PWM is signed (H-bridge) */
200 #define SDF_LSAMPL 0x10000000 /* subdevice uses 32-bit samples */
206 * enum comedi_subdevice_type - COMEDI subdevice types
219 * @COMEDI_SUBD_PWM: Pulse-Width Modulation output.
240 * enum comedi_io_direction - COMEDI I/O directions
243 * @COMEDI_OPENDRAIN: Open-drain (or open-collector) output.
256 * enum configuration_ids - COMEDI configuration instruction codes
259 * @INSN_CONFIG_DIO_OPENDRAIN: Configure digital I/O as open-drain (or open
265 * @INSN_CONFIG_TIMER_1: Configure divisor for external clock.
268 * inputs. (New drivers should use
273 * @INSN_CONFIG_PWM_OUTPUT: Configure pulse-width modulator output.
274 * @INSN_CONFIG_GET_PWM_OUTPUT: Get pulse-width modulator output configuration.
291 * on-board FIFOs used during streaming
299 * @INSN_CONFIG_PWM_SET_PERIOD: Set PWM period in nanoseconds.
300 * @INSN_CONFIG_PWM_GET_PERIOD: Get PWM period in nanoseconds.
301 * @INSN_CONFIG_GET_PWM_STATUS: Get PWM status.
302 * @INSN_CONFIG_PWM_SET_H_BRIDGE: Set PWM H bridge duty cycle and polarity for
304 * @INSN_CONFIG_PWM_GET_H_BRIDGE: Get PWM H bridge duty cycle and polarity.
355 * enum device_configuration_ids - COMEDI configuration instruction codes global
358 * globally-named route
359 * @INSN_DEVICE_CONFIG_CONNECT_ROUTE: Connect a globally-named route
360 * @INSN_DEVICE_CONFIG_DISCONNECT_ROUTE:Disconnect a globally-named route
361 * @INSN_DEVICE_CONFIG_GET_ROUTES: Get a list of all globally-named routes
372 * enum comedi_digital_trig_op - operations for configuring a digital trigger
402 * configuration parameter 1 (data[%3]) contains a "left-shift" value that
407 * specifies which of up to 32 inputs have rising-edge sensitivity, and
409 * have falling-edge sensitivity that can fire the trigger.
417 * accumulative effect, depending on the low-level driver. This is useful
419 * of edge- and level-triggered inputs.
428 * enum comedi_support_level - support level for a COMEDI feature
440 * enum comedi_counter_status_flags - counter status bits
479 * struct comedi_insn - COMEDI instruction
486 * @unused: Reserved for future use.
501 * struct comedi_insnlist - list of COMEDI instructions
513 * struct comedi_cmd - COMEDI asynchronous acquisition command details
530 * @data: Pointer to miscellaneous set-up data (not used).
531 * @data_len: Length of miscellaneous set-up data.
533 * This is used with the %COMEDI_CMD or %COMEDI_CMDTEST ioctl to set-up
539 * %CMDF_BOGUS - makes %COMEDI_CMD ioctl return error %EAGAIN instead of
542 * %CMDF_PRIORITY - requests "hard real-time" processing (which is not
545 * %CMDF_WAKE_EOS - requests the command makes data available for reading
548 * %CMDF_WRITE - marks the command as being in the "write" (to device)
552 * %CMDF_RAWDATA - prevents the command from "munging" the data between the
555 * %CMDF_ROUND_NEAREST - requests timing periods to be rounded to nearest
558 * %CMDF_ROUND_DOWN - requests timing periods to be rounded down to supported
561 * %CMDF_ROUND_UP - requests timing periods to be rounded up to supported
567 * %TRIG_ANY - "all ones" value used to test which trigger sources are
570 * %TRIG_INVALID - "all zeroes" value used to indicate that all requested
573 * %TRIG_NONE - never trigger (often used as a @stop_src value).
575 * %TRIG_NOW - trigger after '_arg' nanoseconds.
577 * %TRIG_FOLLOW - trigger follows another event.
579 * %TRIG_TIMER - trigger every '_arg' nanoseconds.
581 * %TRIG_COUNT - trigger when count '_arg' is reached.
583 * %TRIG_EXT - trigger on external signal specified by '_arg'.
585 * %TRIG_INT - trigger on internal, software trigger specified by '_arg'.
587 * %TRIG_OTHER - trigger on other, driver-defined signal specified by '_arg'.
616 * struct comedi_chaninfo - used to retrieve per-channel information
618 * @maxdata_list: Optional pointer to per-channel maximum data values.
619 * @flaglist: Optional pointer to per-channel flags.
620 * @rangelist: Optional pointer to per-channel range types.
621 * @unused: Reserved for future use.
623 * This is used with the %COMEDI_CHANINFO ioctl to get per-channel information
624 * for the subdevice. Use of this requires knowledge of the number of channels
642 * struct comedi_rangeinfo - used to retrieve the range table for a channel
655 * use of the %COMEDI_SUBDINFO ioctl (if the %SDF_RANGETYPE flag is clear),
664 * struct comedi_krange - describes a range in a range table
665 * @min: Minimum value in millionths (1e-6) of a unit.
666 * @max: Maximum value in millionths (1e-6) of a unit.
683 * range needs to be multiplied by an external reference.
692 * struct comedi_subdinfo - used to retrieve information about a subdevice
712 * @unused: Reserved for future use.
716 * Use of this requires knowledge of the number of subdevices obtained from
721 * %SDF_BUSY - the subdevice is busy processing an asynchronous command or a
724 * %SDF_BUSY_OWNER - the subdevice is busy processing an asynchronous
728 * %SDF_LOCKED - the subdevice is locked by a %COMEDI_LOCK ioctl.
730 * %SDF_LOCK_OWNER - the subdevice is locked by a %COMEDI_LOCK ioctl from the
733 * %SDF_MAXDATA - maximum sample values are channel-specific.
735 * %SDF_FLAGS - channel flags are channel-specific.
737 * %SDF_RANGETYPE - range types are channel-specific.
739 * %SDF_PWM_COUNTER - PWM can switch off automatically.
741 * %SDF_PWM_HBRIDGE - or PWM is signed (H-bridge).
743 * %SDF_CMD - the subdevice supports asynchronous commands.
745 * %SDF_SOFT_CALIBRATED - the subdevice uses software calibration.
747 * %SDF_CMD_WRITE - the subdevice supports asynchronous commands in the output
750 * %SDF_CMD_READ - the subdevice supports asynchronous commands in the input
753 * %SDF_READABLE - the subdevice is readable (e.g. analog input).
755 * %SDF_WRITABLE (aliased as %SDF_WRITEABLE) - the subdevice is writable (e.g.
758 * %SDF_INTERNAL - the subdevice has no externally visible lines.
760 * %SDF_GROUND - the subdevice can use ground as an analog reference.
762 * %SDF_COMMON - the subdevice can use a common analog reference.
764 * %SDF_DIFF - the subdevice can use differential inputs (or outputs).
766 * %SDF_OTHER - the subdevice can use some other analog reference.
768 * %SDF_DITHER - the subdevice can do dithering.
770 * %SDF_DEGLITCH - the subdevice can do deglitching.
772 * %SDF_MMAP - this is never set.
774 * %SDF_RUNNING - an asynchronous command is still running.
776 * %SDF_LSAMPL - the subdevice uses "long" (32-bit) samples (for asynchronous
779 * %SDF_PACKED - the subdevice packs several DIO samples into a single sample
799 * struct comedi_devinfo - used to retrieve information about a COMEDI device
802 * @driver_name: Null-terminated COMEDI driver name.
803 * @board_name: Null-terminated COMEDI board name.
804 * @read_subdevice: Index of the current "read" subdevice (%-1 if none).
805 * @write_subdevice: Index of the current "write" subdevice (%-1 if none).
806 * @unused: Reserved for future use.
822 * struct comedi_devconfig - used to configure a legacy COMEDI device
823 * @board_name: Null-terminated string specifying the type of board
832 * handled in a driver-specific manner.
840 * struct comedi_bufconfig - used to set or get buffer size for a subdevice
845 * @unused: Reserved for future use.
852 * On ioctl input, non-zero values of @maximum_size and @size specify a
871 * struct comedi_bufinfo - used to manipulate buffer position for a subdevice
881 * @unused: Reserved for future use.
933 * 1 <-- Status byte returned here.
936 * B5 - B0 Current mode.
941 I8254_MODE1 = (1 << 1), /* Hardware retriggerable one-shot */
947 /* Use binary-coded decimal instead of binary (pretty useless) */
952 /* *** BEGIN GLOBALLY-NAMED NI TERMINALS/SIGNALS *** */
956 * Some of these have no NI_ prefix as they are useful for non-NI hardware, such
960 * The choice to use CamelScript and the exact names below is for
962 * _and_ a mitigation for confusion that has plagued the use of these drivers
976 * gain any sense of intuition of which values, or even enums one should use
977 * for various registers. There was some attempt in prior use of comedi to
979 * varying purposes, but the end-user had to gain a knowledge of register
982 * programming manuals and vendor-provided documentation are _not_ even
983 * close to the same names that are in the end-user documentation.
992 * the names below, in spite of the use of CamelScript, maintenance will be
1009 #define _TERM_N(base, n, x) ((base) + ((x) & ((n) - 1)))
1012 * not necessarily all allowed 64 PFIs are valid--certainly not for all devices
1016 #define TRIGGER_LINE(x) _TERM_N(NI_PFI(-1) + 1, 8, x)
1018 #define NI_RTSI_BRD(x) _TERM_N(TRIGGER_LINE(-1) + 1, 4, x)
1022 #define NI_COUNTER_NAMES_BASE (NI_RTSI_BRD(-1) + 1)
1025 #define NI_GATES_NAMES_BASE (NI_CtrSource(-1) + 1)
1027 #define NI_CtrAux(x) _TERM_N(NI_CtrGate(-1) + 1, NI_MAX_COUNTERS, x)
1028 #define NI_CtrA(x) _TERM_N(NI_CtrAux(-1) + 1, NI_MAX_COUNTERS, x)
1029 #define NI_CtrB(x) _TERM_N(NI_CtrA(-1) + 1, NI_MAX_COUNTERS, x)
1030 #define NI_CtrZ(x) _TERM_N(NI_CtrB(-1) + 1, NI_MAX_COUNTERS, x)
1031 #define NI_GATES_NAMES_MAX NI_CtrZ(-1)
1032 #define NI_CtrArmStartTrigger(x) _TERM_N(NI_CtrZ(-1) + 1, NI_MAX_COUNTERS, x)
1034 _TERM_N(NI_CtrArmStartTrigger(-1) + 1, NI_MAX_COUNTERS, x)
1035 /** external pin(s) labeled conveniently as Ctr<i>Out. */
1036 #define NI_CtrOut(x) _TERM_N(NI_CtrInternalOutput(-1) + 1, NI_MAX_COUNTERS, x)
1037 /** For Buffered sampling of ctr -- x series capability. */
1038 #define NI_CtrSampleClock(x) _TERM_N(NI_CtrOut(-1) + 1, NI_MAX_COUNTERS, x)
1039 #define NI_COUNTER_NAMES_MAX NI_CtrSampleClock(-1)
1042 /* PXI_Star: this is a non-NI-specific signal */
1101 NI_NUM_NAMES = _NI_NAMES_MAX_PLUS_1 - NI_NAMES_BASE,
1104 /* *** END GLOBALLY-NAMED NI TERMINALS/SIGNALS *** */
1110 * mode bits for NI general-purpose counters, set with
1182 * INSN_CONFIG_SET_CLOCK_SRC when using NI general-purpose counters.
1192 /* NI 660x-specific */
1206 /* NI 660x-specific */
1216 * INSN_CONFIG_SET_GATE_SRC when using NI general-purpose counters.
1217 * May be bitwise-or'd with CR_EDGE or CR_INVERT.
1220 /* m-series gates */
1236 * m-series "second gate" sources are unknown,
1250 * INSN_CONFIG_SET_OTHER_SRC when using NI general-purpose counters.
1259 /* m-series gates */
1267 * start sources for ni general-purpose counters for use with
1278 * bits (3 bits for 660x or 5 bits for m-series) through to the
1288 /* digital filtering options for ni 660x for use with INSN_CONFIG_FILTER. */
1300 * PFI digital filtering options for ni m-series for use with
1314 * Doesn't work for m-series, use NI_MIO_PLL_RTSI_CLOCK()
1315 * the NI_MIO_PLL_* sources are m-series only
1340 /* Pre-m-series always have RTSI clock on line 7 */
1347 * Signals which can be routed to an NI PFI pin on an m-series board with
1349 * INSN_CONFIG_GET_ROUTING on pre-m-series boards, even though their routing
1396 * NI External Trigger lines. These values are not arbitrary, but are related
1400 #define NI_EXT_PFI(x) (NI_USUAL_PFI_SELECT(x) - 1)
1401 #define NI_EXT_RTSI(x) (NI_USUAL_RTSI_SELECT(x) - 1)
1404 * Clock sources for CDIO subdevice on NI m-series boards. Used as the
1405 * scan_begin_arg for a comedi_command. These sources may also be bitwise-or'd
1426 * boards. These scan begin sources can also be bitwise-or'd with CR_INVERT to
1447 * Per channel external clock
1468 AMPLC_DIO_CLK_EXT, /* per chip external input pin */
1493 AMPLC_DIO_GAT_GATN, /* per channel external gate input */
1507 /* non-negated output of counter channel minus 2 */
1519 * the counter subdevice on the Kolter Electronic PCI-Counter board
1525 KE_CLK_EXT /* external clock on pin 21 of D-Sub */