File indexing completed on 2024-05-05 04:52:05
0001 /* 0002 * frontend.h 0003 * 0004 * Copyright (C) 2000 Marcus Metzler <marcus@convergence.de> 0005 * Ralph Metzler <ralph@convergence.de> 0006 * Holger Waechtler <holger@convergence.de> 0007 * Andre Draszik <ad@convergence.de> 0008 * for convergence integrated media GmbH 0009 * 0010 * This program is free software; you can redistribute it and/or 0011 * modify it under the terms of the GNU Lesser General Public License 0012 * as published by the Free Software Foundation; either version 2.1 0013 * of the License, or (at your option) any later version. 0014 * 0015 * This program is distributed in the hope that it will be useful, 0016 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0018 * GNU General Public License for more details. 0019 * 0020 * You should have received a copy of the GNU Lesser General Public License 0021 * along with this program; if not, write to the Free Software 0022 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 0023 * 0024 */ 0025 0026 #ifndef _DVBFRONTEND_H_ 0027 #define _DVBFRONTEND_H_ 0028 0029 #include "linuxtypes.h" 0030 0031 enum fe_type { 0032 FE_QPSK, 0033 FE_QAM, 0034 FE_OFDM, 0035 FE_ATSC 0036 }; 0037 0038 enum fe_caps { 0039 FE_IS_STUPID = 0, 0040 FE_CAN_INVERSION_AUTO = 0x1, 0041 FE_CAN_FEC_1_2 = 0x2, 0042 FE_CAN_FEC_2_3 = 0x4, 0043 FE_CAN_FEC_3_4 = 0x8, 0044 FE_CAN_FEC_4_5 = 0x10, 0045 FE_CAN_FEC_5_6 = 0x20, 0046 FE_CAN_FEC_6_7 = 0x40, 0047 FE_CAN_FEC_7_8 = 0x80, 0048 FE_CAN_FEC_8_9 = 0x100, 0049 FE_CAN_FEC_AUTO = 0x200, 0050 FE_CAN_QPSK = 0x400, 0051 FE_CAN_QAM_16 = 0x800, 0052 FE_CAN_QAM_32 = 0x1000, 0053 FE_CAN_QAM_64 = 0x2000, 0054 FE_CAN_QAM_128 = 0x4000, 0055 FE_CAN_QAM_256 = 0x8000, 0056 FE_CAN_QAM_AUTO = 0x10000, 0057 FE_CAN_TRANSMISSION_MODE_AUTO = 0x20000, 0058 FE_CAN_BANDWIDTH_AUTO = 0x40000, 0059 FE_CAN_GUARD_INTERVAL_AUTO = 0x80000, 0060 FE_CAN_HIERARCHY_AUTO = 0x100000, 0061 FE_CAN_8VSB = 0x200000, 0062 FE_CAN_16VSB = 0x400000, 0063 FE_HAS_EXTENDED_CAPS = 0x800000, /* We need more bitspace for newer APIs, indicate this. */ 0064 FE_CAN_MULTISTREAM = 0x4000000, /* frontend supports multistream filtering */ 0065 FE_CAN_TURBO_FEC = 0x8000000, /* frontend supports "turbo fec modulation" */ 0066 FE_CAN_2G_MODULATION = 0x10000000, /* frontend supports "2nd generation modulation" (DVB-S2) */ 0067 FE_NEEDS_BENDING = 0x20000000, /* not supported anymore, don't use (frontend requires frequency bending) */ 0068 FE_CAN_RECOVER = 0x40000000, /* frontend can recover from a cable unplug automatically */ 0069 FE_CAN_MUTE_TS = 0x80000000 /* frontend can stop spurious TS data output */ 0070 }; 0071 0072 struct dvb_frontend_info { 0073 char name[128]; 0074 enum fe_type type; /* DEPRECATED. Use DTV_ENUM_DELSYS instead */ 0075 __u32 frequency_min; 0076 __u32 frequency_max; 0077 __u32 frequency_stepsize; 0078 __u32 frequency_tolerance; 0079 __u32 symbol_rate_min; 0080 __u32 symbol_rate_max; 0081 __u32 symbol_rate_tolerance; /* ppm */ 0082 __u32 notifier_delay; /* DEPRECATED */ 0083 enum fe_caps caps; 0084 }; 0085 0086 0087 /** 0088 * Check out the DiSEqC bus spec available on http://www.eutelsat.org/ for 0089 * the meaning of this struct... 0090 */ 0091 struct dvb_diseqc_master_cmd { 0092 __u8 msg [6]; /* { framing, address, command, data [3] } */ 0093 __u8 msg_len; /* valid values are 3...6 */ 0094 }; 0095 0096 struct dvb_diseqc_slave_reply { 0097 __u8 msg [4]; /* { framing, data [3] } */ 0098 __u8 msg_len; /* valid values are 0...4, 0 means no msg */ 0099 int timeout; /* return from ioctl after timeout ms with */ 0100 }; /* errorcode when no message was received */ 0101 0102 enum fe_sec_voltage { 0103 SEC_VOLTAGE_13, 0104 SEC_VOLTAGE_18, 0105 SEC_VOLTAGE_OFF 0106 }; 0107 0108 enum fe_sec_tone_mode { 0109 SEC_TONE_ON, 0110 SEC_TONE_OFF 0111 }; 0112 0113 enum fe_sec_mini_cmd { 0114 SEC_MINI_A, 0115 SEC_MINI_B 0116 }; 0117 0118 /** 0119 * enum fe_status - enumerates the possible frontend status 0120 * @FE_HAS_SIGNAL: found something above the noise level 0121 * @FE_HAS_CARRIER: found a DVB signal 0122 * @FE_HAS_VITERBI: FEC is stable 0123 * @FE_HAS_SYNC: found sync bytes 0124 * @FE_HAS_LOCK: everything's working 0125 * @FE_TIMEDOUT: no lock within the last ~2 seconds 0126 * @FE_REINIT: frontend was reinitialized, application is recommended 0127 * to reset DiSEqC, tone and parameters 0128 */ 0129 enum fe_status { 0130 FE_HAS_SIGNAL = 0x01, 0131 FE_HAS_CARRIER = 0x02, 0132 FE_HAS_VITERBI = 0x04, 0133 FE_HAS_SYNC = 0x08, 0134 FE_HAS_LOCK = 0x10, 0135 FE_TIMEDOUT = 0x20, 0136 FE_REINIT = 0x40 0137 }; 0138 0139 enum fe_spectral_inversion { 0140 INVERSION_OFF, 0141 INVERSION_ON, 0142 INVERSION_AUTO 0143 }; 0144 0145 enum fe_code_rate { 0146 FEC_NONE = 0, 0147 FEC_1_2, 0148 FEC_2_3, 0149 FEC_3_4, 0150 FEC_4_5, 0151 FEC_5_6, 0152 FEC_6_7, 0153 FEC_7_8, 0154 FEC_8_9, 0155 FEC_AUTO, 0156 FEC_3_5, 0157 FEC_9_10, 0158 FEC_2_5 0159 }; 0160 0161 enum fe_modulation { 0162 QPSK, 0163 QAM_16, 0164 QAM_32, 0165 QAM_64, 0166 QAM_128, 0167 QAM_256, 0168 QAM_AUTO, 0169 VSB_8, 0170 VSB_16, 0171 PSK_8, 0172 APSK_16, 0173 APSK_32, 0174 DQPSK, 0175 QAM_4_NR 0176 }; 0177 0178 enum fe_transmit_mode { 0179 TRANSMISSION_MODE_2K, 0180 TRANSMISSION_MODE_8K, 0181 TRANSMISSION_MODE_AUTO, 0182 TRANSMISSION_MODE_4K, 0183 TRANSMISSION_MODE_1K, 0184 TRANSMISSION_MODE_16K, 0185 TRANSMISSION_MODE_32K, 0186 TRANSMISSION_MODE_C1, 0187 TRANSMISSION_MODE_C3780 0188 }; 0189 0190 enum fe_guard_interval { 0191 GUARD_INTERVAL_1_32, 0192 GUARD_INTERVAL_1_16, 0193 GUARD_INTERVAL_1_8, 0194 GUARD_INTERVAL_1_4, 0195 GUARD_INTERVAL_AUTO, 0196 GUARD_INTERVAL_1_128, 0197 GUARD_INTERVAL_19_128, 0198 GUARD_INTERVAL_19_256, 0199 GUARD_INTERVAL_PN420, 0200 GUARD_INTERVAL_PN595, 0201 GUARD_INTERVAL_PN945 0202 }; 0203 0204 enum fe_hierarchy { 0205 HIERARCHY_NONE, 0206 HIERARCHY_1, 0207 HIERARCHY_2, 0208 HIERARCHY_4, 0209 HIERARCHY_AUTO 0210 }; 0211 0212 enum fe_interleaving { 0213 INTERLEAVING_NONE, 0214 INTERLEAVING_AUTO, 0215 INTERLEAVING_240, 0216 INTERLEAVING_720 0217 }; 0218 0219 /* S2API Commands */ 0220 #define DTV_UNDEFINED 0 0221 #define DTV_TUNE 1 0222 #define DTV_CLEAR 2 0223 #define DTV_FREQUENCY 3 0224 #define DTV_MODULATION 4 0225 #define DTV_BANDWIDTH_HZ 5 0226 #define DTV_INVERSION 6 0227 #define DTV_DISEQC_MASTER 7 0228 #define DTV_SYMBOL_RATE 8 0229 #define DTV_INNER_FEC 9 0230 #define DTV_VOLTAGE 10 0231 #define DTV_TONE 11 0232 #define DTV_PILOT 12 0233 #define DTV_ROLLOFF 13 0234 #define DTV_DISEQC_SLAVE_REPLY 14 0235 0236 /* Basic enumeration set for querying unlimited capabilities */ 0237 #define DTV_FE_CAPABILITY_COUNT 15 0238 #define DTV_FE_CAPABILITY 16 0239 #define DTV_DELIVERY_SYSTEM 17 0240 0241 /* ISDB-T and ISDB-Tsb */ 0242 #define DTV_ISDBT_PARTIAL_RECEPTION 18 0243 #define DTV_ISDBT_SOUND_BROADCASTING 19 0244 0245 #define DTV_ISDBT_SB_SUBCHANNEL_ID 20 0246 #define DTV_ISDBT_SB_SEGMENT_IDX 21 0247 #define DTV_ISDBT_SB_SEGMENT_COUNT 22 0248 0249 #define DTV_ISDBT_LAYERA_FEC 23 0250 #define DTV_ISDBT_LAYERA_MODULATION 24 0251 #define DTV_ISDBT_LAYERA_SEGMENT_COUNT 25 0252 #define DTV_ISDBT_LAYERA_TIME_INTERLEAVING 26 0253 0254 #define DTV_ISDBT_LAYERB_FEC 27 0255 #define DTV_ISDBT_LAYERB_MODULATION 28 0256 #define DTV_ISDBT_LAYERB_SEGMENT_COUNT 29 0257 #define DTV_ISDBT_LAYERB_TIME_INTERLEAVING 30 0258 0259 #define DTV_ISDBT_LAYERC_FEC 31 0260 #define DTV_ISDBT_LAYERC_MODULATION 32 0261 #define DTV_ISDBT_LAYERC_SEGMENT_COUNT 33 0262 #define DTV_ISDBT_LAYERC_TIME_INTERLEAVING 34 0263 0264 #define DTV_API_VERSION 35 0265 0266 #define DTV_CODE_RATE_HP 36 0267 #define DTV_CODE_RATE_LP 37 0268 #define DTV_GUARD_INTERVAL 38 0269 #define DTV_TRANSMISSION_MODE 39 0270 #define DTV_HIERARCHY 40 0271 0272 #define DTV_ISDBT_LAYER_ENABLED 41 0273 0274 #define DTV_STREAM_ID 42 0275 #define DTV_ISDBS_TS_ID_LEGACY DTV_STREAM_ID 0276 #define DTV_DVBT2_PLP_ID_LEGACY 43 0277 0278 #define DTV_ENUM_DELSYS 44 0279 0280 /* ATSC-MH */ 0281 #define DTV_ATSCMH_FIC_VER 45 0282 #define DTV_ATSCMH_PARADE_ID 46 0283 #define DTV_ATSCMH_NOG 47 0284 #define DTV_ATSCMH_TNOG 48 0285 #define DTV_ATSCMH_SGN 49 0286 #define DTV_ATSCMH_PRC 50 0287 #define DTV_ATSCMH_RS_FRAME_MODE 51 0288 #define DTV_ATSCMH_RS_FRAME_ENSEMBLE 52 0289 #define DTV_ATSCMH_RS_CODE_MODE_PRI 53 0290 #define DTV_ATSCMH_RS_CODE_MODE_SEC 54 0291 #define DTV_ATSCMH_SCCC_BLOCK_MODE 55 0292 #define DTV_ATSCMH_SCCC_CODE_MODE_A 56 0293 #define DTV_ATSCMH_SCCC_CODE_MODE_B 57 0294 #define DTV_ATSCMH_SCCC_CODE_MODE_C 58 0295 #define DTV_ATSCMH_SCCC_CODE_MODE_D 59 0296 0297 #define DTV_INTERLEAVING 60 0298 #define DTV_LNA 61 0299 0300 /* Quality parameters */ 0301 #define DTV_STAT_SIGNAL_STRENGTH 62 0302 #define DTV_STAT_CNR 63 0303 #define DTV_STAT_PRE_ERROR_BIT_COUNT 64 0304 #define DTV_STAT_PRE_TOTAL_BIT_COUNT 65 0305 #define DTV_STAT_POST_ERROR_BIT_COUNT 66 0306 #define DTV_STAT_POST_TOTAL_BIT_COUNT 67 0307 #define DTV_STAT_ERROR_BLOCK_COUNT 68 0308 #define DTV_STAT_TOTAL_BLOCK_COUNT 69 0309 0310 #define DTV_MAX_COMMAND DTV_STAT_TOTAL_BLOCK_COUNT 0311 0312 enum fe_pilot { 0313 PILOT_ON, 0314 PILOT_OFF, 0315 PILOT_AUTO 0316 }; 0317 0318 enum fe_rolloff { 0319 ROLLOFF_35, /* Implied value in DVB-S, default for DVB-S2 */ 0320 ROLLOFF_20, 0321 ROLLOFF_25, 0322 ROLLOFF_AUTO 0323 }; 0324 0325 enum fe_delivery_system { 0326 SYS_UNDEFINED, 0327 SYS_DVBC_ANNEX_A, 0328 SYS_DVBC_ANNEX_B, 0329 SYS_DVBT, 0330 SYS_DSS, 0331 SYS_DVBS, 0332 SYS_DVBS2, 0333 SYS_DVBH, 0334 SYS_ISDBT, 0335 SYS_ISDBS, 0336 SYS_ISDBC, 0337 SYS_ATSC, 0338 SYS_ATSCMH, 0339 SYS_DTMB, 0340 SYS_CMMB, 0341 SYS_DAB, 0342 SYS_DVBT2, 0343 SYS_TURBO, 0344 SYS_DVBC_ANNEX_C 0345 }; 0346 0347 /* backward compatibility */ 0348 #define SYS_DVBC_ANNEX_AC SYS_DVBC_ANNEX_A 0349 #define SYS_DMBTH SYS_DTMB /* DMB-TH is legacy name, use DTMB instead */ 0350 0351 /* ATSC-MH */ 0352 0353 enum atscmh_sccc_block_mode { 0354 ATSCMH_SCCC_BLK_SEP = 0, 0355 ATSCMH_SCCC_BLK_COMB = 1, 0356 ATSCMH_SCCC_BLK_RES = 2 0357 }; 0358 0359 enum atscmh_sccc_code_mode { 0360 ATSCMH_SCCC_CODE_HLF = 0, 0361 ATSCMH_SCCC_CODE_QTR = 1, 0362 ATSCMH_SCCC_CODE_RES = 2 0363 }; 0364 0365 enum atscmh_rs_frame_ensemble { 0366 ATSCMH_RSFRAME_ENS_PRI = 0, 0367 ATSCMH_RSFRAME_ENS_SEC = 1 0368 }; 0369 0370 enum atscmh_rs_frame_mode { 0371 ATSCMH_RSFRAME_PRI_ONLY = 0, 0372 ATSCMH_RSFRAME_PRI_SEC = 1, 0373 ATSCMH_RSFRAME_RES = 2 0374 }; 0375 0376 enum atscmh_rs_code_mode { 0377 ATSCMH_RSCODE_211_187 = 0, 0378 ATSCMH_RSCODE_223_187 = 1, 0379 ATSCMH_RSCODE_235_187 = 2, 0380 ATSCMH_RSCODE_RES = 3 0381 }; 0382 0383 #define NO_STREAM_ID_FILTER (~0U) 0384 #define LNA_AUTO (~0U) 0385 0386 struct dtv_cmds_h { 0387 char *name; /* A display name for debugging purposes */ 0388 0389 __u32 cmd; /* A unique ID */ 0390 0391 /* Flags */ 0392 __u32 set:1; /* Either a set or get property */ 0393 __u32 buffer:1; /* Does this property use the buffer? */ 0394 __u32 reserved:30; /* Align */ 0395 }; 0396 0397 /** 0398 * Scale types for the quality parameters. 0399 * @FE_SCALE_NOT_AVAILABLE: That QoS measure is not available. That 0400 * could indicate a temporary or a permanent 0401 * condition. 0402 * @FE_SCALE_DECIBEL: The scale is measured in 0.001 dB steps, typically 0403 * used on signal measures. 0404 * @FE_SCALE_RELATIVE: The scale is a relative percentual measure, 0405 * ranging from 0 (0%) to 0xffff (100%). 0406 * @FE_SCALE_COUNTER: The scale counts the occurrence of an event, like 0407 * bit error, block error, lapsed time. 0408 */ 0409 enum fecap_scale_params { 0410 FE_SCALE_NOT_AVAILABLE = 0, 0411 FE_SCALE_DECIBEL, 0412 FE_SCALE_RELATIVE, 0413 FE_SCALE_COUNTER 0414 }; 0415 0416 /** 0417 * struct dtv_stats - Used for reading a DTV status property 0418 * 0419 * @value: value of the measure. Should range from 0 to 0xffff; 0420 * @scale: Filled with enum fecap_scale_params - the scale 0421 * in usage for that parameter 0422 * 0423 * For most delivery systems, this will return a single value for each 0424 * parameter. 0425 * It should be noticed, however, that new OFDM delivery systems like 0426 * ISDB can use different modulation types for each group of carriers. 0427 * On such standards, up to 8 groups of statistics can be provided, one 0428 * for each carrier group (called "layer" on ISDB). 0429 * In order to be consistent with other delivery systems, the first 0430 * value refers to the entire set of carriers ("global"). 0431 * dtv_status:scale should use the value FE_SCALE_NOT_AVAILABLE when 0432 * the value for the entire group of carriers or from one specific layer 0433 * is not provided by the hardware. 0434 * st.len should be filled with the latest filled status + 1. 0435 * 0436 * In other words, for ISDB, those values should be filled like: 0437 * u.st.stat.svalue[0] = global statistics; 0438 * u.st.stat.scale[0] = FE_SCALE_DECIBEL; 0439 * u.st.stat.value[1] = layer A statistics; 0440 * u.st.stat.scale[1] = FE_SCALE_NOT_AVAILABLE (if not available); 0441 * u.st.stat.svalue[2] = layer B statistics; 0442 * u.st.stat.scale[2] = FE_SCALE_DECIBEL; 0443 * u.st.stat.svalue[3] = layer C statistics; 0444 * u.st.stat.scale[3] = FE_SCALE_DECIBEL; 0445 * u.st.len = 4; 0446 */ 0447 struct dtv_stats { 0448 __u8 scale; /* enum fecap_scale_params type */ 0449 union { 0450 __u64 uvalue; /* for counters and relative scales */ 0451 __s64 svalue; /* for 0.001 dB measures */ 0452 }; 0453 } __attribute__ ((packed)); 0454 0455 0456 #define MAX_DTV_STATS 4 0457 0458 struct dtv_fe_stats { 0459 __u8 len; 0460 struct dtv_stats stat[MAX_DTV_STATS]; 0461 } __attribute__ ((packed)); 0462 0463 struct dtv_property { 0464 __u32 cmd; 0465 __u32 reserved[3]; 0466 union { 0467 __u32 data; 0468 struct dtv_fe_stats st; 0469 struct { 0470 __u8 data[32]; 0471 __u32 len; 0472 __u32 reserved1[3]; 0473 void *reserved2; 0474 } buffer; 0475 } u; 0476 int result; 0477 } __attribute__ ((packed)); 0478 0479 /* num of properties cannot exceed DTV_IOCTL_MAX_MSGS per ioctl */ 0480 #define DTV_IOCTL_MAX_MSGS 64 0481 0482 struct dtv_properties { 0483 __u32 num; 0484 struct dtv_property *props; 0485 }; 0486 0487 0488 /* 0489 * DEPRECATED: The DVBv3 ioctls, structs and enums should not be used on 0490 * newer programs, as it doesn't support the second generation of digital 0491 * TV standards, nor supports newer delivery systems. 0492 */ 0493 0494 enum fe_bandwidth { 0495 BANDWIDTH_8_MHZ, 0496 BANDWIDTH_7_MHZ, 0497 BANDWIDTH_6_MHZ, 0498 BANDWIDTH_AUTO, 0499 BANDWIDTH_5_MHZ, 0500 BANDWIDTH_10_MHZ, 0501 BANDWIDTH_1_712_MHZ 0502 }; 0503 0504 /* This is needed for legacy userspace support */ 0505 typedef enum fe_sec_voltage fe_sec_voltage_t; 0506 typedef enum fe_caps fe_caps_t; 0507 typedef enum fe_type fe_type_t; 0508 typedef enum fe_sec_tone_mode fe_sec_tone_mode_t; 0509 typedef enum fe_sec_mini_cmd fe_sec_mini_cmd_t; 0510 typedef enum fe_status fe_status_t; 0511 typedef enum fe_spectral_inversion fe_spectral_inversion_t; 0512 typedef enum fe_code_rate fe_code_rate_t; 0513 typedef enum fe_modulation fe_modulation_t; 0514 typedef enum fe_transmit_mode fe_transmit_mode_t; 0515 typedef enum fe_bandwidth fe_bandwidth_t; 0516 typedef enum fe_guard_interval fe_guard_interval_t; 0517 typedef enum fe_hierarchy fe_hierarchy_t; 0518 typedef enum fe_pilot fe_pilot_t; 0519 typedef enum fe_rolloff fe_rolloff_t; 0520 typedef enum fe_delivery_system fe_delivery_system_t; 0521 0522 struct dvb_qpsk_parameters { 0523 __u32 symbol_rate; /* symbol rate in Symbols per second */ 0524 fe_code_rate_t fec_inner; /* forward error correction (see above) */ 0525 }; 0526 0527 struct dvb_qam_parameters { 0528 __u32 symbol_rate; /* symbol rate in Symbols per second */ 0529 fe_code_rate_t fec_inner; /* forward error correction (see above) */ 0530 fe_modulation_t modulation; /* modulation type (see above) */ 0531 }; 0532 0533 struct dvb_vsb_parameters { 0534 fe_modulation_t modulation; /* modulation type (see above) */ 0535 }; 0536 0537 struct dvb_ofdm_parameters { 0538 fe_bandwidth_t bandwidth; 0539 fe_code_rate_t code_rate_HP; /* high priority stream code rate */ 0540 fe_code_rate_t code_rate_LP; /* low priority stream code rate */ 0541 fe_modulation_t constellation; /* modulation type (see above) */ 0542 fe_transmit_mode_t transmission_mode; 0543 fe_guard_interval_t guard_interval; 0544 fe_hierarchy_t hierarchy_information; 0545 }; 0546 0547 struct dvb_frontend_parameters { 0548 __u32 frequency; /* (absolute) frequency in Hz for DVB-C/DVB-T/ATSC */ 0549 /* intermediate frequency in kHz for DVB-S */ 0550 fe_spectral_inversion_t inversion; 0551 union { 0552 struct dvb_qpsk_parameters qpsk; /* DVB-S */ 0553 struct dvb_qam_parameters qam; /* DVB-C */ 0554 struct dvb_ofdm_parameters ofdm; /* DVB-T */ 0555 struct dvb_vsb_parameters vsb; /* ATSC */ 0556 } u; 0557 }; 0558 0559 struct dvb_frontend_event { 0560 fe_status_t status; 0561 struct dvb_frontend_parameters parameters; 0562 }; 0563 0564 #define FE_SET_PROPERTY _IOW('o', 82, struct dtv_properties) 0565 #define FE_GET_PROPERTY _IOR('o', 83, struct dtv_properties) 0566 0567 /** 0568 * When set, this flag will disable any zigzagging or other "normal" tuning 0569 * behaviour. Additionally, there will be no automatic monitoring of the lock 0570 * status, and hence no frontend events will be generated. If a frontend device 0571 * is closed, this flag will be automatically turned off when the device is 0572 * reopened read-write. 0573 */ 0574 #define FE_TUNE_MODE_ONESHOT 0x01 0575 0576 #define FE_GET_INFO _IOR('o', 61, struct dvb_frontend_info) 0577 0578 #define FE_DISEQC_RESET_OVERLOAD _IO('o', 62) 0579 #define FE_DISEQC_SEND_MASTER_CMD _IOW('o', 63, struct dvb_diseqc_master_cmd) 0580 #define FE_DISEQC_RECV_SLAVE_REPLY _IOR('o', 64, struct dvb_diseqc_slave_reply) 0581 #define FE_DISEQC_SEND_BURST _IO('o', 65) /* fe_sec_mini_cmd_t */ 0582 0583 #define FE_SET_TONE _IO('o', 66) /* fe_sec_tone_mode_t */ 0584 #define FE_SET_VOLTAGE _IO('o', 67) /* fe_sec_voltage_t */ 0585 #define FE_ENABLE_HIGH_LNB_VOLTAGE _IO('o', 68) /* int */ 0586 0587 #define FE_READ_STATUS _IOR('o', 69, fe_status_t) 0588 #define FE_READ_BER _IOR('o', 70, __u32) 0589 #define FE_READ_SIGNAL_STRENGTH _IOR('o', 71, __u16) 0590 #define FE_READ_SNR _IOR('o', 72, __u16) 0591 #define FE_READ_UNCORRECTED_BLOCKS _IOR('o', 73, __u32) 0592 0593 #define FE_SET_FRONTEND _IOW('o', 76, struct dvb_frontend_parameters) 0594 #define FE_GET_FRONTEND _IOR('o', 77, struct dvb_frontend_parameters) 0595 #define FE_SET_FRONTEND_TUNE_MODE _IO('o', 81) /* unsigned int */ 0596 #define FE_GET_EVENT _IOR('o', 78, struct dvb_frontend_event) 0597 0598 #define FE_DISHNETWORK_SEND_LEGACY_CMD _IO('o', 80) /* unsigned int */ 0599 0600 #endif /*_DVBFRONTEND_H_*/