Merge branch 'fix-dss-mux' into fixes
[cascardo/linux.git] / drivers / staging / media / as102 / as10x_types.h
1 /*
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.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18  */
19 #ifndef _AS10X_TYPES_H_
20 #define _AS10X_TYPES_H_
21
22 #include "as10x_handle.h"
23
24 /*********************************/
25 /*       MACRO DEFINITIONS       */
26 /*********************************/
27
28 /* bandwidth constant values */
29 #define BW_5_MHZ                0x00
30 #define BW_6_MHZ                0x01
31 #define BW_7_MHZ                0x02
32 #define BW_8_MHZ                0x03
33
34 /* hierarchy priority selection values */
35 #define HIER_NO_PRIORITY        0x00
36 #define HIER_LOW_PRIORITY       0x01
37 #define HIER_HIGH_PRIORITY      0x02
38
39 /* constellation available values */
40 #define CONST_QPSK              0x00
41 #define CONST_QAM16             0x01
42 #define CONST_QAM64             0x02
43 #define CONST_UNKNOWN           0xFF
44
45 /* hierarchy available values */
46 #define HIER_NONE               0x00
47 #define HIER_ALPHA_1            0x01
48 #define HIER_ALPHA_2            0x02
49 #define HIER_ALPHA_4            0x03
50 #define HIER_UNKNOWN            0xFF
51
52 /* interleaving available values */
53 #define INTLV_NATIVE            0x00
54 #define INTLV_IN_DEPTH          0x01
55 #define INTLV_UNKNOWN           0xFF
56
57 /* code rate available values */
58 #define CODE_RATE_1_2           0x00
59 #define CODE_RATE_2_3           0x01
60 #define CODE_RATE_3_4           0x02
61 #define CODE_RATE_5_6           0x03
62 #define CODE_RATE_7_8           0x04
63 #define CODE_RATE_UNKNOWN       0xFF
64
65 /* guard interval available values */
66 #define GUARD_INT_1_32          0x00
67 #define GUARD_INT_1_16          0x01
68 #define GUARD_INT_1_8           0x02
69 #define GUARD_INT_1_4           0x03
70 #define GUARD_UNKNOWN           0xFF
71
72 /* transmission mode available values */
73 #define TRANS_MODE_2K           0x00
74 #define TRANS_MODE_8K           0x01
75 #define TRANS_MODE_4K           0x02
76 #define TRANS_MODE_UNKNOWN      0xFF
77
78 /* DVBH signalling available values */
79 #define TIMESLICING_PRESENT     0x01
80 #define MPE_FEC_PRESENT         0x02
81
82 /* tune state available */
83 #define TUNE_STATUS_NOT_TUNED           0x00
84 #define TUNE_STATUS_IDLE                0x01
85 #define TUNE_STATUS_LOCKING             0x02
86 #define TUNE_STATUS_SIGNAL_DVB_OK       0x03
87 #define TUNE_STATUS_STREAM_DETECTED     0x04
88 #define TUNE_STATUS_STREAM_TUNED        0x05
89 #define TUNE_STATUS_ERROR               0xFF
90
91 /* available TS FID filter types */
92 #define TS_PID_TYPE_TS          0
93 #define TS_PID_TYPE_PSI_SI      1
94 #define TS_PID_TYPE_MPE         2
95
96 /* number of echos available */
97 #define MAX_ECHOS       15
98
99 /* Context types */
100 #define CONTEXT_LNA                     1010
101 #define CONTEXT_ELNA_HYSTERESIS         4003
102 #define CONTEXT_ELNA_GAIN               4004
103 #define CONTEXT_MER_THRESHOLD           5005
104 #define CONTEXT_MER_OFFSET              5006
105 #define CONTEXT_IR_STATE                7000
106 #define CONTEXT_TSOUT_MSB_FIRST         7004
107 #define CONTEXT_TSOUT_FALLING_EDGE      7005
108
109 /* Configuration modes */
110 #define CFG_MODE_ON     0
111 #define CFG_MODE_OFF    1
112 #define CFG_MODE_AUTO   2
113
114 struct as10x_tps {
115         uint8_t modulation;
116         uint8_t hierarchy;
117         uint8_t interleaving_mode;
118         uint8_t code_rate_HP;
119         uint8_t code_rate_LP;
120         uint8_t guard_interval;
121         uint8_t transmission_mode;
122         uint8_t DVBH_mask_HP;
123         uint8_t DVBH_mask_LP;
124         uint16_t cell_ID;
125 } __packed;
126
127 struct as10x_tune_args {
128         /* frequency */
129         uint32_t freq;
130         /* bandwidth */
131         uint8_t bandwidth;
132         /* hierarchy selection */
133         uint8_t hier_select;
134         /* constellation */
135         uint8_t modulation;
136         /* hierarchy */
137         uint8_t hierarchy;
138         /* interleaving mode */
139         uint8_t interleaving_mode;
140         /* code rate */
141         uint8_t code_rate;
142         /* guard interval */
143         uint8_t guard_interval;
144         /* transmission mode */
145         uint8_t transmission_mode;
146 } __packed;
147
148 struct as10x_tune_status {
149         /* tune status */
150         uint8_t tune_state;
151         /* signal strength */
152         int16_t signal_strength;
153         /* packet error rate 10^-4 */
154         uint16_t PER;
155         /* bit error rate 10^-4 */
156         uint16_t BER;
157 } __packed;
158
159 struct as10x_demod_stats {
160         /* frame counter */
161         uint32_t frame_count;
162         /* Bad frame counter */
163         uint32_t bad_frame_count;
164         /* Number of wrong bytes fixed by Reed-Solomon */
165         uint32_t bytes_fixed_by_rs;
166         /* Averaged MER */
167         uint16_t mer;
168         /* statistics calculation state indicator (started or not) */
169         uint8_t has_started;
170 } __packed;
171
172 struct as10x_ts_filter {
173         uint16_t pid;  /* valid PID value 0x00 : 0x2000 */
174         uint8_t  type; /* Red TS_PID_TYPE_<N> values */
175         uint8_t  idx;  /* index in filtering table */
176 } __packed;
177
178 struct as10x_register_value {
179         uint8_t mode;
180         union {
181                 uint8_t  value8;   /* 8 bit value */
182                 uint16_t value16;  /* 16 bit value */
183                 uint32_t value32;  /* 32 bit value */
184         } __packed u;
185 } __packed;
186
187 struct as10x_register_addr {
188         /* register addr */
189         uint32_t addr;
190         /* register mode access */
191         uint8_t mode;
192 };
193
194 #endif