1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 2 /* 3 * Abilis Systems Single DVB-T Receiver 4 * Copyright (C) 2008 Pierrick Hascoet <pierrick.hascoet@abilis.com> 5 */ 6 #ifndef _AS10X_TYPES_H_ 7 #define _AS10X_TYPES_H_ 8 9 /*********************************/ 10 /* MACRO DEFINITIONS */ 11 /*********************************/ 12 13 /* bandwidth constant values */ 14 #define BW_5_MHZ 0x00 15 #define BW_6_MHZ 0x01 16 #define BW_7_MHZ 0x02 17 #define BW_8_MHZ 0x03 18 19 /* hierarchy priority selection values */ 20 #define HIER_NO_PRIORITY 0x00 21 #define HIER_LOW_PRIORITY 0x01 22 #define HIER_HIGH_PRIORITY 0x02 23 24 /* constellation available values */ 25 #define CONST_QPSK 0x00 26 #define CONST_QAM16 0x01 27 #define CONST_QAM64 0x02 28 #define CONST_UNKNOWN 0xFF 29 30 /* hierarchy available values */ 31 #define HIER_NONE 0x00 32 #define HIER_ALPHA_1 0x01 33 #define HIER_ALPHA_2 0x02 34 #define HIER_ALPHA_4 0x03 35 #define HIER_UNKNOWN 0xFF 36 37 /* interleaving available values */ 38 #define INTLV_NATIVE 0x00 39 #define INTLV_IN_DEPTH 0x01 40 #define INTLV_UNKNOWN 0xFF 41 42 /* code rate available values */ 43 #define CODE_RATE_1_2 0x00 44 #define CODE_RATE_2_3 0x01 45 #define CODE_RATE_3_4 0x02 46 #define CODE_RATE_5_6 0x03 47 #define CODE_RATE_7_8 0x04 48 #define CODE_RATE_UNKNOWN 0xFF 49 50 /* guard interval available values */ 51 #define GUARD_INT_1_32 0x00 52 #define GUARD_INT_1_16 0x01 53 #define GUARD_INT_1_8 0x02 54 #define GUARD_INT_1_4 0x03 55 #define GUARD_UNKNOWN 0xFF 56 57 /* transmission mode available values */ 58 #define TRANS_MODE_2K 0x00 59 #define TRANS_MODE_8K 0x01 60 #define TRANS_MODE_4K 0x02 61 #define TRANS_MODE_UNKNOWN 0xFF 62 63 /* DVBH signalling available values */ 64 #define TIMESLICING_PRESENT 0x01 65 #define MPE_FEC_PRESENT 0x02 66 67 /* tune state available */ 68 #define TUNE_STATUS_NOT_TUNED 0x00 69 #define TUNE_STATUS_IDLE 0x01 70 #define TUNE_STATUS_LOCKING 0x02 71 #define TUNE_STATUS_SIGNAL_DVB_OK 0x03 72 #define TUNE_STATUS_STREAM_DETECTED 0x04 73 #define TUNE_STATUS_STREAM_TUNED 0x05 74 #define TUNE_STATUS_ERROR 0xFF 75 76 /* available TS FID filter types */ 77 #define TS_PID_TYPE_TS 0 78 #define TS_PID_TYPE_PSI_SI 1 79 #define TS_PID_TYPE_MPE 2 80 81 /* number of echos available */ 82 #define MAX_ECHOS 15 83 84 /* Context types */ 85 #define CONTEXT_LNA 1010 86 #define CONTEXT_ELNA_HYSTERESIS 4003 87 #define CONTEXT_ELNA_GAIN 4004 88 #define CONTEXT_MER_THRESHOLD 5005 89 #define CONTEXT_MER_OFFSET 5006 90 #define CONTEXT_IR_STATE 7000 91 #define CONTEXT_TSOUT_MSB_FIRST 7004 92 #define CONTEXT_TSOUT_FALLING_EDGE 7005 93 94 /* Configuration modes */ 95 #define CFG_MODE_ON 0 96 #define CFG_MODE_OFF 1 97 #define CFG_MODE_AUTO 2 98 99 struct as10x_tps { 100 uint8_t modulation; 101 uint8_t hierarchy; 102 uint8_t interleaving_mode; 103 uint8_t code_rate_HP; 104 uint8_t code_rate_LP; 105 uint8_t guard_interval; 106 uint8_t transmission_mode; 107 uint8_t DVBH_mask_HP; 108 uint8_t DVBH_mask_LP; 109 uint16_t cell_ID; 110 } __packed; 111 112 struct as10x_tune_args { 113 /* frequency */ 114 uint32_t freq; 115 /* bandwidth */ 116 uint8_t bandwidth; 117 /* hierarchy selection */ 118 uint8_t hier_select; 119 /* constellation */ 120 uint8_t modulation; 121 /* hierarchy */ 122 uint8_t hierarchy; 123 /* interleaving mode */ 124 uint8_t interleaving_mode; 125 /* code rate */ 126 uint8_t code_rate; 127 /* guard interval */ 128 uint8_t guard_interval; 129 /* transmission mode */ 130 uint8_t transmission_mode; 131 } __packed; 132 133 struct as10x_tune_status { 134 /* tune status */ 135 uint8_t tune_state; 136 /* signal strength */ 137 int16_t signal_strength; 138 /* packet error rate 10^-4 */ 139 uint16_t PER; 140 /* bit error rate 10^-4 */ 141 uint16_t BER; 142 } __packed; 143 144 struct as10x_demod_stats { 145 /* frame counter */ 146 uint32_t frame_count; 147 /* Bad frame counter */ 148 uint32_t bad_frame_count; 149 /* Number of wrong bytes fixed by Reed-Solomon */ 150 uint32_t bytes_fixed_by_rs; 151 /* Averaged MER */ 152 uint16_t mer; 153 /* statistics calculation state indicator (started or not) */ 154 uint8_t has_started; 155 } __packed; 156 157 struct as10x_ts_filter { 158 uint16_t pid; /* valid PID value 0x00 : 0x2000 */ 159 uint8_t type; /* Red TS_PID_TYPE_<N> values */ 160 uint8_t idx; /* index in filtering table */ 161 } __packed; 162 163 struct as10x_register_value { 164 uint8_t mode; 165 union { 166 uint8_t value8; /* 8 bit value */ 167 uint16_t value16; /* 16 bit value */ 168 uint32_t value32; /* 32 bit value */ 169 } __packed u; 170 } __packed; 171 172 struct as10x_register_addr { 173 /* register addr */ 174 uint32_t addr; 175 /* register mode access */ 176 uint8_t mode; 177 }; 178 179 #endif 180