/* SPDX-License-Identifier: LGPL-2.1+ WITH Linux-syscall-note */
* Copyright (C) 2000 Marcus Metzler <marcus@convergence.de>
* Ralph Metzler <ralph@convergence.de>
* Holger Waechtler <holger@convergence.de>
* Andre Draszik <ad@convergence.de>
* for convergence integrated media GmbH
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
* enum fe_caps - Frontend capabilities
* @FE_IS_STUPID: There's something wrong at the
* frontend, and it can't report its
* @FE_CAN_INVERSION_AUTO: Can auto-detect frequency spectral
* @FE_CAN_FEC_1_2: Supports FEC 1/2
* @FE_CAN_FEC_2_3: Supports FEC 2/3
* @FE_CAN_FEC_3_4: Supports FEC 3/4
* @FE_CAN_FEC_4_5: Supports FEC 4/5
* @FE_CAN_FEC_5_6: Supports FEC 5/6
* @FE_CAN_FEC_6_7: Supports FEC 6/7
* @FE_CAN_FEC_7_8: Supports FEC 7/8
* @FE_CAN_FEC_8_9: Supports FEC 8/9
* @FE_CAN_FEC_AUTO: Can auto-detect FEC
* @FE_CAN_QPSK: Supports QPSK modulation
* @FE_CAN_QAM_16: Supports 16-QAM modulation
* @FE_CAN_QAM_32: Supports 32-QAM modulation
* @FE_CAN_QAM_64: Supports 64-QAM modulation
* @FE_CAN_QAM_128: Supports 128-QAM modulation
* @FE_CAN_QAM_256: Supports 256-QAM modulation
* @FE_CAN_QAM_AUTO: Can auto-detect QAM modulation
* @FE_CAN_TRANSMISSION_MODE_AUTO: Can auto-detect transmission mode
* @FE_CAN_BANDWIDTH_AUTO: Can auto-detect bandwidth
* @FE_CAN_GUARD_INTERVAL_AUTO: Can auto-detect guard interval
* @FE_CAN_HIERARCHY_AUTO: Can auto-detect hierarchy
* @FE_CAN_8VSB: Supports 8-VSB modulation
* @FE_CAN_16VSB: Supporta 16-VSB modulation
* @FE_HAS_EXTENDED_CAPS: Unused
* @FE_CAN_MULTISTREAM: Supports multistream filtering
* @FE_CAN_TURBO_FEC: Supports "turbo FEC" modulation
* @FE_CAN_2G_MODULATION: Supports "2nd generation" modulation,
* e. g. DVB-S2, DVB-T2, DVB-C2
* @FE_NEEDS_BENDING: Unused
* @FE_CAN_RECOVER: Can recover from a cable unplug
* @FE_CAN_MUTE_TS: Can stop spurious TS data output
FE_CAN_INVERSION_AUTO = 0x1,
FE_CAN_QAM_AUTO = 0x10000,
FE_CAN_TRANSMISSION_MODE_AUTO = 0x20000,
FE_CAN_BANDWIDTH_AUTO = 0x40000,
FE_CAN_GUARD_INTERVAL_AUTO = 0x80000,
FE_CAN_HIERARCHY_AUTO = 0x100000,
FE_HAS_EXTENDED_CAPS = 0x800000,
FE_CAN_MULTISTREAM = 0x4000000,
FE_CAN_TURBO_FEC = 0x8000000,
FE_CAN_2G_MODULATION = 0x10000000,
FE_NEEDS_BENDING = 0x20000000,
FE_CAN_RECOVER = 0x40000000,
FE_CAN_MUTE_TS = 0x80000000
* DEPRECATED: Should be kept just due to backward compatibility.
* struct dvb_frontend_info - Frontend properties and capabilities
* @name: Name of the frontend
* Should not be used on modern programs,
* as a frontend may have more than one type.
* In order to get the support types of a given
* frontend, use :c:type:`DTV_ENUM_DELSYS`
* @frequency_min: Minimal frequency supported by the frontend.
* @frequency_max: Minimal frequency supported by the frontend.
* @frequency_stepsize: All frequencies are multiple of this value.
* @frequency_tolerance: Frequency tolerance.
* @symbol_rate_min: Minimal symbol rate, in bauds
* (for Cable/Satellite systems).
* @symbol_rate_max: Maximal symbol rate, in bauds
* (for Cable/Satellite systems).
* @symbol_rate_tolerance: Maximal symbol rate tolerance, in ppm
* (for Cable/Satellite systems).
* @notifier_delay: **DEPRECATED**. Not used by any driver.
* @caps: Capabilities supported by the frontend,
* as specified in &enum fe_caps.
* #. The frequencies are specified in Hz for Terrestrial and Cable
* #. The frequencies are specified in kHz for Satellite systems.
struct dvb_frontend_info {
enum fe_type type; /* DEPRECATED. Use DTV_ENUM_DELSYS instead */
__u32 frequency_stepsize;
__u32 frequency_tolerance;
__u32 symbol_rate_tolerance;
__u32 notifier_delay; /* DEPRECATED */
* struct dvb_diseqc_master_cmd - DiSEqC master command
* DiSEqC message to be sent. It contains a 3 bytes header with:
* framing + address + command, and an optional argument
* of up to 3 bytes of data.
* Length of the DiSEqC message. Valid values are 3 to 6.
* Check out the DiSEqC bus spec available on http://www.eutelsat.org/ for
* the possible messages that can be used.
struct dvb_diseqc_master_cmd {
* struct dvb_diseqc_slave_reply - DiSEqC received data
* DiSEqC message buffer to store a message received via DiSEqC.
* It contains one byte header with: framing and
* an optional argument of up to 3 bytes of data.
* Length of the DiSEqC message. Valid values are 0 to 4,
* where 0 means no message.
* Return from ioctl after timeout ms with errorcode when
* no message was received.
* Check out the DiSEqC bus spec available on http://www.eutelsat.org/ for
* the possible messages that can be used.
struct dvb_diseqc_slave_reply {
* enum fe_sec_voltage - DC Voltage used to feed the LNBf
* @SEC_VOLTAGE_13: Output 13V to the LNBf
* @SEC_VOLTAGE_18: Output 18V to the LNBf
* @SEC_VOLTAGE_OFF: Don't feed the LNBf with a DC voltage
* enum fe_sec_tone_mode - Type of tone to be send to the LNBf.
* @SEC_TONE_ON: Sends a 22kHz tone burst to the antenna.
* @SEC_TONE_OFF: Don't send a 22kHz tone to the antenna (except
* if the ``FE_DISEQC_*`` ioctls are called).
* enum fe_sec_mini_cmd - Type of mini burst to be sent
* @SEC_MINI_A: Sends a mini-DiSEqC 22kHz '0' Tone Burst to select
* @SEC_MINI_B: Sends a mini-DiSEqC 22kHz '1' Data Burst to select
* enum fe_status - Enumerates the possible frontend status.
* @FE_NONE: The frontend doesn't have any kind of lock.
* That's the initial frontend status
* @FE_HAS_SIGNAL: Has found something above the noise level.
* @FE_HAS_CARRIER: Has found a signal.
* @FE_HAS_VITERBI: FEC inner coding (Viterbi, LDPC or other inner code).
* @FE_HAS_SYNC: Synchronization bytes was found.
* @FE_HAS_LOCK: Digital TV were locked and everything is working.
* @FE_TIMEDOUT: Fo lock within the last about 2 seconds.
* @FE_REINIT: Frontend was reinitialized, application is recommended
* to reset DiSEqC, tone and parameters.
* enum fe_spectral_inversion - Type of inversion band
* @INVERSION_OFF: Don't do spectral band inversion.
* @INVERSION_ON: Do spectral band inversion.
* @INVERSION_AUTO: Autodetect spectral band inversion.
* This parameter indicates if spectral inversion should be presumed or
* not. In the automatic setting (``INVERSION_AUTO``) the hardware will try
* to figure out the correct setting by itself. If the hardware doesn't
* support, the %dvb_frontend will try to lock at the carrier first with
* inversion off. If it fails, it will try to enable inversion.
enum fe_spectral_inversion {
* enum fe_code_rate - Type of Forward Error Correction (FEC)
* @FEC_NONE: No Forward Error Correction Code
* @FEC_1_2: Forward Error Correction Code 1/2
* @FEC_2_3: Forward Error Correction Code 2/3
* @FEC_3_4: Forward Error Correction Code 3/4
* @FEC_4_5: Forward Error Correction Code 4/5
* @FEC_5_6: Forward Error Correction Code 5/6
* @FEC_6_7: Forward Error Correction Code 6/7
* @FEC_7_8: Forward Error Correction Code 7/8
* @FEC_8_9: Forward Error Correction Code 8/9
* @FEC_AUTO: Autodetect Error Correction Code
* @FEC_3_5: Forward Error Correction Code 3/5
* @FEC_9_10: Forward Error Correction Code 9/10
* @FEC_2_5: Forward Error Correction Code 2/5
* Please note that not all FEC types are supported by a given standard.
* enum fe_modulation - Type of modulation/constellation
* @QAM_16: 16-QAM modulation
* @QAM_32: 32-QAM modulation
* @QAM_64: 64-QAM modulation
* @QAM_128: 128-QAM modulation
* @QAM_256: 256-QAM modulation
* @QAM_AUTO: Autodetect QAM modulation
* @VSB_8: 8-VSB modulation
* @VSB_16: 16-VSB modulation
* @PSK_8: 8-PSK modulation
* @APSK_16: 16-APSK modulation
* @APSK_32: 32-APSK modulation
* @DQPSK: DQPSK modulation
* @QAM_4_NR: 4-QAM-NR modulation
* Please note that not all modulations are supported by a given standard.
* enum fe_transmit_mode - Transmission mode
* @TRANSMISSION_MODE_AUTO:
* Autodetect transmission mode. The hardware will try to find the
* correct FFT-size (if capable) to fill in the missing parameters.
* @TRANSMISSION_MODE_16K:
* @TRANSMISSION_MODE_32K:
* Single Carrier (C=1) transmission mode (DTMB only)
* @TRANSMISSION_MODE_C3780:
* Multi Carrier (C=3780) transmission mode (DTMB only)
* Please note that not all transmission modes are supported by a given
* enum fe_guard_interval - Guard interval
* @GUARD_INTERVAL_AUTO: Autodetect the guard interval
* @GUARD_INTERVAL_1_128: Guard interval 1/128
* @GUARD_INTERVAL_1_32: Guard interval 1/32
* @GUARD_INTERVAL_1_16: Guard interval 1/16
* @GUARD_INTERVAL_1_8: Guard interval 1/8
* @GUARD_INTERVAL_1_4: Guard interval 1/4
* @GUARD_INTERVAL_19_128: Guard interval 19/128
* @GUARD_INTERVAL_19_256: Guard interval 19/256
* @GUARD_INTERVAL_PN420: PN length 420 (1/4)
* @GUARD_INTERVAL_PN595: PN length 595 (1/6)
* @GUARD_INTERVAL_PN945: PN length 945 (1/9)
* Please note that not all guard intervals are supported by a given standard.
* enum fe_hierarchy - Hierarchy
* @HIERARCHY_NONE: No hierarchy
* @HIERARCHY_AUTO: Autodetect hierarchy (if supported)
* @HIERARCHY_1: Hierarchy 1
* @HIERARCHY_2: Hierarchy 2
* @HIERARCHY_4: Hierarchy 4
* Please note that not all hierarchy types are supported by a given standard.
* enum fe_interleaving - Interleaving
* @INTERLEAVING_NONE: No interleaving.
* @INTERLEAVING_AUTO: Auto-detect interleaving.
* @INTERLEAVING_240: Interleaving of 240 symbols.
* @INTERLEAVING_720: Interleaving of 720 symbols.
* Please note that, currently, only DTMB uses it.
/* DVBv5 property Commands */
#define DTV_BANDWIDTH_HZ 5
#define DTV_DISEQC_MASTER 7
#define DTV_SYMBOL_RATE 8
#define DTV_DISEQC_SLAVE_REPLY 14
/* Basic enumeration set for querying unlimited capabilities */
#define DTV_FE_CAPABILITY_COUNT 15
#define DTV_FE_CAPABILITY 16
#define DTV_DELIVERY_SYSTEM 17
/* ISDB-T and ISDB-Tsb */
#define DTV_ISDBT_PARTIAL_RECEPTION 18
#define DTV_ISDBT_SOUND_BROADCASTING 19
#define DTV_ISDBT_SB_SUBCHANNEL_ID 20
#define DTV_ISDBT_SB_SEGMENT_IDX 21
#define DTV_ISDBT_SB_SEGMENT_COUNT 22
#define DTV_ISDBT_LAYERA_FEC 23
#define DTV_ISDBT_LAYERA_MODULATION 24
#define DTV_ISDBT_LAYERA_SEGMENT_COUNT 25
#define DTV_ISDBT_LAYERA_TIME_INTERLEAVING 26
#define DTV_ISDBT_LAYERB_FEC 27
#define DTV_ISDBT_LAYERB_MODULATION 28
#define DTV_ISDBT_LAYERB_SEGMENT_COUNT 29
#define DTV_ISDBT_LAYERB_TIME_INTERLEAVING 30
#define DTV_ISDBT_LAYERC_FEC 31
#define DTV_ISDBT_LAYERC_MODULATION 32