FE_QPSK,
FE_QAM,
FE_OFDM,
- FE_ATSC
+ FE_ATSC,
+#ifdef CONFIG_AMLOGIC_DVB_COMPAT
+ FE_ANALOG,
+ FE_DTMB,
+ FE_ISDBT
+#endif
};
++/**
++ * enum fe_caps - Frontend capabilities
++ *
++ * @FE_IS_STUPID: There's something wrong at the
++ * frontend, and it can't report its
++ * capabilities.
++ * @FE_CAN_INVERSION_AUTO: Can auto-detect frequency spectral
++ * band inversion
++ * @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
++ * automatically
++ * @FE_CAN_MUTE_TS: Can stop spurious TS data output
++ */
enum fe_caps {
FE_IS_STUPID = 0,
- FE_CAN_INVERSION_AUTO = 0x1,
+ FE_CAN_INVERSION_AUTO = 0x1,
FE_CAN_FEC_1_2 = 0x2,
FE_CAN_FEC_2_3 = 0x4,
FE_CAN_FEC_3_4 = 0x8,
FE_CAN_HIERARCHY_AUTO = 0x100000,
FE_CAN_8VSB = 0x200000,
FE_CAN_16VSB = 0x400000,
- /* We need more bitspace for newer APIs, indicate this. */
- FE_HAS_EXTENDED_CAPS = 0x800000,
- FE_HAS_EXTENDED_CAPS = 0x800000, /* We need more bitspace for newer APIs, indicate this. */
-- FE_CAN_MULTISTREAM = 0x4000000, /* frontend supports multistream filtering */
-- FE_CAN_TURBO_FEC = 0x8000000, /* frontend supports "turbo fec modulation" */
- /* frontend supports "2nd generation modulation" (DVB-S2) */
- FE_CAN_2G_MODULATION = 0x10000000,
- FE_CAN_2G_MODULATION = 0x10000000, /* frontend supports "2nd generation modulation" (DVB-S2) */
-- FE_NEEDS_BENDING = 0x20000000, /* not supported anymore, don't use (frontend requires frequency bending) */
-- FE_CAN_RECOVER = 0x40000000, /* frontend can recover from a cable unplug automatically */
-- FE_CAN_MUTE_TS = 0x80000000 /* frontend can stop spurious TS data output */
++ 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
};
- #ifdef CONFIG_AMLOGIC_DVB_COMPAT
- #define FE_CAN_3_LAYER FE_CAN_MULTISTREAM
- #endif
+
++/**
++ * struct dvb_frontend_info - Frontend properties and capabilities
++ *
++ * @name: Name of the frontend
++ * @type: **DEPRECATED**.
++ * 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`
++ * instead.
++ * @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.
++ *
++ * .. note:
++ *
++ * #. The frequencies are specified in Hz for Terrestrial and Cable
++ * systems.
++ * #. The frequencies are specified in kHz for Satellite systems.
++ */
struct dvb_frontend_info {
char name[128];
enum fe_type type; /* DEPRECATED. Use DTV_ENUM_DELSYS instead */
__u32 frequency_tolerance;
__u32 symbol_rate_min;
__u32 symbol_rate_max;
-- __u32 symbol_rate_tolerance; /* ppm */
++ __u32 symbol_rate_tolerance;
__u32 notifier_delay; /* DEPRECATED */
enum fe_caps caps;
};
--
/**
-- * Check out the DiSEqC bus spec available on http://www.eutelsat.org/ for
-- * the meaning of this struct...
++ * struct dvb_diseqc_master_cmd - DiSEqC master command
++ *
++ * @msg:
++ * 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.
++ * @msg_len:
++ * 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 {
-- __u8 msg [6]; /* { framing, address, command, data [3] } */
-- __u8 msg_len; /* valid values are 3...6 */
++ __u8 msg[6];
++ __u8 msg_len;
};
++/**
++ * struct dvb_diseqc_slave_reply - DiSEqC received data
++ *
++ * @msg:
++ * 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.
++ * @msg_len:
++ * Length of the DiSEqC message. Valid values are 0 to 4,
++ * where 0 means no message.
++ * @timeout:
++ * 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 {
-- __u8 msg [4]; /* { framing, data [3] } */
-- __u8 msg_len; /* valid values are 0...4, 0 means no msg */
-- int timeout; /* return from ioctl after timeout ms with */
--}; /* errorcode when no message was received */
++ __u8 msg[4];
++ __u8 msg_len;
++ int timeout;
++};
++/**
++ * 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_voltage {
SEC_VOLTAGE_13,
SEC_VOLTAGE_18,
- SEC_VOLTAGE_OFF
+ SEC_VOLTAGE_OFF,
+#ifdef CONFIG_AMLOGIC_DVB_COMPAT
+ SEC_VOLTAGE_ON /*for ISDBT antenna control*/
+#endif
};
++/**
++ * 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_tone_mode {
SEC_TONE_ON,
SEC_TONE_OFF
};
++/**
++ * 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
++ * satellite-A
++ * @SEC_MINI_B: Sends a mini-DiSEqC 22kHz '1' Data Burst to select
++ * satellite-B
++ */
enum fe_sec_mini_cmd {
SEC_MINI_A,
SEC_MINI_B
};
/**
-- * enum fe_status - enumerates the possible frontend status
-- * @FE_HAS_SIGNAL: found something above the noise level
-- * @FE_HAS_CARRIER: found a DVB signal
-- * @FE_HAS_VITERBI: FEC is stable
-- * @FE_HAS_SYNC: found sync bytes
-- * @FE_HAS_LOCK: everything's working
-- * @FE_TIMEDOUT: no lock within the last ~2 seconds
-- * @FE_REINIT: frontend was reinitialized, application is recommended
-- * to reset DiSEqC, tone and parameters
++ * 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 DVB signal.
++ * @FE_HAS_VITERBI: FEC inner coding (Viterbi, LDPC or other inner code).
++ * is stable.
++ * @FE_HAS_SYNC: Synchronization bytes was found.
++ * @FE_HAS_LOCK: DVB 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_status {
- FE_HAS_SIGNAL = 0x01, /* found something above the noise level */
- FE_HAS_CARRIER = 0x02, /* found a DVB signal */
- FE_HAS_VITERBI = 0x04, /* FEC is stable */
- FE_HAS_SYNC = 0x08, /* found sync bytes */
- FE_HAS_LOCK = 0x10, /* everything's working... */
- FE_TIMEDOUT = 0x20, /* no lock within the last ~2 seconds */
- FE_REINIT = 0x40, /* frontend was reinitialized, */
- #ifdef CONFIG_AMLOGIC_DVB_COMPAT
- BLINDSCAN_NONEDO = 0x80, /* not blind scan */
- BLINDSCAN_UPDATESTARTFREQ = 0x100, /* blind scan update start freq */
- BLINDSCAN_UPDATEPROCESS = 0x200, /* blind scan update process */
- BLINDSCAN_UPDATERESULTFREQ = 0x400/* blind scan update result */
- #endif
- }; /* application is recommended to reset */
- /* DiSEqC, tone and parameters */
+ FE_NONE = 0x00,
+ FE_HAS_SIGNAL = 0x01,
+ FE_HAS_CARRIER = 0x02,
+ FE_HAS_VITERBI = 0x04,
+ FE_HAS_SYNC = 0x08,
+ FE_HAS_LOCK = 0x10,
+ FE_TIMEDOUT = 0x20,
+ FE_REINIT = 0x40,
+ };
++/**
++ * 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 core will try to lock at the carrier first with
++ * inversion off. If it fails, it will try to enable inversion.
++ */
enum fe_spectral_inversion {
INVERSION_OFF,
INVERSION_ON,
INVERSION_AUTO
};
++/**
++ * 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_code_rate {
FEC_NONE = 0,
FEC_1_2,
FEC_2_5,
};
++/**
++ * enum fe_modulation - Type of modulation/constellation
++ * @QPSK: QPSK modulation
++ * @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_modulation {
QPSK,
QAM_16,
QAM_4_NR,
};
++/**
++ * 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_1K:
++ * Transmission mode 1K
++ * @TRANSMISSION_MODE_2K:
++ * Transmission mode 2K
++ * @TRANSMISSION_MODE_8K:
++ * Transmission mode 8K
++ * @TRANSMISSION_MODE_4K:
++ * Transmission mode 4K
++ * @TRANSMISSION_MODE_16K:
++ * Transmission mode 16K
++ * @TRANSMISSION_MODE_32K:
++ * Transmission mode 32K
++ * @TRANSMISSION_MODE_C1:
++ * 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
++ * standard.
++ */
enum fe_transmit_mode {
TRANSMISSION_MODE_2K,
TRANSMISSION_MODE_8K,
TRANSMISSION_MODE_C3780,
};
++/**
++ * 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_guard_interval {
GUARD_INTERVAL_1_32,
GUARD_INTERVAL_1_16,
GUARD_INTERVAL_PN945,
};
++/**
++ * 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_hierarchy {
HIERARCHY_NONE,
HIERARCHY_1,
HIERARCHY_AUTO
};
++/**
++ * 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.
++ */
enum fe_interleaving {
INTERLEAVING_NONE,
INTERLEAVING_AUTO,
INTERLEAVING_720,
};
+#ifdef CONFIG_AMLOGIC_DVB_COMPAT
+struct fe_blind_scan_parameters {
+ /* minimum tuner frequency in kHz */
+ __u32 min_frequency;
+ /* maximum tuner frequency in kHz */
+ __u32 max_frequency;
+ /* minimum symbol rate in sym/sec */
+ __u32 min_symbol_rate;
+ /* maximum symbol rate in sym/sec */
+ __u32 max_symbol_rate;
+ /* search range in kHz. freq -/+freqRange will be searched */
+ __u32 frequency_range;
+ /* tuner step frequency in kHz */
+ __u32 frequency_step;
+ /* blindscan event timeout */
+ __s32 timeout;
+};
+#endif
+
/* S2API Commands */
++/* DVBv5 property Commands */
++
#define DTV_UNDEFINED 0
#define DTV_TUNE 1
#define DTV_CLEAR 2
#define DTV_STAT_ERROR_BLOCK_COUNT 68
#define DTV_STAT_TOTAL_BLOCK_COUNT 69
+#ifdef CONFIG_AMLOGIC_DVB_COMPAT
+
+/* Get tne TS input of the frontend */
+#define DTV_TS_INPUT 70
+/* Blind scan */
+#define DTV_START_BLIND_SCAN 71
+#define DTV_CANCEL_BLIND_SCAN 72
+#define DTV_BLIND_SCAN_MIN_FRE 73
+#define DTV_BLIND_SCAN_MAX_FRE 74
+#define DTV_BLIND_SCAN_MIN_SRATE 75
+#define DTV_BLIND_SCAN_MAX_SRATE 76
+#define DTV_BLIND_SCAN_FRE_RANGE 77
+#define DTV_BLIND_SCAN_FRE_STEP 78
+#define DTV_BLIND_SCAN_TIMEOUT 79
+/* Blind scan end*/
+#define DTV_DELIVERY_SUB_SYSTEM 80
+#define DTV_MAX_COMMAND DTV_DELIVERY_SUB_SYSTEM
+
+#else /*!defined(CONFIG_AMLOGIC_DVB_COMPAT)*/
+
#define DTV_MAX_COMMAND DTV_STAT_TOTAL_BLOCK_COUNT
+#endif /*CONFIG_AMLOGIC_DVB_COMPAT*/
+
+
++/**
++ * enum fe_pilot - Type of pilot tone
++ *
++ * @PILOT_ON: Pilot tones enabled
++ * @PILOT_OFF: Pilot tones disabled
++ * @PILOT_AUTO: Autodetect pilot tones
++ */
enum fe_pilot {
PILOT_ON,
PILOT_OFF,
PILOT_AUTO,
};
++/**
++ * enum fe_rolloff - Rolloff factor (also known as alpha)
++ * @ROLLOFF_35: Roloff factor: 35%
++ * @ROLLOFF_20: Roloff factor: 20%
++ * @ROLLOFF_25: Roloff factor: 25%
++ * @ROLLOFF_AUTO: Auto-detect the roloff factor.
++ *
++ * .. note:
++ *
++ * Roloff factor of 35% is implied on DVB-S. On DVB-S2, it is default.
++ */
enum fe_rolloff {
-- ROLLOFF_35, /* Implied value in DVB-S, default for DVB-S2 */
++ ROLLOFF_35,
ROLLOFF_20,
ROLLOFF_25,
ROLLOFF_AUTO,
};
++/**
++ * enum fe_delivery_system - Type of the delivery system
++ *
++ * @SYS_UNDEFINED:
++ * Undefined standard. Generally, indicates an error
++ * @SYS_DVBC_ANNEX_A:
++ * Cable TV: DVB-C following ITU-T J.83 Annex A spec
++ * @SYS_DVBC_ANNEX_B:
++ * Cable TV: DVB-C following ITU-T J.83 Annex B spec (ClearQAM)
++ * @SYS_DVBC_ANNEX_C:
++ * Cable TV: DVB-C following ITU-T J.83 Annex C spec
++ * @SYS_ISDBC:
++ * Cable TV: ISDB-C (no drivers yet)
++ * @SYS_DVBT:
++ * Terrestrial TV: DVB-T
++ * @SYS_DVBT2:
++ * Terrestrial TV: DVB-T2
++ * @SYS_ISDBT:
++ * Terrestrial TV: ISDB-T
++ * @SYS_ATSC:
++ * Terrestrial TV: ATSC
++ * @SYS_ATSCMH:
++ * Terrestrial TV (mobile): ATSC-M/H
++ * @SYS_DTMB:
++ * Terrestrial TV: DTMB
++ * @SYS_DVBS:
++ * Satellite TV: DVB-S
++ * @SYS_DVBS2:
++ * Satellite TV: DVB-S2
++ * @SYS_TURBO:
++ * Satellite TV: DVB-S Turbo
++ * @SYS_ISDBS:
++ * Satellite TV: ISDB-S
++ * @SYS_DAB:
++ * Digital audio: DAB (not fully supported)
++ * @SYS_DSS:
++ * Satellite TV: DSS (not fully supported)
++ * @SYS_CMMB:
++ * Terrestrial TV (mobile): CMMB (not fully supported)
++ * @SYS_DVBH:
++ * Terrestrial TV (mobile): DVB-H (standard deprecated)
++ */
enum fe_delivery_system {
SYS_UNDEFINED,
SYS_DVBC_ANNEX_A,
SYS_DVBT2,
SYS_TURBO,
SYS_DVBC_ANNEX_C,
+#ifdef CONFIG_AMLOGIC_DVB_COMPAT
+ SYS_ANALOG
+#endif
};
--/* backward compatibility */
++/* backward compatibility definitions for delivery systems */
#define SYS_DVBC_ANNEX_AC SYS_DVBC_ANNEX_A
--#define SYS_DMBTH SYS_DTMB /* DMB-TH is legacy name, use DTMB instead */
++#define SYS_DMBTH SYS_DTMB /* DMB-TH is legacy name, use DTMB */
--/* ATSC-MH */
++/* ATSC-MH specific parameters */
++/**
++ * enum atscmh_sccc_block_mode - Type of Series Concatenated Convolutional
++ * Code Block Mode.
++ *
++ * @ATSCMH_SCCC_BLK_SEP:
++ * Separate SCCC: the SCCC outer code mode shall be set independently
++ * for each Group Region (A, B, C, D)
++ * @ATSCMH_SCCC_BLK_COMB:
++ * Combined SCCC: all four Regions shall have the same SCCC outer
++ * code mode.
++ * @ATSCMH_SCCC_BLK_RES:
++ * Reserved. Shouldn't be used.
++ */
enum atscmh_sccc_block_mode {
ATSCMH_SCCC_BLK_SEP = 0,
ATSCMH_SCCC_BLK_COMB = 1,
ATSCMH_SCCC_BLK_RES = 2,
};
++/**
++ * enum atscmh_sccc_code_mode - Type of Series Concatenated Convolutional
++ * Code Rate.
++ *
++ * @ATSCMH_SCCC_CODE_HLF:
++ * The outer code rate of a SCCC Block is 1/2 rate.
++ * @ATSCMH_SCCC_CODE_QTR:
++ * The outer code rate of a SCCC Block is 1/4 rate.
++ * @ATSCMH_SCCC_CODE_RES:
++ * Reserved. Should not be used.
++ */
enum atscmh_sccc_code_mode {
ATSCMH_SCCC_CODE_HLF = 0,
ATSCMH_SCCC_CODE_QTR = 1,
ATSCMH_SCCC_CODE_RES = 2,
};
++/**
++ * enum atscmh_rs_frame_ensemble - Reed Solomon(RS) frame ensemble.
++ *
++ * @ATSCMH_RSFRAME_ENS_PRI: Primary Ensemble.
++ * @ATSCMH_RSFRAME_ENS_SEC: Secondary Ensemble.
++ */
enum atscmh_rs_frame_ensemble {
ATSCMH_RSFRAME_ENS_PRI = 0,
ATSCMH_RSFRAME_ENS_SEC = 1,
};
++/**
++ * enum atscmh_rs_frame_mode - Reed Solomon (RS) frame mode.
++ *
++ * @ATSCMH_RSFRAME_PRI_ONLY:
++ * Single Frame: There is only a primary RS Frame for all Group
++ * Regions.
++ * @ATSCMH_RSFRAME_PRI_SEC:
++ * Dual Frame: There are two separate RS Frames: Primary RS Frame for
++ * Group Region A and B and Secondary RS Frame for Group Region C and
++ * D.
++ * @ATSCMH_RSFRAME_RES:
++ * Reserved. Shouldn't be used.
++ */
enum atscmh_rs_frame_mode {
ATSCMH_RSFRAME_PRI_ONLY = 0,
ATSCMH_RSFRAME_PRI_SEC = 1,
ATSCMH_RSFRAME_RES = 2,
};
++/**
++ * enum atscmh_rs_code_mode
++ * @ATSCMH_RSCODE_211_187: Reed Solomon code (211,187).
++ * @ATSCMH_RSCODE_223_187: Reed Solomon code (223,187).
++ * @ATSCMH_RSCODE_235_187: Reed Solomon code (235,187).
++ * @ATSCMH_RSCODE_RES: Reserved. Shouldn't be used.
++ */
enum atscmh_rs_code_mode {
ATSCMH_RSCODE_211_187 = 0,
ATSCMH_RSCODE_223_187 = 1,
#define NO_STREAM_ID_FILTER (~0U)
#define LNA_AUTO (~0U)
--struct dtv_cmds_h {
-- char *name; /* A display name for debugging purposes */
--
-- __u32 cmd; /* A unique ID */
--
-- /* Flags */
-- __u32 set:1; /* Either a set or get property */
-- __u32 buffer:1; /* Does this property use the buffer? */
-- __u32 reserved:30; /* Align */
--};
--
/**
-- * Scale types for the quality parameters.
++ * enum fecap_scale_params - scale types for the quality parameters.
++ *
* @FE_SCALE_NOT_AVAILABLE: That QoS measure is not available. That
* could indicate a temporary or a permanent
* condition.
* @FE_SCALE_DECIBEL: The scale is measured in 0.001 dB steps, typically
-- * used on signal measures.
++ * used on signal measures.
* @FE_SCALE_RELATIVE: The scale is a relative percentual measure,
-- * ranging from 0 (0%) to 0xffff (100%).
++ * ranging from 0 (0%) to 0xffff (100%).
* @FE_SCALE_COUNTER: The scale counts the occurrence of an event, like
-- * bit error, block error, lapsed time.
++ * bit error, block error, lapsed time.
*/
enum fecap_scale_params {
FE_SCALE_NOT_AVAILABLE = 0,
/**
* struct dtv_stats - Used for reading a DTV status property
*
-- * @value: value of the measure. Should range from 0 to 0xffff;
* @scale: Filled with enum fecap_scale_params - the scale
* in usage for that parameter
*
++ * The ``{unnamed_union}`` may have either one of the values below:
++ *
++ * %svalue
++ * integer value of the measure, for %FE_SCALE_DECIBEL,
++ * used for dB measures. The unit is 0.001 dB.
++ *
++ * %uvalue
++ * unsigned integer value of the measure, used when @scale is
++ * either %FE_SCALE_RELATIVE or %FE_SCALE_COUNTER.
++ *
* For most delivery systems, this will return a single value for each
* parameter.
++ *
* It should be noticed, however, that new OFDM delivery systems like
* ISDB can use different modulation types for each group of carriers.
* On such standards, up to 8 groups of statistics can be provided, one
* for each carrier group (called "layer" on ISDB).
++ *
* In order to be consistent with other delivery systems, the first
* value refers to the entire set of carriers ("global").
-- * dtv_status:scale should use the value FE_SCALE_NOT_AVAILABLE when
++ *
++ * @scale should use the value %FE_SCALE_NOT_AVAILABLE when
* the value for the entire group of carriers or from one specific layer
* is not provided by the hardware.
-- * st.len should be filled with the latest filled status + 1.
*
-- * In other words, for ISDB, those values should be filled like:
++ * @len should be filled with the latest filled status + 1.
++ *
++ * In other words, for ISDB, those values should be filled like::
++ *
* u.st.stat.svalue[0] = global statistics;
* u.st.stat.scale[0] = FE_SCALE_DECIBEL;
* u.st.stat.value[1] = layer A statistics;
#define MAX_DTV_STATS 4
++/**
++ * struct dtv_fe_stats - store Digital TV frontend statistics
++ *
++ * @len: length of the statistics - if zero, stats is disabled.
++ * @stat: array with digital TV statistics.
++ *
++ * On most standards, @len can either be 0 or 1. However, for ISDB, each
++ * layer is modulated in separate. So, each layer may have its own set
++ * of statistics. If so, stat[0] carries on a global value for the property.
++ * Indexes 1 to 3 means layer A to B.
++ */
struct dtv_fe_stats {
__u8 len;
struct dtv_stats stat[MAX_DTV_STATS];
} __attribute__ ((packed));
++/**
++ * struct dtv_property - store one of frontend command and its value
++ *
++ * @cmd: Digital TV command.
++ * @reserved: Not used.
++ * @u: Union with the values for the command.
++ * @result: Unused
++ *
++ * The @u union may have either one of the values below:
++ *
++ * %data
++ * an unsigned 32-bits number.
++ * %st
++ * a &struct dtv_fe_stats array of statistics.
++ * %buffer
++ * a buffer of up to 32 characters (currently unused).
++ */
struct dtv_property {
__u32 cmd;
__u32 reserved[3];
/* num of properties cannot exceed DTV_IOCTL_MAX_MSGS per ioctl */
#define DTV_IOCTL_MAX_MSGS 64
++/**
++ * struct dtv_properties - a set of command/value pairs.
++ *
++ * @num: amount of commands stored at the struct.
++ * @props: a pointer to &struct dtv_property.
++ */
struct dtv_properties {
__u32 num;
struct dtv_property *props;
};
+struct dtv_properties_32 {
+ __u32 num;
+ __u32 props;
+};
+
+struct dtv_properties_64 {
+ __u32 num;
+ __u64 props;
+};
++/*
++ * When set, this flag will disable any zigzagging or other "normal" tuning
++ * behavior. Additionally, there will be no automatic monitoring of the lock
++ * status, and hence no frontend events will be generated. If a frontend device
++ * is closed, this flag will be automatically turned off when the device is
++ * reopened read-write.
++ */
++#define FE_TUNE_MODE_ONESHOT 0x01
++
++/* Digital TV Frontend API calls */
++
++#define FE_GET_INFO _IOR('o', 61, struct dvb_frontend_info)
++
++#define FE_DISEQC_RESET_OVERLOAD _IO('o', 62)
++#define FE_DISEQC_SEND_MASTER_CMD _IOW('o', 63, struct dvb_diseqc_master_cmd)
++#define FE_DISEQC_RECV_SLAVE_REPLY _IOR('o', 64, struct dvb_diseqc_slave_reply)
++#define FE_DISEQC_SEND_BURST _IO('o', 65) /* fe_sec_mini_cmd_t */
++
++#define FE_SET_TONE _IO('o', 66) /* fe_sec_tone_mode_t */
++#define FE_SET_VOLTAGE _IO('o', 67) /* fe_sec_voltage_t */
++#define FE_ENABLE_HIGH_LNB_VOLTAGE _IO('o', 68) /* int */
++
++#define FE_READ_STATUS _IOR('o', 69, fe_status_t)
++#define FE_READ_BER _IOR('o', 70, __u32)
++#define FE_READ_SIGNAL_STRENGTH _IOR('o', 71, __u16)
++#define FE_READ_SNR _IOR('o', 72, __u16)
++#define FE_READ_UNCORRECTED_BLOCKS _IOR('o', 73, __u32)
++
++#define FE_SET_FRONTEND_TUNE_MODE _IO('o', 81) /* unsigned int */
++#define FE_GET_EVENT _IOR('o', 78, struct dvb_frontend_event)
++
++#define FE_DISHNETWORK_SEND_LEGACY_CMD _IO('o', 80) /* unsigned int */
++
++#define FE_SET_PROPERTY _IOW('o', 82, struct dtv_properties)
++#define FE_GET_PROPERTY _IOR('o', 83, struct dtv_properties)
+
#if defined(__DVB_CORE__) || !defined (__KERNEL__)
/*
-- * DEPRECATED: The DVBv3 ioctls, structs and enums should not be used on
-- * newer programs, as it doesn't support the second generation of digital
-- * TV standards, nor supports newer delivery systems.
++ * DEPRECATED: Everything below is deprecated in favor of DVBv5 API
++ *
++ * The DVBv3 only ioctls, structs and enums should not be used on
++ * newer programs, as it doesn't support the second generation of
++ * digital TV standards, nor supports newer delivery systems.
++ * They also don't support modern frontends with usually support multiple
++ * delivery systems.
++ *
++ * Drivers shouldn't use them.
++ *
++ * New applications should use DVBv5 delivery system instead
++ */
++
++/*
*/
enum fe_bandwidth {
BANDWIDTH_1_712_MHZ,
};
--/* This is needed for legacy userspace support */
++/* This is kept for legacy userspace support */
typedef enum fe_sec_voltage fe_sec_voltage_t;
typedef enum fe_caps fe_caps_t;
typedef enum fe_type fe_type_t;
typedef enum fe_rolloff fe_rolloff_t;
typedef enum fe_delivery_system fe_delivery_system_t;
+#ifdef CONFIG_AMLOGIC_DVB_COMPAT
+enum fe_ofdm_mode {
+ OFDM_DVBT,
+ OFDM_DVBT2,
+};
+#endif
++/* DVBv3 structs */
+
struct dvb_qpsk_parameters {
__u32 symbol_rate; /* symbol rate in Symbols per second */
fe_code_rate_t fec_inner; /* forward error correction (see above) */
#define FE_READ_SNR _IOR('o', 72, __u16)
#define FE_READ_UNCORRECTED_BLOCKS _IOR('o', 73, __u32)
++/* DVBv3 API calls */
++
#define FE_SET_FRONTEND _IOW('o', 76, struct dvb_frontend_parameters)
#define FE_GET_FRONTEND _IOR('o', 77, struct dvb_frontend_parameters)
--#define FE_SET_FRONTEND_TUNE_MODE _IO('o', 81) /* unsigned int */
--#define FE_GET_EVENT _IOR('o', 78, struct dvb_frontend_event)
-
- #define FE_DISHNETWORK_SEND_LEGACY_CMD _IO('o', 80) /* unsigned int */
-#define FE_DISHNETWORK_SEND_LEGACY_CMD _IO('o', 80) /* unsigned int */
+#ifdef CONFIG_AMLOGIC_DVB_COMPAT
+/*need del this ioctl, used set PROPERTY instead*/
+#define FE_SET_DELAY _IO('o', 100)
+#define FE_READ_AFC _IOR('o', 91, __u32)
+#define FE_FINE_TUNE _IOW('o', 92, __u32)
+#define FE_READ_TUNER_STATUS _IOR('o', 93, struct tuner_status_s)
+#define FE_READ_ANALOG_STATUS _IOR('o', 94, struct atv_status_s)
+#define FE_READ_SD_STATUS _IOR('o', 95, struct sound_status_s)
+/*set & get the tuner parameters only atv*/
+#define FE_SET_PARAM_BOX _IOWR('o', 97, struct tuner_param_s)
+#define FE_SET_AFC _IOW('o', 98, __u32)
+#endif /*CONFIG_AMLOGIC_DVB_COMPAT*/
#endif /*_DVBFRONTEND_H_*/