]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - drivers/media/dvb-frontends/stv0900_init.h
Merge tag 'nfs-for-3.7-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs
[karo-tx-linux.git] / drivers / media / dvb-frontends / stv0900_init.h
1 /*
2  * stv0900_init.h
3  *
4  * Driver for ST STV0900 satellite demodulator IC.
5  *
6  * Copyright (C) ST Microelectronics.
7  * Copyright (C) 2009 NetUP Inc.
8  * Copyright (C) 2009 Igor M. Liplianin <liplianin@netup.ru>
9  *
10  * This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  *
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License
22  * along with this program; if not, write to the Free Software
23  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24  */
25
26 #ifndef STV0900_INIT_H
27 #define STV0900_INIT_H
28
29 #include "stv0900_priv.h"
30
31 /* DVBS2 C/N Look-Up table */
32 static const struct stv0900_table stv0900_s2_cn = {
33         55,
34         {
35                 { -30,  13348 }, /*C/N=-3dB*/
36                 { -20,  12640 }, /*C/N=-2dB*/
37                 { -10,  11883 }, /*C/N=-1dB*/
38                 { 0,    11101 }, /*C/N=-0dB*/
39                 { 5,    10718 }, /*C/N=0.5dB*/
40                 { 10,   10339 }, /*C/N=1.0dB*/
41                 { 15,   9947 }, /*C/N=1.5dB*/
42                 { 20,   9552 }, /*C/N=2.0dB*/
43                 { 25,   9183 }, /*C/N=2.5dB*/
44                 { 30,   8799 }, /*C/N=3.0dB*/
45                 { 35,   8422 }, /*C/N=3.5dB*/
46                 { 40,   8062 }, /*C/N=4.0dB*/
47                 { 45,   7707 }, /*C/N=4.5dB*/
48                 { 50,   7353 }, /*C/N=5.0dB*/
49                 { 55,   7025 }, /*C/N=5.5dB*/
50                 { 60,   6684 }, /*C/N=6.0dB*/
51                 { 65,   6331 }, /*C/N=6.5dB*/
52                 { 70,   6036 }, /*C/N=7.0dB*/
53                 { 75,   5727 }, /*C/N=7.5dB*/
54                 { 80,   5437 }, /*C/N=8.0dB*/
55                 { 85,   5164 }, /*C/N=8.5dB*/
56                 { 90,   4902 }, /*C/N=9.0dB*/
57                 { 95,   4653 }, /*C/N=9.5dB*/
58                 { 100,  4408 }, /*C/N=10.0dB*/
59                 { 105,  4187 }, /*C/N=10.5dB*/
60                 { 110,  3961 }, /*C/N=11.0dB*/
61                 { 115,  3751 }, /*C/N=11.5dB*/
62                 { 120,  3558 }, /*C/N=12.0dB*/
63                 { 125,  3368 }, /*C/N=12.5dB*/
64                 { 130,  3191 }, /*C/N=13.0dB*/
65                 { 135,  3017 }, /*C/N=13.5dB*/
66                 { 140,  2862 }, /*C/N=14.0dB*/
67                 { 145,  2710 }, /*C/N=14.5dB*/
68                 { 150,  2565 }, /*C/N=15.0dB*/
69                 { 160,  2300 }, /*C/N=16.0dB*/
70                 { 170,  2058 }, /*C/N=17.0dB*/
71                 { 180,  1849 }, /*C/N=18.0dB*/
72                 { 190,  1663 }, /*C/N=19.0dB*/
73                 { 200,  1495 }, /*C/N=20.0dB*/
74                 { 210,  1349 }, /*C/N=21.0dB*/
75                 { 220,  1222 }, /*C/N=22.0dB*/
76                 { 230,  1110 }, /*C/N=23.0dB*/
77                 { 240,  1011 }, /*C/N=24.0dB*/
78                 { 250,  925 }, /*C/N=25.0dB*/
79                 { 260,  853 }, /*C/N=26.0dB*/
80                 { 270,  789 }, /*C/N=27.0dB*/
81                 { 280,  734 }, /*C/N=28.0dB*/
82                 { 290,  690 }, /*C/N=29.0dB*/
83                 { 300,  650 }, /*C/N=30.0dB*/
84                 { 310,  619 }, /*C/N=31.0dB*/
85                 { 320,  593 }, /*C/N=32.0dB*/
86                 { 330,  571 }, /*C/N=33.0dB*/
87                 { 400,  498 }, /*C/N=40.0dB*/
88                 { 450,  484 }, /*C/N=45.0dB*/
89                 { 500,  481 }  /*C/N=50.0dB*/
90         }
91 };
92
93 /* RF level C/N Look-Up table */
94 static const struct stv0900_table stv0900_rf = {
95         14,
96         {
97                 { -5, 0xCAA1 }, /*-5dBm*/
98                 { -10, 0xC229 }, /*-10dBm*/
99                 { -15, 0xBB08 }, /*-15dBm*/
100                 { -20, 0xB4BC }, /*-20dBm*/
101                 { -25, 0xAD5A }, /*-25dBm*/
102                 { -30, 0xA298 }, /*-30dBm*/
103                 { -35, 0x98A8 }, /*-35dBm*/
104                 { -40, 0x8389 }, /*-40dBm*/
105                 { -45, 0x59BE }, /*-45dBm*/
106                 { -50, 0x3A14 }, /*-50dBm*/
107                 { -55, 0x2D11 }, /*-55dBm*/
108                 { -60, 0x210D }, /*-60dBm*/
109                 { -65, 0xA14F }, /*-65dBm*/
110                 { -70, 0x7AA }  /*-70dBm*/
111         }
112 };
113
114 struct stv0900_car_loop_optim {
115         enum fe_stv0900_modcode modcode;
116         u8 car_loop_pilots_on_2;
117         u8 car_loop_pilots_off_2;
118         u8 car_loop_pilots_on_5;
119         u8 car_loop_pilots_off_5;
120         u8 car_loop_pilots_on_10;
121         u8 car_loop_pilots_off_10;
122         u8 car_loop_pilots_on_20;
123         u8 car_loop_pilots_off_20;
124         u8 car_loop_pilots_on_30;
125         u8 car_loop_pilots_off_30;
126
127 };
128
129 struct stv0900_short_frames_car_loop_optim {
130         enum fe_stv0900_modulation modulation;
131         u8 car_loop_cut12_2;    /* Cut 1.2,   SR<=3msps     */
132         u8 car_loop_cut20_2;    /* Cut 2.0,   SR<3msps      */
133         u8 car_loop_cut12_5;    /* Cut 1.2,   3<SR<=7msps   */
134         u8 car_loop_cut20_5;    /* Cut 2.0,   3<SR<=7msps   */
135         u8 car_loop_cut12_10;   /* Cut 1.2,   7<SR<=15msps  */
136         u8 car_loop_cut20_10;   /* Cut 2.0,   7<SR<=15msps  */
137         u8 car_loop_cut12_20;   /* Cut 1.2,   10<SR<=25msps */
138         u8 car_loop_cut20_20;   /* Cut 2.0,   10<SR<=25msps */
139         u8 car_loop_cut12_30;   /* Cut 1.2,   25<SR<=45msps */
140         u8 car_loop_cut20_30;   /* Cut 2.0,   10<SR<=45msps */
141
142 };
143
144 struct stv0900_short_frames_car_loop_optim_vs_mod {
145         enum fe_stv0900_modulation modulation;
146         u8 car_loop_2;    /* SR<3msps      */
147         u8 car_loop_5;    /* 3<SR<=7msps   */
148         u8 car_loop_10;   /* 7<SR<=15msps  */
149         u8 car_loop_20;   /* 10<SR<=25msps */
150         u8 car_loop_30;   /* 10<SR<=45msps */
151 };
152
153 /* Cut 1.x Tracking carrier loop carrier QPSK 1/2 to 8PSK 9/10 long Frame */
154 static const struct stv0900_car_loop_optim FE_STV0900_S2CarLoop[14] = {
155         /*Modcod                2MPon   2MPoff  5MPon   5MPoff  10MPon
156                                 10MPoff 20MPon  20MPoff 30MPon  30MPoff */
157         { STV0900_QPSK_12,      0x1C,   0x0D,   0x1B,   0x2C,   0x3A,
158                                 0x1C,   0x2A,   0x3B,   0x2A,   0x1B },
159         { STV0900_QPSK_35,      0x2C,   0x0D,   0x2B,   0x2C,   0x3A,
160                                 0x0C,   0x3A,   0x2B,   0x2A,   0x0B },
161         { STV0900_QPSK_23,      0x2C,   0x0D,   0x2B,   0x2C,   0x0B,
162                                 0x0C,   0x3A,   0x1B,   0x2A,   0x3A },
163         { STV0900_QPSK_34,      0x3C,   0x0D,   0x3B,   0x1C,   0x0B,
164                                 0x3B,   0x3A,   0x0B,   0x2A,   0x3A },
165         { STV0900_QPSK_45,      0x3C,   0x0D,   0x3B,   0x1C,   0x0B,
166                                 0x3B,   0x3A,   0x0B,   0x2A,   0x3A },
167         { STV0900_QPSK_56,      0x0D,   0x0D,   0x3B,   0x1C,   0x0B,
168                                 0x3B,   0x3A,   0x0B,   0x2A,   0x3A },
169         { STV0900_QPSK_89,      0x0D,   0x0D,   0x3B,   0x1C,   0x1B,
170                                 0x3B,   0x3A,   0x0B,   0x2A,   0x3A },
171         { STV0900_QPSK_910,     0x1D,   0x0D,   0x3B,   0x1C,   0x1B,
172                                 0x3B,   0x3A,   0x0B,   0x2A,   0x3A },
173         { STV0900_8PSK_35,      0x29,   0x3B,   0x09,   0x2B,   0x38,
174                                 0x0B,   0x18,   0x1A,   0x08,   0x0A },
175         { STV0900_8PSK_23,      0x0A,   0x3B,   0x29,   0x2B,   0x19,
176                                 0x0B,   0x38,   0x1A,   0x18,   0x0A },
177         { STV0900_8PSK_34,      0x3A,   0x3B,   0x2A,   0x2B,   0x39,
178                                 0x0B,   0x19,   0x1A,   0x38,   0x0A },
179         { STV0900_8PSK_56,      0x1B,   0x3B,   0x0B,   0x2B,   0x1A,
180                                 0x0B,   0x39,   0x1A,   0x19,   0x0A },
181         { STV0900_8PSK_89,      0x3B,   0x3B,   0x0B,   0x2B,   0x2A,
182                                 0x0B,   0x39,   0x1A,   0x29,   0x39 },
183         { STV0900_8PSK_910,     0x3B,   0x3B,   0x0B,   0x2B,   0x2A,
184                                 0x0B,   0x39,   0x1A,   0x29,   0x39 }
185 };
186
187
188 /* Cut 2.0 Tracking carrier loop carrier QPSK 1/2 to 8PSK 9/10 long Frame */
189 static const struct stv0900_car_loop_optim FE_STV0900_S2CarLoopCut20[14] = {
190         /* Modcod               2MPon   2MPoff  5MPon   5MPoff  10MPon
191                                 10MPoff 20MPon  20MPoff 30MPon  30MPoff */
192         { STV0900_QPSK_12,      0x1F,   0x3F,   0x1E,   0x3F,   0x3D,
193                                 0x1F,   0x3D,   0x3E,   0x3D,   0x1E },
194         { STV0900_QPSK_35,      0x2F,   0x3F,   0x2E,   0x2F,   0x3D,
195                                 0x0F,   0x0E,   0x2E,   0x3D,   0x0E },
196         { STV0900_QPSK_23,      0x2F,   0x3F,   0x2E,   0x2F,   0x0E,
197                                 0x0F,   0x0E,   0x1E,   0x3D,   0x3D },
198         { STV0900_QPSK_34,      0x3F,   0x3F,   0x3E,   0x1F,   0x0E,
199                                 0x3E,   0x0E,   0x1E,   0x3D,   0x3D },
200         { STV0900_QPSK_45,      0x3F,   0x3F,   0x3E,   0x1F,   0x0E,
201                                 0x3E,   0x0E,   0x1E,   0x3D,   0x3D },
202         { STV0900_QPSK_56,      0x3F,   0x3F,   0x3E,   0x1F,   0x0E,
203                                 0x3E,   0x0E,   0x1E,   0x3D,   0x3D },
204         { STV0900_QPSK_89,      0x3F,   0x3F,   0x3E,   0x1F,   0x1E,
205                                 0x3E,   0x0E,   0x1E,   0x3D,   0x3D },
206         { STV0900_QPSK_910,     0x3F,   0x3F,   0x3E,   0x1F,   0x1E,
207                                 0x3E,   0x0E,   0x1E,   0x3D,   0x3D },
208         { STV0900_8PSK_35,      0x3c,   0x0c,   0x1c,   0x3b,   0x0c,
209                                 0x3b,   0x2b,   0x2b,   0x1b,   0x2b },
210         { STV0900_8PSK_23,      0x1d,   0x0c,   0x3c,   0x0c,   0x2c,
211                                 0x3b,   0x0c,   0x2b,   0x2b,   0x2b },
212         { STV0900_8PSK_34,      0x0e,   0x1c,   0x3d,   0x0c,   0x0d,
213                                 0x3b,   0x2c,   0x3b,   0x0c,   0x2b },
214         { STV0900_8PSK_56,      0x2e,   0x3e,   0x1e,   0x2e,   0x2d,
215                                 0x1e,   0x3c,   0x2d,   0x2c,   0x1d },
216         { STV0900_8PSK_89,      0x3e,   0x3e,   0x1e,   0x2e,   0x3d,
217                                 0x1e,   0x0d,   0x2d,   0x3c,   0x1d },
218         { STV0900_8PSK_910,     0x3e,   0x3e,   0x1e,   0x2e,   0x3d,
219                                 0x1e,   0x1d,   0x2d,   0x0d,   0x1d },
220 };
221
222
223
224 /* Cut 2.0 Tracking carrier loop carrier 16APSK 2/3 to 32APSK 9/10 long Frame */
225 static const struct stv0900_car_loop_optim FE_STV0900_S2APSKCarLoopCut20[11] = {
226         /* Modcod               2MPon   2MPoff  5MPon   5MPoff  10MPon
227                                 10MPoff 20MPon  20MPoff 30MPon  30MPoff */
228         { STV0900_16APSK_23,    0x0C,   0x0C,   0x0C,   0x0C,   0x1D,
229                                 0x0C,   0x3C,   0x0C,   0x2C,   0x0C },
230         { STV0900_16APSK_34,    0x0C,   0x0C,   0x0C,   0x0C,   0x0E,
231                                 0x0C,   0x2D,   0x0C,   0x1D,   0x0C },
232         { STV0900_16APSK_45,    0x0C,   0x0C,   0x0C,   0x0C,   0x1E,
233                                 0x0C,   0x3D,   0x0C,   0x2D,   0x0C },
234         { STV0900_16APSK_56,    0x0C,   0x0C,   0x0C,   0x0C,   0x1E,
235                                 0x0C,   0x3D,   0x0C,   0x2D,   0x0C },
236         { STV0900_16APSK_89,    0x0C,   0x0C,   0x0C,   0x0C,   0x2E,
237                                 0x0C,   0x0E,   0x0C,   0x3D,   0x0C },
238         { STV0900_16APSK_910,   0x0C,   0x0C,   0x0C,   0x0C,   0x2E,
239                                 0x0C,   0x0E,   0x0C,   0x3D,   0x0C },
240         { STV0900_32APSK_34,    0x0C,   0x0C,   0x0C,   0x0C,   0x0C,
241                                 0x0C,   0x0C,   0x0C,   0x0C,   0x0C },
242         { STV0900_32APSK_45,    0x0C,   0x0C,   0x0C,   0x0C,   0x0C,
243                                 0x0C,   0x0C,   0x0C,   0x0C,   0x0C },
244         { STV0900_32APSK_56,    0x0C,   0x0C,   0x0C,   0x0C,   0x0C,
245                                 0x0C,   0x0C,   0x0C,   0x0C,   0x0C },
246         { STV0900_32APSK_89,    0x0C,   0x0C,   0x0C,   0x0C,   0x0C,
247                                 0x0C,   0x0C,   0x0C,   0x0C,   0x0C },
248         { STV0900_32APSK_910,   0x0C,   0x0C,   0x0C,   0x0C,   0x0C,
249                                 0x0C,   0x0C,   0x0C,   0x0C,   0x0C },
250 };
251
252
253 /* Cut 2.0 Tracking carrier loop carrier QPSK 1/4 to QPSK 2/5 long Frame */
254 static const struct stv0900_car_loop_optim FE_STV0900_S2LowQPCarLoopCut20[3] = {
255         /* Modcod               2MPon   2MPoff  5MPon   5MPoff  10MPon
256                                 10MPoff 20MPon  20MPoff 30MPon  30MPoff */
257         { STV0900_QPSK_14,      0x0F,   0x3F,   0x0E,   0x3F,   0x2D,
258                                 0x2F,   0x2D,   0x1F,   0x3D,   0x3E },
259         { STV0900_QPSK_13,      0x0F,   0x3F,   0x0E,   0x3F,   0x2D,
260                                 0x2F,   0x3D,   0x0F,   0x3D,   0x2E },
261         { STV0900_QPSK_25,      0x1F,   0x3F,   0x1E,   0x3F,   0x3D,
262                                 0x1F,   0x3D,   0x3E,   0x3D,   0x2E }
263 };
264
265
266 /* Cut 2.0 Tracking carrier loop carrier  short Frame, cut 1.2 and 2.0 */
267 static const
268 struct stv0900_short_frames_car_loop_optim FE_STV0900_S2ShortCarLoop[4] = {
269         /*Mod           2Mcut1.2 2Mcut2.0 5Mcut1.2 5Mcut2.0 10Mcut1.2
270                         10Mcut2.0 20Mcut1.2 20M_cut2.0 30Mcut1.2 30Mcut2.0*/
271         { STV0900_QPSK,         0x3C,   0x2F,   0x2B,   0x2E,   0x0B,
272                                 0x0E,   0x3A,   0x0E,   0x2A,   0x3D },
273         { STV0900_8PSK,         0x0B,   0x3E,   0x2A,   0x0E,   0x0A,
274                                 0x2D,   0x19,   0x0D,   0x09,   0x3C },
275         { STV0900_16APSK,       0x1B,   0x1E,   0x1B,   0x1E,   0x1B,
276                                 0x1E,   0x3A,   0x3D,   0x2A,   0x2D },
277         { STV0900_32APSK,       0x1B,   0x1E,   0x1B,   0x1E,   0x1B,
278                                 0x1E,   0x3A,   0x3D,   0x2A,   0x2D }
279 };
280
281 static  const struct stv0900_car_loop_optim FE_STV0900_S2CarLoopCut30[14] = {
282         /*Modcod                2MPon   2MPoff  5MPon   5MPoff  10MPon
283                                 10MPoff 20MPon  20MPoff 30MPon  30MPoff */
284         { STV0900_QPSK_12,      0x3C,   0x2C,   0x0C,   0x2C,   0x1B,
285                                 0x2C,   0x1B,   0x1C,   0x0B,   0x3B },
286         { STV0900_QPSK_35,      0x0D,   0x0D,   0x0C,   0x0D,   0x1B,
287                                 0x3C,   0x1B,   0x1C,   0x0B,   0x3B },
288         { STV0900_QPSK_23,      0x1D,   0x0D,   0x0C,   0x1D,   0x2B,
289                                 0x3C,   0x1B,   0x1C,   0x0B,   0x3B },
290         { STV0900_QPSK_34,      0x1D,   0x1D,   0x0C,   0x1D,   0x2B,
291                                 0x3C,   0x1B,   0x1C,   0x0B,   0x3B },
292         { STV0900_QPSK_45,      0x2D,   0x1D,   0x1C,   0x1D,   0x2B,
293                                 0x3C,   0x2B,   0x0C,   0x1B,   0x3B },
294         { STV0900_QPSK_56,      0x2D,   0x1D,   0x1C,   0x1D,   0x2B,
295                                 0x3C,   0x2B,   0x0C,   0x1B,   0x3B },
296         { STV0900_QPSK_89,      0x3D,   0x2D,   0x1C,   0x1D,   0x3B,
297                                 0x3C,   0x2B,   0x0C,   0x1B,   0x3B },
298         { STV0900_QPSK_910,     0x3D,   0x2D,   0x1C,   0x1D,   0x3B,
299                                 0x3C,   0x2B,   0x0C,   0x1B,   0x3B },
300         { STV0900_8PSK_35,      0x39,   0x19,   0x39,   0x19,   0x19,
301                                 0x19,   0x19,   0x19,   0x09,   0x19 },
302         { STV0900_8PSK_23,      0x2A,   0x39,   0x1A,   0x0A,   0x39,
303                                 0x0A,   0x29,   0x39,   0x29,   0x0A },
304         { STV0900_8PSK_34,      0x0B,   0x3A,   0x0B,   0x0B,   0x3A,
305                                 0x1B,   0x1A,   0x0B,   0x1A,   0x3A },
306         { STV0900_8PSK_56,      0x0C,   0x1B,   0x3B,   0x2B,   0x1B,
307                                 0x3B,   0x3A,   0x3B,   0x3A,   0x1B },
308         { STV0900_8PSK_89,      0x2C,   0x2C,   0x2C,   0x1C,   0x2B,
309                                 0x0C,   0x0B,   0x3B,   0x0B,   0x1B },
310         { STV0900_8PSK_910,     0x2C,   0x3C,   0x2C,   0x1C,   0x3B,
311                                 0x1C,   0x0B,   0x3B,   0x0B,   0x1B }
312 };
313
314 static  const
315 struct stv0900_car_loop_optim FE_STV0900_S2APSKCarLoopCut30[11] = {
316         /*Modcod                2MPon   2MPoff  5MPon   5MPoff  10MPon
317                                 10MPoff 20MPon  20MPoff 30MPon  30MPoff */
318         { STV0900_16APSK_23,    0x0A,   0x0A,   0x0A,   0x0A,   0x1A,
319                                 0x0A,   0x3A,   0x0A,   0x2A,   0x0A },
320         { STV0900_16APSK_34,    0x0A,   0x0A,   0x0A,   0x0A,   0x0B,
321                                 0x0A,   0x3B,   0x0A,   0x1B,   0x0A },
322         { STV0900_16APSK_45,    0x0A,   0x0A,   0x0A,   0x0A,   0x1B,
323                                 0x0A,   0x3B,   0x0A,   0x2B,   0x0A },
324         { STV0900_16APSK_56,    0x0A,   0x0A,   0x0A,   0x0A,   0x1B,
325                                 0x0A,   0x3B,   0x0A,   0x2B,   0x0A },
326         { STV0900_16APSK_89,    0x0A,   0x0A,   0x0A,   0x0A,   0x2B,
327                                 0x0A,   0x0C,   0x0A,   0x3B,   0x0A },
328         { STV0900_16APSK_910,   0x0A,   0x0A,   0x0A,   0x0A,   0x2B,
329                                 0x0A,   0x0C,   0x0A,   0x3B,   0x0A },
330         { STV0900_32APSK_34,    0x0A,   0x0A,   0x0A,   0x0A,   0x0A,
331                                 0x0A,   0x0A,   0x0A,   0x0A,   0x0A },
332         { STV0900_32APSK_45,    0x0A,   0x0A,   0x0A,   0x0A,   0x0A,
333                                 0x0A,   0x0A,   0x0A,   0x0A,   0x0A },
334         { STV0900_32APSK_56,    0x0A,   0x0A,   0x0A,   0x0A,   0x0A,
335                                 0x0A,   0x0A,   0x0A,   0x0A,   0x0A },
336         { STV0900_32APSK_89,    0x0A,   0x0A,   0x0A,   0x0A,   0x0A,
337                                 0x0A,   0x0A,   0x0A,   0x0A,   0x0A },
338         { STV0900_32APSK_910,   0x0A,   0x0A,   0x0A,   0x0A,   0x0A,
339                                 0x0A,   0x0A,   0x0A,   0x0A,   0x0A }
340 };
341
342 static  const
343 struct stv0900_car_loop_optim FE_STV0900_S2LowQPCarLoopCut30[3] = {
344         /*Modcod                2MPon   2MPoff  5MPon   5MPoff  10MPon
345                                 10MPoff 20MPon  20MPoff 30MPon  30MPoff*/
346         { STV0900_QPSK_14,      0x0C,   0x3C,   0x0B,   0x3C,   0x2A,
347                                 0x2C,   0x2A,   0x1C,   0x3A,   0x3B },
348         { STV0900_QPSK_13,      0x0C,   0x3C,   0x0B,   0x3C,   0x2A,
349                                 0x2C,   0x3A,   0x0C,   0x3A,   0x2B },
350         { STV0900_QPSK_25,      0x1C,   0x3C,   0x1B,   0x3C,   0x3A,
351                                 0x1C,   0x3A,   0x3B,   0x3A,   0x2B }
352 };
353
354 static  const struct stv0900_short_frames_car_loop_optim_vs_mod
355 FE_STV0900_S2ShortCarLoopCut30[4] = {
356         /*Mod           2Mcut3.0 5Mcut3.0 10Mcut3.0 20Mcut3.0 30Mcut3.0*/
357         { STV0900_QPSK,         0x2C,   0x2B,   0x0B,   0x0B,   0x3A },
358         { STV0900_8PSK,         0x3B,   0x0B,   0x2A,   0x0A,   0x39 },
359         { STV0900_16APSK,       0x1B,   0x1B,   0x1B,   0x3A,   0x2A },
360         { STV0900_32APSK,       0x1B,   0x1B,   0x1B,   0x3A,   0x2A },
361
362 };
363
364 static const u16 STV0900_InitVal[181][2] = {
365         { R0900_OUTCFG          , 0x00  },
366         { R0900_AGCRF1CFG       , 0x11  },
367         { R0900_AGCRF2CFG       , 0x13  },
368         { R0900_TSGENERAL1X     , 0x14  },
369         { R0900_TSTTNR2         , 0x21  },
370         { R0900_TSTTNR4         , 0x21  },
371         { R0900_P2_DISTXCTL     , 0x22  },
372         { R0900_P2_F22TX        , 0xc0  },
373         { R0900_P2_F22RX        , 0xc0  },
374         { R0900_P2_DISRXCTL     , 0x00  },
375         { R0900_P2_TNRSTEPS     , 0x87  },
376         { R0900_P2_TNRGAIN      , 0x09  },
377         { R0900_P2_DMDCFGMD     , 0xF9  },
378         { R0900_P2_DEMOD        , 0x08  },
379         { R0900_P2_DMDCFG3      , 0xc4  },
380         { R0900_P2_CARFREQ      , 0xed  },
381         { R0900_P2_TNRCFG2      , 0x02  },
382         { R0900_P2_TNRCFG3      , 0x02  },
383         { R0900_P2_LDT          , 0xd0  },
384         { R0900_P2_LDT2         , 0xb8  },
385         { R0900_P2_TMGCFG       , 0xd2  },
386         { R0900_P2_TMGTHRISE    , 0x20  },
387         { R0900_P2_TMGTHFALL    , 0x00  },
388         { R0900_P2_FECSPY       , 0x88  },
389         { R0900_P2_FSPYDATA     , 0x3a  },
390         { R0900_P2_FBERCPT4     , 0x00  },
391         { R0900_P2_FSPYBER      , 0x10  },
392         { R0900_P2_ERRCTRL1     , 0x35  },
393         { R0900_P2_ERRCTRL2     , 0xc1  },
394         { R0900_P2_CFRICFG      , 0xf8  },
395         { R0900_P2_NOSCFG       , 0x1c  },
396         { R0900_P2_DMDT0M       , 0x20  },
397         { R0900_P2_CORRELMANT   , 0x70  },
398         { R0900_P2_CORRELABS    , 0x88  },
399         { R0900_P2_AGC2O        , 0x5b  },
400         { R0900_P2_AGC2REF      , 0x38  },
401         { R0900_P2_CARCFG       , 0xe4  },
402         { R0900_P2_ACLC         , 0x1A  },
403         { R0900_P2_BCLC         , 0x09  },
404         { R0900_P2_CARHDR       , 0x08  },
405         { R0900_P2_KREFTMG      , 0xc1  },
406         { R0900_P2_SFRUPRATIO   , 0xf0  },
407         { R0900_P2_SFRLOWRATIO  , 0x70  },
408         { R0900_P2_SFRSTEP      , 0x58  },
409         { R0900_P2_TMGCFG2      , 0x01  },
410         { R0900_P2_CAR2CFG      , 0x26  },
411         { R0900_P2_BCLC2S2Q     , 0x86  },
412         { R0900_P2_BCLC2S28     , 0x86  },
413         { R0900_P2_SMAPCOEF7    , 0x77  },
414         { R0900_P2_SMAPCOEF6    , 0x85  },
415         { R0900_P2_SMAPCOEF5    , 0x77  },
416         { R0900_P2_TSCFGL       , 0x20  },
417         { R0900_P2_DMDCFG2      , 0x3b  },
418         { R0900_P2_MODCODLST0   , 0xff  },
419         { R0900_P2_MODCODLST1   , 0xff  },
420         { R0900_P2_MODCODLST2   , 0xff  },
421         { R0900_P2_MODCODLST3   , 0xff  },
422         { R0900_P2_MODCODLST4   , 0xff  },
423         { R0900_P2_MODCODLST5   , 0xff  },
424         { R0900_P2_MODCODLST6   , 0xff  },
425         { R0900_P2_MODCODLST7   , 0xcc  },
426         { R0900_P2_MODCODLST8   , 0xcc  },
427         { R0900_P2_MODCODLST9   , 0xcc  },
428         { R0900_P2_MODCODLSTA   , 0xcc  },
429         { R0900_P2_MODCODLSTB   , 0xcc  },
430         { R0900_P2_MODCODLSTC   , 0xcc  },
431         { R0900_P2_MODCODLSTD   , 0xcc  },
432         { R0900_P2_MODCODLSTE   , 0xcc  },
433         { R0900_P2_MODCODLSTF   , 0xcf  },
434         { R0900_P1_DISTXCTL     , 0x22  },
435         { R0900_P1_F22TX        , 0xc0  },
436         { R0900_P1_F22RX        , 0xc0  },
437         { R0900_P1_DISRXCTL     , 0x00  },
438         { R0900_P1_TNRSTEPS     , 0x87  },
439         { R0900_P1_TNRGAIN      , 0x09  },
440         { R0900_P1_DMDCFGMD     , 0xf9  },
441         { R0900_P1_DEMOD        , 0x08  },
442         { R0900_P1_DMDCFG3      , 0xc4  },
443         { R0900_P1_DMDT0M       , 0x20  },
444         { R0900_P1_CARFREQ      , 0xed  },
445         { R0900_P1_TNRCFG2      , 0x82  },
446         { R0900_P1_TNRCFG3      , 0x02  },
447         { R0900_P1_LDT          , 0xd0  },
448         { R0900_P1_LDT2         , 0xb8  },
449         { R0900_P1_TMGCFG       , 0xd2  },
450         { R0900_P1_TMGTHRISE    , 0x20  },
451         { R0900_P1_TMGTHFALL    , 0x00  },
452         { R0900_P1_SFRUPRATIO   , 0xf0  },
453         { R0900_P1_SFRLOWRATIO  , 0x70  },
454         { R0900_P1_TSCFGL       , 0x20  },
455         { R0900_P1_FECSPY       , 0x88  },
456         { R0900_P1_FSPYDATA     , 0x3a  },
457         { R0900_P1_FBERCPT4     , 0x00  },
458         { R0900_P1_FSPYBER      , 0x10  },
459         { R0900_P1_ERRCTRL1     , 0x35  },
460         { R0900_P1_ERRCTRL2     , 0xc1  },
461         { R0900_P1_CFRICFG      , 0xf8  },
462         { R0900_P1_NOSCFG       , 0x1c  },
463         { R0900_P1_CORRELMANT   , 0x70  },
464         { R0900_P1_CORRELABS    , 0x88  },
465         { R0900_P1_AGC2O        , 0x5b  },
466         { R0900_P1_AGC2REF      , 0x38  },
467         { R0900_P1_CARCFG       , 0xe4  },
468         { R0900_P1_ACLC         , 0x1A  },
469         { R0900_P1_BCLC         , 0x09  },
470         { R0900_P1_CARHDR       , 0x08  },
471         { R0900_P1_KREFTMG      , 0xc1  },
472         { R0900_P1_SFRSTEP      , 0x58  },
473         { R0900_P1_TMGCFG2      , 0x01  },
474         { R0900_P1_CAR2CFG      , 0x26  },
475         { R0900_P1_BCLC2S2Q     , 0x86  },
476         { R0900_P1_BCLC2S28     , 0x86  },
477         { R0900_P1_SMAPCOEF7    , 0x77  },
478         { R0900_P1_SMAPCOEF6    , 0x85  },
479         { R0900_P1_SMAPCOEF5    , 0x77  },
480         { R0900_P1_DMDCFG2      , 0x3b  },
481         { R0900_P1_MODCODLST0   , 0xff  },
482         { R0900_P1_MODCODLST1   , 0xff  },
483         { R0900_P1_MODCODLST2   , 0xff  },
484         { R0900_P1_MODCODLST3   , 0xff  },
485         { R0900_P1_MODCODLST4   , 0xff  },
486         { R0900_P1_MODCODLST5   , 0xff  },
487         { R0900_P1_MODCODLST6   , 0xff  },
488         { R0900_P1_MODCODLST7   , 0xcc  },
489         { R0900_P1_MODCODLST8   , 0xcc  },
490         { R0900_P1_MODCODLST9   , 0xcc  },
491         { R0900_P1_MODCODLSTA   , 0xcc  },
492         { R0900_P1_MODCODLSTB   , 0xcc  },
493         { R0900_P1_MODCODLSTC   , 0xcc  },
494         { R0900_P1_MODCODLSTD   , 0xcc  },
495         { R0900_P1_MODCODLSTE   , 0xcc  },
496         { R0900_P1_MODCODLSTF   , 0xcf  },
497         { R0900_GENCFG          , 0x1d  },
498         { R0900_NBITER_NF4      , 0x37  },
499         { R0900_NBITER_NF5      , 0x29  },
500         { R0900_NBITER_NF6      , 0x37  },
501         { R0900_NBITER_NF7      , 0x33  },
502         { R0900_NBITER_NF8      , 0x31  },
503         { R0900_NBITER_NF9      , 0x2f  },
504         { R0900_NBITER_NF10     , 0x39  },
505         { R0900_NBITER_NF11     , 0x3a  },
506         { R0900_NBITER_NF12     , 0x29  },
507         { R0900_NBITER_NF13     , 0x37  },
508         { R0900_NBITER_NF14     , 0x33  },
509         { R0900_NBITER_NF15     , 0x2f  },
510         { R0900_NBITER_NF16     , 0x39  },
511         { R0900_NBITER_NF17     , 0x3a  },
512         { R0900_NBITERNOERR     , 0x04  },
513         { R0900_GAINLLR_NF4     , 0x0C  },
514         { R0900_GAINLLR_NF5     , 0x0F  },
515         { R0900_GAINLLR_NF6     , 0x11  },
516         { R0900_GAINLLR_NF7     , 0x14  },
517         { R0900_GAINLLR_NF8     , 0x17  },
518         { R0900_GAINLLR_NF9     , 0x19  },
519         { R0900_GAINLLR_NF10    , 0x20  },
520         { R0900_GAINLLR_NF11    , 0x21  },
521         { R0900_GAINLLR_NF12    , 0x0D  },
522         { R0900_GAINLLR_NF13    , 0x0F  },
523         { R0900_GAINLLR_NF14    , 0x13  },
524         { R0900_GAINLLR_NF15    , 0x1A  },
525         { R0900_GAINLLR_NF16    , 0x1F  },
526         { R0900_GAINLLR_NF17    , 0x21  },
527         { R0900_RCCFG2          , 0x20  },
528         { R0900_P1_FECM         , 0x01  }, /*disable DSS modes*/
529         { R0900_P2_FECM         , 0x01  }, /*disable DSS modes*/
530         { R0900_P1_PRVIT        , 0x2F  }, /*disable puncture rate 6/7*/
531         { R0900_P2_PRVIT        , 0x2F  }, /*disable puncture rate 6/7*/
532         { R0900_STROUT1CFG      , 0x4c  },
533         { R0900_STROUT2CFG      , 0x4c  },
534         { R0900_CLKOUT1CFG      , 0x50  },
535         { R0900_CLKOUT2CFG      , 0x50  },
536         { R0900_DPN1CFG         , 0x4a  },
537         { R0900_DPN2CFG         , 0x4a  },
538         { R0900_DATA71CFG       , 0x52  },
539         { R0900_DATA72CFG       , 0x52  },
540         { R0900_P1_TSCFGM       , 0xc0  },
541         { R0900_P2_TSCFGM       , 0xc0  },
542         { R0900_P1_TSCFGH       , 0xe0  }, /* DVB-CI timings */
543         { R0900_P2_TSCFGH       , 0xe0  }, /* DVB-CI timings */
544         { R0900_P1_TSSPEED      , 0x40  },
545         { R0900_P2_TSSPEED      , 0x40  },
546 };
547
548 static const u16 STV0900_Cut20_AddOnVal[32][2] = {
549         { R0900_P2_DMDCFG3      , 0xe8  },
550         { R0900_P2_DMDCFG4      , 0x10  },
551         { R0900_P2_CARFREQ      , 0x38  },
552         { R0900_P2_CARHDR       , 0x20  },
553         { R0900_P2_KREFTMG      , 0x5a  },
554         { R0900_P2_SMAPCOEF7    , 0x06  },
555         { R0900_P2_SMAPCOEF6    , 0x00  },
556         { R0900_P2_SMAPCOEF5    , 0x04  },
557         { R0900_P2_NOSCFG       , 0x0c  },
558         { R0900_P1_DMDCFG3      , 0xe8  },
559         { R0900_P1_DMDCFG4      , 0x10  },
560         { R0900_P1_CARFREQ      , 0x38  },
561         { R0900_P1_CARHDR       , 0x20  },
562         { R0900_P1_KREFTMG      , 0x5a  },
563         { R0900_P1_SMAPCOEF7    , 0x06  },
564         { R0900_P1_SMAPCOEF6    , 0x00  },
565         { R0900_P1_SMAPCOEF5    , 0x04  },
566         { R0900_P1_NOSCFG       , 0x0c  },
567         { R0900_GAINLLR_NF4     , 0x21  },
568         { R0900_GAINLLR_NF5     , 0x21  },
569         { R0900_GAINLLR_NF6     , 0x20  },
570         { R0900_GAINLLR_NF7     , 0x1F  },
571         { R0900_GAINLLR_NF8     , 0x1E  },
572         { R0900_GAINLLR_NF9     , 0x1E  },
573         { R0900_GAINLLR_NF10    , 0x1D  },
574         { R0900_GAINLLR_NF11    , 0x1B  },
575         { R0900_GAINLLR_NF12    , 0x20  },
576         { R0900_GAINLLR_NF13    , 0x20  },
577         { R0900_GAINLLR_NF14    , 0x20  },
578         { R0900_GAINLLR_NF15    , 0x20  },
579         { R0900_GAINLLR_NF16    , 0x20  },
580         { R0900_GAINLLR_NF17    , 0x21  }
581
582 };
583
584 #endif