blob: 80a5398b580fe87ade07a0479047f88324879c17 [file] [log] [blame]
Pierrick Hascoet41b44e02011-10-31 12:24:39 -03001/*
2 * Abilis Systems Single DVB-T Receiver
3 * Copyright (C) 2008 Pierrick Hascoet <pierrick.hascoet@abilis.com>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2, or (at your option)
8 * any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
Pierrick Hascoet41b44e02011-10-31 12:24:39 -030014 */
15#ifndef _AS10X_TYPES_H_
16#define _AS10X_TYPES_H_
17
Pierrick Hascoet41b44e02011-10-31 12:24:39 -030018/*********************************/
19/* MACRO DEFINITIONS */
20/*********************************/
21
22/* bandwidth constant values */
Sylwester Nawrocki14e0e4b2011-11-06 16:31:44 -030023#define BW_5_MHZ 0x00
24#define BW_6_MHZ 0x01
25#define BW_7_MHZ 0x02
26#define BW_8_MHZ 0x03
Pierrick Hascoet41b44e02011-10-31 12:24:39 -030027
28/* hierarchy priority selection values */
Sylwester Nawrocki14e0e4b2011-11-06 16:31:44 -030029#define HIER_NO_PRIORITY 0x00
30#define HIER_LOW_PRIORITY 0x01
31#define HIER_HIGH_PRIORITY 0x02
Pierrick Hascoet41b44e02011-10-31 12:24:39 -030032
33/* constellation available values */
Sylwester Nawrocki14e0e4b2011-11-06 16:31:44 -030034#define CONST_QPSK 0x00
35#define CONST_QAM16 0x01
36#define CONST_QAM64 0x02
37#define CONST_UNKNOWN 0xFF
Pierrick Hascoet41b44e02011-10-31 12:24:39 -030038
39/* hierarchy available values */
Sylwester Nawrocki14e0e4b2011-11-06 16:31:44 -030040#define HIER_NONE 0x00
41#define HIER_ALPHA_1 0x01
42#define HIER_ALPHA_2 0x02
43#define HIER_ALPHA_4 0x03
44#define HIER_UNKNOWN 0xFF
Pierrick Hascoet41b44e02011-10-31 12:24:39 -030045
46/* interleaving available values */
Sylwester Nawrocki14e0e4b2011-11-06 16:31:44 -030047#define INTLV_NATIVE 0x00
48#define INTLV_IN_DEPTH 0x01
49#define INTLV_UNKNOWN 0xFF
Pierrick Hascoet41b44e02011-10-31 12:24:39 -030050
51/* code rate available values */
Sylwester Nawrocki14e0e4b2011-11-06 16:31:44 -030052#define CODE_RATE_1_2 0x00
53#define CODE_RATE_2_3 0x01
54#define CODE_RATE_3_4 0x02
55#define CODE_RATE_5_6 0x03
56#define CODE_RATE_7_8 0x04
57#define CODE_RATE_UNKNOWN 0xFF
Pierrick Hascoet41b44e02011-10-31 12:24:39 -030058
59/* guard interval available values */
Sylwester Nawrocki14e0e4b2011-11-06 16:31:44 -030060#define GUARD_INT_1_32 0x00
61#define GUARD_INT_1_16 0x01
62#define GUARD_INT_1_8 0x02
63#define GUARD_INT_1_4 0x03
64#define GUARD_UNKNOWN 0xFF
Pierrick Hascoet41b44e02011-10-31 12:24:39 -030065
66/* transmission mode available values */
Sylwester Nawrocki14e0e4b2011-11-06 16:31:44 -030067#define TRANS_MODE_2K 0x00
68#define TRANS_MODE_8K 0x01
69#define TRANS_MODE_4K 0x02
70#define TRANS_MODE_UNKNOWN 0xFF
Pierrick Hascoet41b44e02011-10-31 12:24:39 -030071
72/* DVBH signalling available values */
Sylwester Nawrocki14e0e4b2011-11-06 16:31:44 -030073#define TIMESLICING_PRESENT 0x01
74#define MPE_FEC_PRESENT 0x02
Pierrick Hascoet41b44e02011-10-31 12:24:39 -030075
76/* tune state available */
Sylwester Nawrocki14e0e4b2011-11-06 16:31:44 -030077#define TUNE_STATUS_NOT_TUNED 0x00
78#define TUNE_STATUS_IDLE 0x01
79#define TUNE_STATUS_LOCKING 0x02
80#define TUNE_STATUS_SIGNAL_DVB_OK 0x03
81#define TUNE_STATUS_STREAM_DETECTED 0x04
82#define TUNE_STATUS_STREAM_TUNED 0x05
83#define TUNE_STATUS_ERROR 0xFF
Pierrick Hascoet41b44e02011-10-31 12:24:39 -030084
85/* available TS FID filter types */
Sylwester Nawrocki14e0e4b2011-11-06 16:31:44 -030086#define TS_PID_TYPE_TS 0
87#define TS_PID_TYPE_PSI_SI 1
88#define TS_PID_TYPE_MPE 2
Pierrick Hascoet41b44e02011-10-31 12:24:39 -030089
90/* number of echos available */
Sylwester Nawrocki14e0e4b2011-11-06 16:31:44 -030091#define MAX_ECHOS 15
Pierrick Hascoet41b44e02011-10-31 12:24:39 -030092
93/* Context types */
Sylwester Nawrocki14e0e4b2011-11-06 16:31:44 -030094#define CONTEXT_LNA 1010
95#define CONTEXT_ELNA_HYSTERESIS 4003
96#define CONTEXT_ELNA_GAIN 4004
97#define CONTEXT_MER_THRESHOLD 5005
98#define CONTEXT_MER_OFFSET 5006
99#define CONTEXT_IR_STATE 7000
100#define CONTEXT_TSOUT_MSB_FIRST 7004
101#define CONTEXT_TSOUT_FALLING_EDGE 7005
Pierrick Hascoet41b44e02011-10-31 12:24:39 -0300102
103/* Configuration modes */
Sylwester Nawrocki14e0e4b2011-11-06 16:31:44 -0300104#define CFG_MODE_ON 0
105#define CFG_MODE_OFF 1
106#define CFG_MODE_AUTO 2
Pierrick Hascoet41b44e02011-10-31 12:24:39 -0300107
Pierrick Hascoet41b44e02011-10-31 12:24:39 -0300108struct as10x_tps {
Mauro Carvalho Chehabdfc64382011-12-26 15:20:03 -0300109 uint8_t modulation;
Sylwester Nawrocki14e0e4b2011-11-06 16:31:44 -0300110 uint8_t hierarchy;
111 uint8_t interleaving_mode;
112 uint8_t code_rate_HP;
113 uint8_t code_rate_LP;
114 uint8_t guard_interval;
115 uint8_t transmission_mode;
116 uint8_t DVBH_mask_HP;
117 uint8_t DVBH_mask_LP;
118 uint16_t cell_ID;
Sylwester Nawrockifa1a13f2011-11-06 16:31:42 -0300119} __packed;
Pierrick Hascoet41b44e02011-10-31 12:24:39 -0300120
121struct as10x_tune_args {
Sylwester Nawrocki14e0e4b2011-11-06 16:31:44 -0300122 /* frequency */
123 uint32_t freq;
124 /* bandwidth */
125 uint8_t bandwidth;
126 /* hierarchy selection */
127 uint8_t hier_select;
128 /* constellation */
Mauro Carvalho Chehabdfc64382011-12-26 15:20:03 -0300129 uint8_t modulation;
Sylwester Nawrocki14e0e4b2011-11-06 16:31:44 -0300130 /* hierarchy */
131 uint8_t hierarchy;
132 /* interleaving mode */
133 uint8_t interleaving_mode;
134 /* code rate */
135 uint8_t code_rate;
136 /* guard interval */
137 uint8_t guard_interval;
138 /* transmission mode */
139 uint8_t transmission_mode;
Sylwester Nawrockifa1a13f2011-11-06 16:31:42 -0300140} __packed;
Pierrick Hascoet41b44e02011-10-31 12:24:39 -0300141
142struct as10x_tune_status {
Sylwester Nawrocki14e0e4b2011-11-06 16:31:44 -0300143 /* tune status */
144 uint8_t tune_state;
145 /* signal strength */
146 int16_t signal_strength;
147 /* packet error rate 10^-4 */
148 uint16_t PER;
149 /* bit error rate 10^-4 */
150 uint16_t BER;
Sylwester Nawrockifa1a13f2011-11-06 16:31:42 -0300151} __packed;
Pierrick Hascoet41b44e02011-10-31 12:24:39 -0300152
153struct as10x_demod_stats {
Sylwester Nawrocki14e0e4b2011-11-06 16:31:44 -0300154 /* frame counter */
155 uint32_t frame_count;
156 /* Bad frame counter */
157 uint32_t bad_frame_count;
158 /* Number of wrong bytes fixed by Reed-Solomon */
159 uint32_t bytes_fixed_by_rs;
160 /* Averaged MER */
161 uint16_t mer;
162 /* statistics calculation state indicator (started or not) */
163 uint8_t has_started;
Sylwester Nawrockifa1a13f2011-11-06 16:31:42 -0300164} __packed;
Pierrick Hascoet41b44e02011-10-31 12:24:39 -0300165
166struct as10x_ts_filter {
Sylwester Nawrocki14e0e4b2011-11-06 16:31:44 -0300167 uint16_t pid; /* valid PID value 0x00 : 0x2000 */
168 uint8_t type; /* Red TS_PID_TYPE_<N> values */
169 uint8_t idx; /* index in filtering table */
Sylwester Nawrockifa1a13f2011-11-06 16:31:42 -0300170} __packed;
Pierrick Hascoet41b44e02011-10-31 12:24:39 -0300171
172struct as10x_register_value {
Sylwester Nawrocki14e0e4b2011-11-06 16:31:44 -0300173 uint8_t mode;
174 union {
175 uint8_t value8; /* 8 bit value */
176 uint16_t value16; /* 16 bit value */
177 uint32_t value32; /* 32 bit value */
Gianluca Gennariabf9d002012-03-06 09:47:45 -0300178 } __packed u;
Sylwester Nawrockifa1a13f2011-11-06 16:31:42 -0300179} __packed;
Pierrick Hascoet41b44e02011-10-31 12:24:39 -0300180
181struct as10x_register_addr {
Sylwester Nawrocki14e0e4b2011-11-06 16:31:44 -0300182 /* register addr */
183 uint32_t addr;
184 /* register mode access */
185 uint8_t mode;
Pierrick Hascoet41b44e02011-10-31 12:24:39 -0300186};
187
Pierrick Hascoet41b44e02011-10-31 12:24:39 -0300188#endif