Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
[linux-2.6-block.git] / drivers / media / dvb-frontends / as102_fe_types.h
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