aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb/frontends/stv090x_priv.h
diff options
context:
space:
mode:
authorManu Abraham <abraham.manu@gmail.com>2009-04-06 14:45:20 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2009-06-16 17:20:37 -0400
commite415c689a8842670e161581f060575c14957f073 (patch)
treeed18153bcad93a377f0ab6b5ac27554de9a9b614 /drivers/media/dvb/frontends/stv090x_priv.h
parent2460cdac94082c7046ab595bf643338e6faed6cb (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.h274
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
82enum stv090x_signal_state {
83 STV090x_NOCARRIER,
84 STV090x_NODATA,
85 STV090x_DATAOK,
86 STV090x_RANGEOK,
87 STV090x_OUTOFRANGE
88};
89
90enum 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
103enum stv090x_modulation {
104 STV090x_QPSK,
105 STV090x_8PSK,
106 STV090x_16APSK,
107 STV090x_32APSK,
108 STV090x_UNKNOWN
109};
110
111enum stv090x_frame {
112 STV090x_LONG_FRAME,
113 STV090x_SHORT_FRAME
114};
115
116enum stv090x_pilot {
117 STV090x_PILOTS_OFF,
118 STV090x_PILOTS_ON
119};
120
121enum stv090x_rolloff {
122 STV090x_RO_35,
123 STV090x_RO_25,
124 STV090x_RO_20
125};
126
127enum stv090x_inversion {
128 STV090x_IQ_AUTO,
129 STV090x_IQ_NORMAL,
130 STV090x_IQ_SWAP
131};
132
133enum 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
166enum stv090x_search {
167 STV090x_SEARCH_DSS = 0,
168 STV090x_SEARCH_DVBS1,
169 STV090x_SEARCH_DVBS2,
170 STV090x_SEARCH_AUTO
171};
172
173enum stv090x_algo {
174 STV090x_BLIND_SEARCH,
175 STV090x_COLD_SEARCH,
176 STV090x_WARM_SEARCH
177};
178
179enum stv090x_delsys {
180 STV090x_ERROR = 0,
181 STV090x_DVBS1 = 1,
182 STV090x_DVBS2,
183 STV090x_DSS
184};
185
186struct 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
201struct 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
217struct 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
227struct stv090x_reg {
228 u16 addr;
229 u8 data;
230};
231
232struct stv090x_tab {
233 s32 real;
234 s32 read;
235};
236
237struct 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 */