130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * frontend.h 330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Copyright (C) 2000 Marcus Metzler <marcus@convergence.de> 530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Ralph Metzler <ralph@convergence.de> 630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Holger Waechtler <holger@convergence.de> 730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Andre Draszik <ad@convergence.de> 830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * for convergence integrated media GmbH 930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 1030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * This program is free software; you can redistribute it and/or 1130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * modify it under the terms of the GNU Lesser General Public License 1230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * as published by the Free Software Foundation; either version 2.1 1330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * of the License, or (at your option) any later version. 1430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 1530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * This program is distributed in the hope that it will be useful, 1630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * but WITHOUT ANY WARRANTY; without even the implied warranty of 1730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * GNU General Public License for more details. 1930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 2030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * You should have received a copy of the GNU Lesser General Public License 2130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * along with this program; if not, write to the Free Software 2230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 2330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 2430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 2530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 2630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef _DVBFRONTEND_H_ 2730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define _DVBFRONTEND_H_ 2830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 2930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/types.h> 3030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 3130692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef enum fe_type { 3230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_QPSK, 3330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_QAM, 3430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_OFDM, 3530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_ATSC 3630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} fe_type_t; 3730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 3830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 3930692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef enum fe_caps { 4030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_IS_STUPID = 0, 4130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_CAN_INVERSION_AUTO = 0x1, 4230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_CAN_FEC_1_2 = 0x2, 4330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_CAN_FEC_2_3 = 0x4, 4430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_CAN_FEC_3_4 = 0x8, 4530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_CAN_FEC_4_5 = 0x10, 4630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_CAN_FEC_5_6 = 0x20, 4730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_CAN_FEC_6_7 = 0x40, 4830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_CAN_FEC_7_8 = 0x80, 4930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_CAN_FEC_8_9 = 0x100, 5030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_CAN_FEC_AUTO = 0x200, 5130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_CAN_QPSK = 0x400, 5230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_CAN_QAM_16 = 0x800, 5330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_CAN_QAM_32 = 0x1000, 5430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_CAN_QAM_64 = 0x2000, 5530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_CAN_QAM_128 = 0x4000, 5630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_CAN_QAM_256 = 0x8000, 5730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_CAN_QAM_AUTO = 0x10000, 5830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_CAN_TRANSMISSION_MODE_AUTO = 0x20000, 5930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_CAN_BANDWIDTH_AUTO = 0x40000, 6030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_CAN_GUARD_INTERVAL_AUTO = 0x80000, 6130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_CAN_HIERARCHY_AUTO = 0x100000, 6230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_CAN_8VSB = 0x200000, 6330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_CAN_16VSB = 0x400000, 6430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_HAS_EXTENDED_CAPS = 0x800000, /* We need more bitspace for newer APIs, indicate this. */ 6530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_CAN_MULTISTREAM = 0x4000000, /* frontend supports multistream filtering */ 6630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_CAN_TURBO_FEC = 0x8000000, /* frontend supports "turbo fec modulation" */ 6730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_CAN_2G_MODULATION = 0x10000000, /* frontend supports "2nd generation modulation" (DVB-S2) */ 6830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_NEEDS_BENDING = 0x20000000, /* not supported anymore, don't use (frontend requires frequency bending) */ 6930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_CAN_RECOVER = 0x40000000, /* frontend can recover from a cable unplug automatically */ 7030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_CAN_MUTE_TS = 0x80000000 /* frontend can stop spurious TS data output */ 7130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} fe_caps_t; 7230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 7330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 7430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct dvb_frontend_info { 7530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng char name[128]; 7630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng fe_type_t type; /* DEPRECATED. Use DTV_ENUM_DELSYS instead */ 7730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 frequency_min; 7830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 frequency_max; 7930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 frequency_stepsize; 8030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 frequency_tolerance; 8130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 symbol_rate_min; 8230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 symbol_rate_max; 8330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 symbol_rate_tolerance; /* ppm */ 8430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 notifier_delay; /* DEPRECATED */ 8530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng fe_caps_t caps; 8630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 8730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 8830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 8930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 9030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Check out the DiSEqC bus spec available on http://www.eutelsat.org/ for 9130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * the meaning of this struct... 9230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 9330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct dvb_diseqc_master_cmd { 9430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 msg [6]; /* { framing, address, command, data [3] } */ 9530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 msg_len; /* valid values are 3...6 */ 9630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 9730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 9830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 9930692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct dvb_diseqc_slave_reply { 10030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 msg [4]; /* { framing, data [3] } */ 10130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 msg_len; /* valid values are 0...4, 0 means no msg */ 10230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int timeout; /* return from ioctl after timeout ms with */ 10330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; /* errorcode when no message was received */ 10430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 10530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 10630692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef enum fe_sec_voltage { 10730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng SEC_VOLTAGE_13, 10830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng SEC_VOLTAGE_18, 10930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng SEC_VOLTAGE_OFF 11030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} fe_sec_voltage_t; 11130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 11230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 11330692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef enum fe_sec_tone_mode { 11430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng SEC_TONE_ON, 11530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng SEC_TONE_OFF 11630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} fe_sec_tone_mode_t; 11730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 11830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 11930692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef enum fe_sec_mini_cmd { 12030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng SEC_MINI_A, 12130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng SEC_MINI_B 12230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} fe_sec_mini_cmd_t; 12330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 12430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 12530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 12630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * enum fe_status - enumerates the possible frontend status 12730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @FE_HAS_SIGNAL: found something above the noise level 12830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @FE_HAS_CARRIER: found a DVB signal 12930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @FE_HAS_VITERBI: FEC is stable 13030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @FE_HAS_SYNC: found sync bytes 13130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @FE_HAS_LOCK: everything's working 13230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @FE_TIMEDOUT: no lock within the last ~2 seconds 13330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @FE_REINIT: frontend was reinitialized, application is recommended 13430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * to reset DiSEqC, tone and parameters 13530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 13630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 13730692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef enum fe_status { 13830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_HAS_SIGNAL = 0x01, 13930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_HAS_CARRIER = 0x02, 14030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_HAS_VITERBI = 0x04, 14130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_HAS_SYNC = 0x08, 14230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_HAS_LOCK = 0x10, 14330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_TIMEDOUT = 0x20, 14430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_REINIT = 0x40, 14530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} fe_status_t; 14630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 14730692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef enum fe_spectral_inversion { 14830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng INVERSION_OFF, 14930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng INVERSION_ON, 15030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng INVERSION_AUTO 15130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} fe_spectral_inversion_t; 15230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 15330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 15430692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef enum fe_code_rate { 15530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FEC_NONE = 0, 15630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FEC_1_2, 15730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FEC_2_3, 15830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FEC_3_4, 15930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FEC_4_5, 16030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FEC_5_6, 16130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FEC_6_7, 16230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FEC_7_8, 16330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FEC_8_9, 16430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FEC_AUTO, 16530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FEC_3_5, 16630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FEC_9_10, 16730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FEC_2_5, 16830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} fe_code_rate_t; 16930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 17030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 17130692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef enum fe_modulation { 17230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng QPSK, 17330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng QAM_16, 17430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng QAM_32, 17530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng QAM_64, 17630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng QAM_128, 17730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng QAM_256, 17830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng QAM_AUTO, 17930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng VSB_8, 18030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng VSB_16, 18130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng PSK_8, 18230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng APSK_16, 18330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng APSK_32, 18430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng DQPSK, 18530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng QAM_4_NR, 18630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} fe_modulation_t; 18730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 18830692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef enum fe_transmit_mode { 18930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TRANSMISSION_MODE_2K, 19030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TRANSMISSION_MODE_8K, 19130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TRANSMISSION_MODE_AUTO, 19230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TRANSMISSION_MODE_4K, 19330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TRANSMISSION_MODE_1K, 19430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TRANSMISSION_MODE_16K, 19530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TRANSMISSION_MODE_32K, 19630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TRANSMISSION_MODE_C1, 19730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TRANSMISSION_MODE_C3780, 19830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} fe_transmit_mode_t; 19930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 20030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#if defined(__DVB_CORE__) || !defined (__KERNEL__) 20130692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef enum fe_bandwidth { 20230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng BANDWIDTH_8_MHZ, 20330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng BANDWIDTH_7_MHZ, 20430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng BANDWIDTH_6_MHZ, 20530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng BANDWIDTH_AUTO, 20630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng BANDWIDTH_5_MHZ, 20730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng BANDWIDTH_10_MHZ, 20830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng BANDWIDTH_1_712_MHZ, 20930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} fe_bandwidth_t; 21030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif 21130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 21230692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef enum fe_guard_interval { 21330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng GUARD_INTERVAL_1_32, 21430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng GUARD_INTERVAL_1_16, 21530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng GUARD_INTERVAL_1_8, 21630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng GUARD_INTERVAL_1_4, 21730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng GUARD_INTERVAL_AUTO, 21830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng GUARD_INTERVAL_1_128, 21930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng GUARD_INTERVAL_19_128, 22030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng GUARD_INTERVAL_19_256, 22130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng GUARD_INTERVAL_PN420, 22230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng GUARD_INTERVAL_PN595, 22330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng GUARD_INTERVAL_PN945, 22430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} fe_guard_interval_t; 22530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 22630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 22730692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef enum fe_hierarchy { 22830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng HIERARCHY_NONE, 22930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng HIERARCHY_1, 23030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng HIERARCHY_2, 23130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng HIERARCHY_4, 23230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng HIERARCHY_AUTO 23330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} fe_hierarchy_t; 23430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 23530692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum fe_interleaving { 23630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng INTERLEAVING_NONE, 23730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng INTERLEAVING_AUTO, 23830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng INTERLEAVING_240, 23930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng INTERLEAVING_720, 24030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 24130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 24230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#if defined(__DVB_CORE__) || !defined (__KERNEL__) 24330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct dvb_qpsk_parameters { 24430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 symbol_rate; /* symbol rate in Symbols per second */ 24530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng fe_code_rate_t fec_inner; /* forward error correction (see above) */ 24630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 24730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 24830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct dvb_qam_parameters { 24930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 symbol_rate; /* symbol rate in Symbols per second */ 25030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng fe_code_rate_t fec_inner; /* forward error correction (see above) */ 25130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng fe_modulation_t modulation; /* modulation type (see above) */ 25230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 25330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 25430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct dvb_vsb_parameters { 25530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng fe_modulation_t modulation; /* modulation type (see above) */ 25630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 25730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 25830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct dvb_ofdm_parameters { 25930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng fe_bandwidth_t bandwidth; 26030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng fe_code_rate_t code_rate_HP; /* high priority stream code rate */ 26130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng fe_code_rate_t code_rate_LP; /* low priority stream code rate */ 26230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng fe_modulation_t constellation; /* modulation type (see above) */ 26330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng fe_transmit_mode_t transmission_mode; 26430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng fe_guard_interval_t guard_interval; 26530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng fe_hierarchy_t hierarchy_information; 26630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 26730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 26830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 26930692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct dvb_frontend_parameters { 27030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 frequency; /* (absolute) frequency in Hz for QAM/OFDM/ATSC */ 27130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng /* intermediate frequency in kHz for QPSK */ 27230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng fe_spectral_inversion_t inversion; 27330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng union { 27430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct dvb_qpsk_parameters qpsk; 27530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct dvb_qam_parameters qam; 27630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct dvb_ofdm_parameters ofdm; 27730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct dvb_vsb_parameters vsb; 27830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng } u; 27930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 28030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 28130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct dvb_frontend_event { 28230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng fe_status_t status; 28330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct dvb_frontend_parameters parameters; 28430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 28530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif 28630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 28730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* S2API Commands */ 28830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_UNDEFINED 0 28930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_TUNE 1 29030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_CLEAR 2 29130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_FREQUENCY 3 29230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_MODULATION 4 29330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_BANDWIDTH_HZ 5 29430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_INVERSION 6 29530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_DISEQC_MASTER 7 29630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_SYMBOL_RATE 8 29730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_INNER_FEC 9 29830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_VOLTAGE 10 29930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_TONE 11 30030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_PILOT 12 30130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ROLLOFF 13 30230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_DISEQC_SLAVE_REPLY 14 30330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 30430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Basic enumeration set for querying unlimited capabilities */ 30530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_FE_CAPABILITY_COUNT 15 30630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_FE_CAPABILITY 16 30730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_DELIVERY_SYSTEM 17 30830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 30930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* ISDB-T and ISDB-Tsb */ 31030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ISDBT_PARTIAL_RECEPTION 18 31130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ISDBT_SOUND_BROADCASTING 19 31230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 31330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ISDBT_SB_SUBCHANNEL_ID 20 31430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ISDBT_SB_SEGMENT_IDX 21 31530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ISDBT_SB_SEGMENT_COUNT 22 31630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 31730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ISDBT_LAYERA_FEC 23 31830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ISDBT_LAYERA_MODULATION 24 31930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ISDBT_LAYERA_SEGMENT_COUNT 25 32030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ISDBT_LAYERA_TIME_INTERLEAVING 26 32130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 32230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ISDBT_LAYERB_FEC 27 32330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ISDBT_LAYERB_MODULATION 28 32430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ISDBT_LAYERB_SEGMENT_COUNT 29 32530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ISDBT_LAYERB_TIME_INTERLEAVING 30 32630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 32730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ISDBT_LAYERC_FEC 31 32830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ISDBT_LAYERC_MODULATION 32 32930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ISDBT_LAYERC_SEGMENT_COUNT 33 33030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ISDBT_LAYERC_TIME_INTERLEAVING 34 33130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 33230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_API_VERSION 35 33330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 33430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_CODE_RATE_HP 36 33530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_CODE_RATE_LP 37 33630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_GUARD_INTERVAL 38 33730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_TRANSMISSION_MODE 39 33830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_HIERARCHY 40 33930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 34030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ISDBT_LAYER_ENABLED 41 34130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 34230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_STREAM_ID 42 34330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ISDBS_TS_ID_LEGACY DTV_STREAM_ID 34430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_DVBT2_PLP_ID_LEGACY 43 34530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 34630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ENUM_DELSYS 44 34730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 34830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* ATSC-MH */ 34930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ATSCMH_FIC_VER 45 35030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ATSCMH_PARADE_ID 46 35130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ATSCMH_NOG 47 35230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ATSCMH_TNOG 48 35330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ATSCMH_SGN 49 35430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ATSCMH_PRC 50 35530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ATSCMH_RS_FRAME_MODE 51 35630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ATSCMH_RS_FRAME_ENSEMBLE 52 35730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ATSCMH_RS_CODE_MODE_PRI 53 35830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ATSCMH_RS_CODE_MODE_SEC 54 35930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ATSCMH_SCCC_BLOCK_MODE 55 36030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ATSCMH_SCCC_CODE_MODE_A 56 36130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ATSCMH_SCCC_CODE_MODE_B 57 36230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ATSCMH_SCCC_CODE_MODE_C 58 36330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_ATSCMH_SCCC_CODE_MODE_D 59 36430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 36530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_INTERLEAVING 60 36630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_LNA 61 36730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 36830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Quality parameters */ 36930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_STAT_SIGNAL_STRENGTH 62 37030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_STAT_CNR 63 37130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_STAT_PRE_ERROR_BIT_COUNT 64 37230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_STAT_PRE_TOTAL_BIT_COUNT 65 37330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_STAT_POST_ERROR_BIT_COUNT 66 37430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_STAT_POST_TOTAL_BIT_COUNT 67 37530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_STAT_ERROR_BLOCK_COUNT 68 37630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_STAT_TOTAL_BLOCK_COUNT 69 37730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 37830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_MAX_COMMAND DTV_STAT_TOTAL_BLOCK_COUNT 37930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 38030692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef enum fe_pilot { 38130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng PILOT_ON, 38230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng PILOT_OFF, 38330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng PILOT_AUTO, 38430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} fe_pilot_t; 38530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 38630692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef enum fe_rolloff { 38730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng ROLLOFF_35, /* Implied value in DVB-S, default for DVB-S2 */ 38830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng ROLLOFF_20, 38930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng ROLLOFF_25, 39030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng ROLLOFF_AUTO, 39130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} fe_rolloff_t; 39230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 39330692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef enum fe_delivery_system { 39430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng SYS_UNDEFINED, 39530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng SYS_DVBC_ANNEX_A, 39630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng SYS_DVBC_ANNEX_B, 39730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng SYS_DVBT, 39830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng SYS_DSS, 39930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng SYS_DVBS, 40030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng SYS_DVBS2, 40130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng SYS_DVBH, 40230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng SYS_ISDBT, 40330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng SYS_ISDBS, 40430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng SYS_ISDBC, 40530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng SYS_ATSC, 40630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng SYS_ATSCMH, 40730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng SYS_DTMB, 40830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng SYS_CMMB, 40930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng SYS_DAB, 41030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng SYS_DVBT2, 41130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng SYS_TURBO, 41230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng SYS_DVBC_ANNEX_C, 41330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} fe_delivery_system_t; 41430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 41530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* backward compatibility */ 41630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SYS_DVBC_ANNEX_AC SYS_DVBC_ANNEX_A 41730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SYS_DMBTH SYS_DTMB /* DMB-TH is legacy name, use DTMB instead */ 41830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 41930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* ATSC-MH */ 42030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 42130692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum atscmh_sccc_block_mode { 42230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng ATSCMH_SCCC_BLK_SEP = 0, 42330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng ATSCMH_SCCC_BLK_COMB = 1, 42430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng ATSCMH_SCCC_BLK_RES = 2, 42530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 42630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 42730692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum atscmh_sccc_code_mode { 42830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng ATSCMH_SCCC_CODE_HLF = 0, 42930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng ATSCMH_SCCC_CODE_QTR = 1, 43030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng ATSCMH_SCCC_CODE_RES = 2, 43130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 43230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 43330692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum atscmh_rs_frame_ensemble { 43430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng ATSCMH_RSFRAME_ENS_PRI = 0, 43530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng ATSCMH_RSFRAME_ENS_SEC = 1, 43630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 43730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 43830692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum atscmh_rs_frame_mode { 43930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng ATSCMH_RSFRAME_PRI_ONLY = 0, 44030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng ATSCMH_RSFRAME_PRI_SEC = 1, 44130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng ATSCMH_RSFRAME_RES = 2, 44230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 44330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 44430692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum atscmh_rs_code_mode { 44530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng ATSCMH_RSCODE_211_187 = 0, 44630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng ATSCMH_RSCODE_223_187 = 1, 44730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng ATSCMH_RSCODE_235_187 = 2, 44830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng ATSCMH_RSCODE_RES = 3, 44930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 45030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 45130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NO_STREAM_ID_FILTER (~0U) 45230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define LNA_AUTO (~0U) 45330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 45430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct dtv_cmds_h { 45530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng char *name; /* A display name for debugging purposes */ 45630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 45730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 cmd; /* A unique ID */ 45830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 45930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng /* Flags */ 46030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 set:1; /* Either a set or get property */ 46130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 buffer:1; /* Does this property use the buffer? */ 46230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 reserved:30; /* Align */ 46330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 46430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 46530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 46630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Scale types for the quality parameters. 46730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @FE_SCALE_NOT_AVAILABLE: That QoS measure is not available. That 46830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * could indicate a temporary or a permanent 46930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * condition. 47030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @FE_SCALE_DECIBEL: The scale is measured in 0.0001 dB steps, typically 47130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * used on signal measures. 47230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @FE_SCALE_RELATIVE: The scale is a relative percentual measure, 47330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * ranging from 0 (0%) to 0xffff (100%). 47430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @FE_SCALE_COUNTER: The scale counts the occurrence of an event, like 47530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * bit error, block error, lapsed time. 47630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 47730692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum fecap_scale_params { 47830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_SCALE_NOT_AVAILABLE = 0, 47930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_SCALE_DECIBEL, 48030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_SCALE_RELATIVE, 48130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FE_SCALE_COUNTER 48230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 48330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 48430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 48530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * struct dtv_stats - Used for reading a DTV status property 48630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 48730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @value: value of the measure. Should range from 0 to 0xffff; 48830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @scale: Filled with enum fecap_scale_params - the scale 48930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * in usage for that parameter 49030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 49130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * For most delivery systems, this will return a single value for each 49230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * parameter. 49330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * It should be noticed, however, that new OFDM delivery systems like 49430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * ISDB can use different modulation types for each group of carriers. 49530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * On such standards, up to 8 groups of statistics can be provided, one 49630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * for each carrier group (called "layer" on ISDB). 49730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * In order to be consistent with other delivery systems, the first 49830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * value refers to the entire set of carriers ("global"). 49930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * dtv_status:scale should use the value FE_SCALE_NOT_AVAILABLE when 50030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * the value for the entire group of carriers or from one specific layer 50130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * is not provided by the hardware. 50230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * st.len should be filled with the latest filled status + 1. 50330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 50430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * In other words, for ISDB, those values should be filled like: 50530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * u.st.stat.svalue[0] = global statistics; 50630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * u.st.stat.scale[0] = FE_SCALE_DECIBELS; 50730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * u.st.stat.value[1] = layer A statistics; 50830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * u.st.stat.scale[1] = FE_SCALE_NOT_AVAILABLE (if not available); 50930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * u.st.stat.svalue[2] = layer B statistics; 51030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * u.st.stat.scale[2] = FE_SCALE_DECIBELS; 51130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * u.st.stat.svalue[3] = layer C statistics; 51230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * u.st.stat.scale[3] = FE_SCALE_DECIBELS; 51330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * u.st.len = 4; 51430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 51530692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct dtv_stats { 51630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 scale; /* enum fecap_scale_params type */ 51730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng union { 51830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 uvalue; /* for counters and relative scales */ 51930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __s64 svalue; /* for 0.0001 dB measures */ 52030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng }; 52130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__ ((packed)); 52230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 52330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 52430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define MAX_DTV_STATS 4 52530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 52630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct dtv_fe_stats { 52730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 len; 52830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct dtv_stats stat[MAX_DTV_STATS]; 52930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__ ((packed)); 53030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 53130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct dtv_property { 53230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 cmd; 53330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 reserved[3]; 53430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng union { 53530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 data; 53630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct dtv_fe_stats st; 53730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct { 53830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 data[32]; 53930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 len; 54030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 reserved1[3]; 54130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng void *reserved2; 54230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng } buffer; 54330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng } u; 54430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int result; 54530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__ ((packed)); 54630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 54730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* num of properties cannot exceed DTV_IOCTL_MAX_MSGS per ioctl */ 54830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DTV_IOCTL_MAX_MSGS 64 54930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 55030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct dtv_properties { 55130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 num; 55230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct dtv_property *props; 55330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 55430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 55530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define FE_SET_PROPERTY _IOW('o', 82, struct dtv_properties) 55630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define FE_GET_PROPERTY _IOR('o', 83, struct dtv_properties) 55730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 55830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 55930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 56030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * When set, this flag will disable any zigzagging or other "normal" tuning 56130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * behaviour. Additionally, there will be no automatic monitoring of the lock 56230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * status, and hence no frontend events will be generated. If a frontend device 56330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * is closed, this flag will be automatically turned off when the device is 56430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * reopened read-write. 56530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 56630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define FE_TUNE_MODE_ONESHOT 0x01 56730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 56830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 56930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define FE_GET_INFO _IOR('o', 61, struct dvb_frontend_info) 57030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 57130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define FE_DISEQC_RESET_OVERLOAD _IO('o', 62) 57230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define FE_DISEQC_SEND_MASTER_CMD _IOW('o', 63, struct dvb_diseqc_master_cmd) 57330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define FE_DISEQC_RECV_SLAVE_REPLY _IOR('o', 64, struct dvb_diseqc_slave_reply) 57430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define FE_DISEQC_SEND_BURST _IO('o', 65) /* fe_sec_mini_cmd_t */ 57530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 57630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define FE_SET_TONE _IO('o', 66) /* fe_sec_tone_mode_t */ 57730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define FE_SET_VOLTAGE _IO('o', 67) /* fe_sec_voltage_t */ 57830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define FE_ENABLE_HIGH_LNB_VOLTAGE _IO('o', 68) /* int */ 57930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 58030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define FE_READ_STATUS _IOR('o', 69, fe_status_t) 58130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define FE_READ_BER _IOR('o', 70, __u32) 58230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define FE_READ_SIGNAL_STRENGTH _IOR('o', 71, __u16) 58330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define FE_READ_SNR _IOR('o', 72, __u16) 58430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define FE_READ_UNCORRECTED_BLOCKS _IOR('o', 73, __u32) 58530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 58630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define FE_SET_FRONTEND _IOW('o', 76, struct dvb_frontend_parameters) 58730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define FE_GET_FRONTEND _IOR('o', 77, struct dvb_frontend_parameters) 58830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define FE_SET_FRONTEND_TUNE_MODE _IO('o', 81) /* unsigned int */ 58930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define FE_GET_EVENT _IOR('o', 78, struct dvb_frontend_event) 59030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 59130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define FE_DISHNETWORK_SEND_LEGACY_CMD _IO('o', 80) /* unsigned int */ 59230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 59330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif /*_DVBFRONTEND_H_*/ 594