diff options
author | Manu Abraham <abraham.manu@gmail.com> | 2009-04-06 14:45:20 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-06-16 17:20:37 -0400 |
commit | e415c689a8842670e161581f060575c14957f073 (patch) | |
tree | ed18153bcad93a377f0ab6b5ac27554de9a9b614 /drivers/media/dvb/frontends/stv090x_priv.h | |
parent | 2460cdac94082c7046ab595bf643338e6faed6cb (diff) |
V4L/DVB (11579): Initial go at TT S2-1600
[mchehab@redhat.com: fix compilation when the new drivers aren't selected]
Signed-off-by: Manu Abraham <manu@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/dvb/frontends/stv090x_priv.h')
-rw-r--r-- | drivers/media/dvb/frontends/stv090x_priv.h | 274 |
1 files changed, 274 insertions, 0 deletions
diff --git a/drivers/media/dvb/frontends/stv090x_priv.h b/drivers/media/dvb/frontends/stv090x_priv.h new file mode 100644 index 000000000000..9d536226e9f3 --- /dev/null +++ b/drivers/media/dvb/frontends/stv090x_priv.h | |||
@@ -0,0 +1,274 @@ | |||
1 | /* | ||
2 | STV0900/0903 Multistandard Broadcast Frontend driver | ||
3 | Copyright (C) Manu Abraham <abraham.manu@gmail.com> | ||
4 | |||
5 | Copyright (C) ST Microelectronics | ||
6 | |||
7 | This program is free software; you can redistribute it and/or modify | ||
8 | it under the terms of the GNU General Public License as published by | ||
9 | the Free Software Foundation; either version 2 of the License, or | ||
10 | (at your option) any later version. | ||
11 | |||
12 | This program is distributed in the hope that it will be useful, | ||
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
15 | GNU General Public License for more details. | ||
16 | |||
17 | You should have received a copy of the GNU General Public License | ||
18 | along with this program; if not, write to the Free Software | ||
19 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
20 | */ | ||
21 | |||
22 | #ifndef __STV090x_PRIV_H | ||
23 | #define __STV090x_PRIV_H | ||
24 | |||
25 | #include "dvb_frontend.h" | ||
26 | |||
27 | #define FE_ERROR 0 | ||
28 | #define FE_NOTICE 1 | ||
29 | #define FE_INFO 2 | ||
30 | #define FE_DEBUG 3 | ||
31 | #define FE_DEBUGREG 4 | ||
32 | |||
33 | #define dprintk(__y, __z, format, arg...) do { \ | ||
34 | if (__z) { \ | ||
35 | if ((verbose > FE_ERROR) && (verbose > __y)) \ | ||
36 | printk(KERN_ERR "%s: " format "\n", __func__ , ##arg); \ | ||
37 | else if ((verbose > FE_NOTICE) && (verbose > __y)) \ | ||
38 | printk(KERN_NOTICE "%s: " format "\n", __func__ , ##arg); \ | ||
39 | else if ((verbose > FE_INFO) && (verbose > __y)) \ | ||
40 | printk(KERN_INFO "%s: " format "\n", __func__ , ##arg); \ | ||
41 | else if ((verbose > FE_DEBUG) && (verbose > __y)) \ | ||
42 | printk(KERN_DEBUG "%s: " format "\n", __func__ , ##arg); \ | ||
43 | } else { \ | ||
44 | if (verbose > __y) \ | ||
45 | printk(format, ##arg); \ | ||
46 | } \ | ||
47 | } while (0) | ||
48 | |||
49 | #define STV090x_READ_DEMOD(__state, __reg) (( \ | ||
50 | (__state)->demod == STV090x_DEMODULATOR_1) ? \ | ||
51 | stv090x_read_reg(__state, STV090x_P2_##__reg) : \ | ||
52 | stv090x_read_reg(__state, STV090x_P1_##__reg)) | ||
53 | |||
54 | #define STV090x_WRITE_DEMOD(__state, __reg, __data) (( \ | ||
55 | (__state)->demod == STV090x_DEMODULATOR_1) ? \ | ||
56 | stv090x_write_reg(__state, STV090x_P2_##__reg, __data) :\ | ||
57 | stv090x_write_reg(__state, STV090x_P1_##__reg, __data)) | ||
58 | |||
59 | #define STV090x_ADDR_OFFST(__state, __x) (( \ | ||
60 | (__state->demod) == STV090x_DEMODULATOR_1) ? \ | ||
61 | STV090x_P1_##__x : \ | ||
62 | STV090x_P2_##__x) | ||
63 | |||
64 | |||
65 | #define STV090x_SETFIELD(mask, bitf, val) (mask = (mask & (~(((1 << STV090x_WIDTH_##bitf) - 1) <<\ | ||
66 | STV090x_OFFST_##bitf))) | \ | ||
67 | (val << STV090x_OFFST_##bitf)) | ||
68 | |||
69 | #define STV090x_GETFIELD(val, bitf) ((val >> STV090x_OFFST_##bitf) & ((1 << STV090x_WIDTH_##bitf) - 1)) | ||
70 | |||
71 | |||
72 | #define STV090x_SETFIELD_Px(mask, bitf, val) (mask = (mask & (~(((1 << STV090x_WIDTH_Px_##bitf) - 1) <<\ | ||
73 | STV090x_OFFST_Px_##bitf))) | \ | ||
74 | (val << STV090x_OFFST_Px_##bitf)) | ||
75 | |||
76 | #define STV090x_GETFIELD_Px(val, bitf) ((val >> STV090x_OFFST_Px_##bitf) & ((1 << STV090x_WIDTH_Px_##bitf) - 1)) | ||
77 | |||
78 | #define MAKEWORD16(__a, __b) (((__a) << 8) | (__b)) | ||
79 | |||
80 | #define STV090x_SEARCH_AGC2_TH 700 | ||
81 | |||
82 | enum stv090x_signal_state { | ||
83 | STV090x_NOCARRIER, | ||
84 | STV090x_NODATA, | ||
85 | STV090x_DATAOK, | ||
86 | STV090x_RANGEOK, | ||
87 | STV090x_OUTOFRANGE | ||
88 | }; | ||
89 | |||
90 | enum stv090x_fec { | ||
91 | STV090x_PR12 = 0, | ||
92 | STV090x_PR23, | ||
93 | STV090x_PR34, | ||
94 | STV090x_PR45, | ||
95 | STV090x_PR56, | ||
96 | STV090x_PR67, | ||
97 | STV090x_PR78, | ||
98 | STV090x_PR89, | ||
99 | STV090x_PR910, | ||
100 | STV090x_PRERR | ||
101 | }; | ||
102 | |||
103 | enum stv090x_modulation { | ||
104 | STV090x_QPSK, | ||
105 | STV090x_8PSK, | ||
106 | STV090x_16APSK, | ||
107 | STV090x_32APSK, | ||
108 | STV090x_UNKNOWN | ||
109 | }; | ||
110 | |||
111 | enum stv090x_frame { | ||
112 | STV090x_LONG_FRAME, | ||
113 | STV090x_SHORT_FRAME | ||
114 | }; | ||
115 | |||
116 | enum stv090x_pilot { | ||
117 | STV090x_PILOTS_OFF, | ||
118 | STV090x_PILOTS_ON | ||
119 | }; | ||
120 | |||
121 | enum stv090x_rolloff { | ||
122 | STV090x_RO_35, | ||
123 | STV090x_RO_25, | ||
124 | STV090x_RO_20 | ||
125 | }; | ||
126 | |||
127 | enum stv090x_inversion { | ||
128 | STV090x_IQ_AUTO, | ||
129 | STV090x_IQ_NORMAL, | ||
130 | STV090x_IQ_SWAP | ||
131 | }; | ||
132 | |||
133 | enum stv090x_modcod { | ||
134 | STV090x_DUMMY_PLF = 0, | ||
135 | STV090x_QPSK_14, | ||
136 | STV090x_QPSK_13, | ||
137 | STV090x_QPSK_25, | ||
138 | STV090x_QPSK_12, | ||
139 | STV090x_QPSK_35, | ||
140 | STV090x_QPSK_23, | ||
141 | STV090x_QPSK_34, | ||
142 | STV090x_QPSK_45, | ||
143 | STV090x_QPSK_56, | ||
144 | STV090x_QPSK_89, | ||
145 | STV090x_QPSK_910, | ||
146 | STV090x_8PSK_35, | ||
147 | STV090x_8PSK_23, | ||
148 | STV090x_8PSK_34, | ||
149 | STV090x_8PSK_56, | ||
150 | STV090x_8PSK_89, | ||
151 | STV090x_8PSK_910, | ||
152 | STV090x_16APSK_23, | ||
153 | STV090x_16APSK_34, | ||
154 | STV090x_16APSK_45, | ||
155 | STV090x_16APSK_56, | ||
156 | STV090x_16APSK_89, | ||
157 | STV090x_16APSK_910, | ||
158 | STV090x_32APSK_34, | ||
159 | STV090x_32APSK_45, | ||
160 | STV090x_32APSK_56, | ||
161 | STV090x_32APSK_89, | ||
162 | STV090x_32APSK_910, | ||
163 | STV090x_MODCODE_UNKNOWN | ||
164 | }; | ||
165 | |||
166 | enum stv090x_search { | ||
167 | STV090x_SEARCH_DSS = 0, | ||
168 | STV090x_SEARCH_DVBS1, | ||
169 | STV090x_SEARCH_DVBS2, | ||
170 | STV090x_SEARCH_AUTO | ||
171 | }; | ||
172 | |||
173 | enum stv090x_algo { | ||
174 | STV090x_BLIND_SEARCH, | ||
175 | STV090x_COLD_SEARCH, | ||
176 | STV090x_WARM_SEARCH | ||
177 | }; | ||
178 | |||
179 | enum stv090x_delsys { | ||
180 | STV090x_ERROR = 0, | ||
181 | STV090x_DVBS1 = 1, | ||
182 | STV090x_DVBS2, | ||
183 | STV090x_DSS | ||
184 | }; | ||
185 | |||
186 | struct stv090x_long_frame_crloop { | ||
187 | enum stv090x_modcod modcod; | ||
188 | |||
189 | u8 crl_pilots_on_2; | ||
190 | u8 crl_pilots_off_2; | ||
191 | u8 crl_pilots_on_5; | ||
192 | u8 crl_pilots_off_5; | ||
193 | u8 crl_pilots_on_10; | ||
194 | u8 crl_pilots_off_10; | ||
195 | u8 crl_pilots_on_20; | ||
196 | u8 crl_pilots_off_20; | ||
197 | u8 crl_pilots_on_30; | ||
198 | u8 crl_pilots_off_30; | ||
199 | }; | ||
200 | |||
201 | struct stv090x_short_frame_crloop { | ||
202 | enum stv090x_modulation modulation; | ||
203 | |||
204 | u8 crl_cut12_2; /* Cut 1.2, SR <= 3M */ | ||
205 | u8 crl_cut20_2; /* Cut 2.0, SR < 3M */ | ||
206 | u8 crl_cut12_5; /* Cut 1.2, 3 < SR <= 7M */ | ||
207 | u8 crl_cut20_5; /* Cut 2.0, 3 < SR <= 7M */ | ||
208 | u8 crl_cut12_10; /* Cut 1.2, 7 < SR <= 15M */ | ||
209 | u8 crl_cut20_10; /* Cut 2.0, 7 < SR <= 15M */ | ||
210 | u8 crl_cut12_20; /* Cut 1.2, 10 < SR <= 25M */ | ||
211 | u8 crl_cut20_20; /* Cut 2.0, 10 < SR <= 25M */ | ||
212 | u8 crl_cut12_30; /* Cut 1.2, 25 < SR <= 45M */ | ||
213 | u8 crl_cut20_30; /* Cut 2.0, 10 < SR <= 45M */ | ||
214 | }; | ||
215 | |||
216 | |||
217 | struct stv090x_short_frame_vsmod_crloop { | ||
218 | enum stv090x_modulation modulation; | ||
219 | |||
220 | u8 crl_2; /* < 3M */ | ||
221 | u8 crl_5; /* 3 < SR <= 7M */ | ||
222 | u8 crl_10; /* 7 < SR <= 15M */ | ||
223 | u8 crl_20; /* 10 < SR <= 25M */ | ||
224 | u8 crl_30; /* 10 < SR <= 45M */ | ||
225 | }; | ||
226 | |||
227 | struct stv090x_reg { | ||
228 | u16 addr; | ||
229 | u8 data; | ||
230 | }; | ||
231 | |||
232 | struct stv090x_tab { | ||
233 | s32 real; | ||
234 | s32 read; | ||
235 | }; | ||
236 | |||
237 | struct stv090x_state { | ||
238 | enum stv090x_device device; | ||
239 | enum stv090x_demodulator demod; | ||
240 | enum stv090x_mode demod_mode; | ||
241 | u32 dev_ver; | ||
242 | |||
243 | struct i2c_adapter *i2c; | ||
244 | const struct stv090x_config *config; | ||
245 | struct dvb_frontend frontend; | ||
246 | |||
247 | u32 *verbose; /* Cached module verbosity */ | ||
248 | |||
249 | enum stv090x_delsys delsys; | ||
250 | enum stv090x_fec fec; | ||
251 | enum stv090x_modulation modulation; | ||
252 | enum stv090x_modcod modcod; | ||
253 | enum stv090x_search search_mode; | ||
254 | enum stv090x_frame frame_len; | ||
255 | enum stv090x_pilot pilots; | ||
256 | enum stv090x_rolloff rolloff; | ||
257 | enum stv090x_inversion inversion; | ||
258 | enum stv090x_algo algo; | ||
259 | |||
260 | u32 frequency; | ||
261 | u32 srate; | ||
262 | |||
263 | s32 mclk; /* Masterclock Divider factor */ | ||
264 | s32 tuner_bw; | ||
265 | |||
266 | u32 tuner_refclk; | ||
267 | |||
268 | s32 search_range; | ||
269 | |||
270 | s32 DemodTimeout; | ||
271 | s32 FecTimeout; | ||
272 | }; | ||
273 | |||
274 | #endif /* __STV090x_PRIV_H */ | ||