Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
drxd_firm.c
Go to the documentation of this file.
1 /*
2  * drxd_firm.c : DRXD firmware tables
3  *
4  * Copyright (C) 2006-2007 Micronas
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * version 2 only, as published by the Free Software Foundation.
9  *
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
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., 51 Franklin Street, Fifth Floor, Boston, MA
20  * 02110-1301, USA
21  * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
22  */
23 
24 /* TODO: generate this file with a script from a settings file */
25 
26 /* Contains A2 firmware version: 1.4.2
27  * Contains B1 firmware version: 3.3.33
28  * Contains settings from driver 1.4.23
29 */
30 
31 #include "drxd_firm.h"
32 
33 #define ADDRESS(x) ((x) & 0xFF), (((x)>>8) & 0xFF), (((x)>>16) & 0xFF), (((x)>>24) & 0xFF)
34 #define LENGTH(x) ((x) & 0xFF), (((x)>>8) & 0xFF)
35 
36 /* Is written via block write, must be little endian */
37 #define DATA16(x) ((x) & 0xFF), (((x)>>8) & 0xFF)
38 
39 #define WRBLOCK(a, l) ADDRESS(a), LENGTH(l)
40 #define WR16(a, d) ADDRESS(a), LENGTH(1), DATA16(d)
41 
42 #define END_OF_TABLE 0xFF, 0xFF, 0xFF, 0xFF
43 
44 /* HI firmware patches */
45 
46 #define HI_TR_FUNC_ADDR HI_IF_RAM_USR_BEGIN__A
47 #define HI_TR_FUNC_SIZE 9 /* size of this function in instruction words */
48 
51  0x26, 0x00, /* 0 -> ring.rdy; */
52  0x60, 0x04, /* r0rami.dt -> ring.xba; */
53  0x61, 0x04, /* r0rami.dt -> ring.xad; */
54  0xE3, 0x07, /* HI_RA_RAM_USR_BEGIN -> ring.iad; */
55  0x40, 0x00, /* (long immediate) */
56  0x64, 0x04, /* r0rami.dt -> ring.len; */
57  0x65, 0x04, /* r0rami.dt -> ring.ctl; */
58  0x26, 0x00, /* 0 -> ring.rdy; */
59  0x38, 0x00, /* 0 -> jumps.ad; */
61 };
62 
63 /* Pins D0 and D1 of the parallel MPEG output can be used
64  to set the I2C address of a device. */
65 
66 #define HI_RST_FUNC_ADDR (HI_IF_RAM_USR_BEGIN__A + HI_TR_FUNC_SIZE)
67 #define HI_RST_FUNC_SIZE 54 /* size of this function in instruction words */
68 
69 /* D0 Version */
72  0xC8, 0x07, 0x01, 0x00, /* MASK -> reg0.dt; */
73  0xE0, 0x07, 0x15, 0x02, /* (EC__BLK << 6) + EC_OC_REG__BNK -> ring.xba; */
74  0xE1, 0x07, 0x12, 0x00, /* EC_OC_REG_OC_MPG_SIO__A -> ring.xad; */
75  0xA2, 0x00, /* M_BNK_ID_DAT -> ring.iba; */
76  0x23, 0x00, /* &data -> ring.iad; */
77  0x24, 0x00, /* 0 -> ring.len; */
78  0xA5, 0x02, /* M_RC_CTR_SWAP | M_RC_CTR_READ -> ring.ctl; */
79  0x26, 0x00, /* 0 -> ring.rdy; */
80  0x42, 0x00, /* &data+1 -> w0ram.ad; */
81  0xC0, 0x07, 0xFF, 0x0F, /* -1 -> w0ram.dt; */
82  0x63, 0x00, /* &data+1 -> ring.iad; */
83  0x65, 0x02, /* M_RC_CTR_SWAP | M_RC_CTR_WRITE -> ring.ctl; */
84  0x26, 0x00, /* 0 -> ring.rdy; */
85  0xE1, 0x07, 0x38, 0x00, /* EC_OC_REG_OCR_MPG_USR_DAT__A -> ring.xad; */
86  0xA5, 0x02, /* M_RC_CTR_SWAP | M_RC_CTR_READ -> ring.ctl; */
87  0x26, 0x00, /* 0 -> ring.rdy; */
88  0xE1, 0x07, 0x12, 0x00, /* EC_OC_REG_OC_MPG_SIO__A -> ring.xad; */
89  0x23, 0x00, /* &data -> ring.iad; */
90  0x65, 0x02, /* M_RC_CTR_SWAP | M_RC_CTR_WRITE -> ring.ctl; */
91  0x26, 0x00, /* 0 -> ring.rdy; */
92  0x42, 0x00, /* &data+1 -> w0ram.ad; */
93  0x0F, 0x04, /* r0ram.dt -> and.op; */
94  0x1C, 0x06, /* reg0.dt -> and.tr; */
95  0xCF, 0x04, /* and.rs -> add.op; */
96  0xD0, 0x07, 0x70, 0x00, /* DEF_DEV_ID -> add.tr; */
97  0xD0, 0x04, /* add.rs -> add.tr; */
98  0xC8, 0x04, /* add.rs -> reg0.dt; */
99  0x60, 0x00, /* reg0.dt -> w0ram.dt; */
100  0xC2, 0x07, 0x10, 0x00, /* SLV0_BASE -> w0rami.ad; */
101  0x01, 0x00, /* 0 -> w0rami.dt; */
102  0x01, 0x06, /* reg0.dt -> w0rami.dt; */
103  0xC2, 0x07, 0x20, 0x00, /* SLV1_BASE -> w0rami.ad; */
104  0x01, 0x00, /* 0 -> w0rami.dt; */
105  0x01, 0x06, /* reg0.dt -> w0rami.dt; */
106  0xC2, 0x07, 0x30, 0x00, /* CMD_BASE -> w0rami.ad; */
107  0x01, 0x00, /* 0 -> w0rami.dt; */
108  0x01, 0x00, /* 0 -> w0rami.dt; */
109  0x01, 0x00, /* 0 -> w0rami.dt; */
110  0x68, 0x00, /* M_IC_SEL_PT1 -> i2c.sel; */
111  0x29, 0x00, /* M_IC_CMD_RESET -> i2c.cmd; */
112  0x28, 0x00, /* M_IC_SEL_PT0 -> i2c.sel; */
113  0x29, 0x00, /* M_IC_CMD_RESET -> i2c.cmd; */
114  0xF8, 0x07, 0x2F, 0x00, /* 0x2F -> jumps.ad; */
115 
116  WR16((B_HI_IF_RAM_TRP_BPT0__AX + ((2 * 0) + 1)),
117  (u16) (HI_RST_FUNC_ADDR & 0x3FF)),
118  WR16((B_HI_IF_RAM_TRP_BPT0__AX + ((2 * 1) + 1)),
119  (u16) (HI_RST_FUNC_ADDR & 0x3FF)),
120  WR16((B_HI_IF_RAM_TRP_BPT0__AX + ((2 * 2) + 1)),
121  (u16) (HI_RST_FUNC_ADDR & 0x3FF)),
122  WR16((B_HI_IF_RAM_TRP_BPT0__AX + ((2 * 3) + 1)),
123  (u16) (HI_RST_FUNC_ADDR & 0x3FF)),
124 
125  /* Force quick and dirty reset */
128 };
129 
130 /* D0,D1 Version */
133  0xC8, 0x07, 0x03, 0x00, /* MASK -> reg0.dt; */
134  0xE0, 0x07, 0x15, 0x02, /* (EC__BLK << 6) + EC_OC_REG__BNK -> ring.xba; */
135  0xE1, 0x07, 0x12, 0x00, /* EC_OC_REG_OC_MPG_SIO__A -> ring.xad; */
136  0xA2, 0x00, /* M_BNK_ID_DAT -> ring.iba; */
137  0x23, 0x00, /* &data -> ring.iad; */
138  0x24, 0x00, /* 0 -> ring.len; */
139  0xA5, 0x02, /* M_RC_CTR_SWAP | M_RC_CTR_READ -> ring.ctl; */
140  0x26, 0x00, /* 0 -> ring.rdy; */
141  0x42, 0x00, /* &data+1 -> w0ram.ad; */
142  0xC0, 0x07, 0xFF, 0x0F, /* -1 -> w0ram.dt; */
143  0x63, 0x00, /* &data+1 -> ring.iad; */
144  0x65, 0x02, /* M_RC_CTR_SWAP | M_RC_CTR_WRITE -> ring.ctl; */
145  0x26, 0x00, /* 0 -> ring.rdy; */
146  0xE1, 0x07, 0x38, 0x00, /* EC_OC_REG_OCR_MPG_USR_DAT__A -> ring.xad; */
147  0xA5, 0x02, /* M_RC_CTR_SWAP | M_RC_CTR_READ -> ring.ctl; */
148  0x26, 0x00, /* 0 -> ring.rdy; */
149  0xE1, 0x07, 0x12, 0x00, /* EC_OC_REG_OC_MPG_SIO__A -> ring.xad; */
150  0x23, 0x00, /* &data -> ring.iad; */
151  0x65, 0x02, /* M_RC_CTR_SWAP | M_RC_CTR_WRITE -> ring.ctl; */
152  0x26, 0x00, /* 0 -> ring.rdy; */
153  0x42, 0x00, /* &data+1 -> w0ram.ad; */
154  0x0F, 0x04, /* r0ram.dt -> and.op; */
155  0x1C, 0x06, /* reg0.dt -> and.tr; */
156  0xCF, 0x04, /* and.rs -> add.op; */
157  0xD0, 0x07, 0x70, 0x00, /* DEF_DEV_ID -> add.tr; */
158  0xD0, 0x04, /* add.rs -> add.tr; */
159  0xC8, 0x04, /* add.rs -> reg0.dt; */
160  0x60, 0x00, /* reg0.dt -> w0ram.dt; */
161  0xC2, 0x07, 0x10, 0x00, /* SLV0_BASE -> w0rami.ad; */
162  0x01, 0x00, /* 0 -> w0rami.dt; */
163  0x01, 0x06, /* reg0.dt -> w0rami.dt; */
164  0xC2, 0x07, 0x20, 0x00, /* SLV1_BASE -> w0rami.ad; */
165  0x01, 0x00, /* 0 -> w0rami.dt; */
166  0x01, 0x06, /* reg0.dt -> w0rami.dt; */
167  0xC2, 0x07, 0x30, 0x00, /* CMD_BASE -> w0rami.ad; */
168  0x01, 0x00, /* 0 -> w0rami.dt; */
169  0x01, 0x00, /* 0 -> w0rami.dt; */
170  0x01, 0x00, /* 0 -> w0rami.dt; */
171  0x68, 0x00, /* M_IC_SEL_PT1 -> i2c.sel; */
172  0x29, 0x00, /* M_IC_CMD_RESET -> i2c.cmd; */
173  0x28, 0x00, /* M_IC_SEL_PT0 -> i2c.sel; */
174  0x29, 0x00, /* M_IC_CMD_RESET -> i2c.cmd; */
175  0xF8, 0x07, 0x2F, 0x00, /* 0x2F -> jumps.ad; */
176 
177  WR16((B_HI_IF_RAM_TRP_BPT0__AX + ((2 * 0) + 1)),
178  (u16) (HI_RST_FUNC_ADDR & 0x3FF)),
179  WR16((B_HI_IF_RAM_TRP_BPT0__AX + ((2 * 1) + 1)),
180  (u16) (HI_RST_FUNC_ADDR & 0x3FF)),
181  WR16((B_HI_IF_RAM_TRP_BPT0__AX + ((2 * 2) + 1)),
182  (u16) (HI_RST_FUNC_ADDR & 0x3FF)),
183  WR16((B_HI_IF_RAM_TRP_BPT0__AX + ((2 * 3) + 1)),
184  (u16) (HI_RST_FUNC_ADDR & 0x3FF)),
185 
186  /* Force quick and dirty reset */
189 };
190 
193  0x52, 0x00, /* CE_REG_FR_TREAL00__A */
194  0x00, 0x00, /* CE_REG_FR_TIMAG00__A */
195  0x52, 0x00, /* CE_REG_FR_TREAL01__A */
196  0x00, 0x00, /* CE_REG_FR_TIMAG01__A */
197  0x52, 0x00, /* CE_REG_FR_TREAL02__A */
198  0x00, 0x00, /* CE_REG_FR_TIMAG02__A */
199  0x52, 0x00, /* CE_REG_FR_TREAL03__A */
200  0x00, 0x00, /* CE_REG_FR_TIMAG03__A */
201  0x52, 0x00, /* CE_REG_FR_TREAL04__A */
202  0x00, 0x00, /* CE_REG_FR_TIMAG04__A */
203  0x52, 0x00, /* CE_REG_FR_TREAL05__A */
204  0x00, 0x00, /* CE_REG_FR_TIMAG05__A */
205  0x52, 0x00, /* CE_REG_FR_TREAL06__A */
206  0x00, 0x00, /* CE_REG_FR_TIMAG06__A */
207  0x52, 0x00, /* CE_REG_FR_TREAL07__A */
208  0x00, 0x00, /* CE_REG_FR_TIMAG07__A */
209  0x52, 0x00, /* CE_REG_FR_TREAL08__A */
210  0x00, 0x00, /* CE_REG_FR_TIMAG08__A */
211  0x52, 0x00, /* CE_REG_FR_TREAL09__A */
212  0x00, 0x00, /* CE_REG_FR_TIMAG09__A */
213  0x52, 0x00, /* CE_REG_FR_TREAL10__A */
214  0x00, 0x00, /* CE_REG_FR_TIMAG10__A */
215  0x52, 0x00, /* CE_REG_FR_TREAL11__A */
216  0x00, 0x00, /* CE_REG_FR_TIMAG11__A */
217 
218  0x52, 0x00, /* CE_REG_FR_MID_TAP__A */
219 
220  0x0B, 0x00, /* CE_REG_FR_SQS_G00__A */
221  0x0B, 0x00, /* CE_REG_FR_SQS_G01__A */
222  0x0B, 0x00, /* CE_REG_FR_SQS_G02__A */
223  0x0B, 0x00, /* CE_REG_FR_SQS_G03__A */
224  0x0B, 0x00, /* CE_REG_FR_SQS_G04__A */
225  0x0B, 0x00, /* CE_REG_FR_SQS_G05__A */
226  0x0B, 0x00, /* CE_REG_FR_SQS_G06__A */
227  0x0B, 0x00, /* CE_REG_FR_SQS_G07__A */
228  0x0B, 0x00, /* CE_REG_FR_SQS_G08__A */
229  0x0B, 0x00, /* CE_REG_FR_SQS_G09__A */
230  0x0B, 0x00, /* CE_REG_FR_SQS_G10__A */
231  0x0B, 0x00, /* CE_REG_FR_SQS_G11__A */
232  0x0B, 0x00, /* CE_REG_FR_SQS_G12__A */
233 
234  0xFF, 0x01, /* CE_REG_FR_RIO_G00__A */
235  0x90, 0x01, /* CE_REG_FR_RIO_G01__A */
236  0x0B, 0x01, /* CE_REG_FR_RIO_G02__A */
237  0xC8, 0x00, /* CE_REG_FR_RIO_G03__A */
238  0xA0, 0x00, /* CE_REG_FR_RIO_G04__A */
239  0x85, 0x00, /* CE_REG_FR_RIO_G05__A */
240  0x72, 0x00, /* CE_REG_FR_RIO_G06__A */
241  0x64, 0x00, /* CE_REG_FR_RIO_G07__A */
242  0x59, 0x00, /* CE_REG_FR_RIO_G08__A */
243  0x50, 0x00, /* CE_REG_FR_RIO_G09__A */
244  0x49, 0x00, /* CE_REG_FR_RIO_G10__A */
245 
246  0x10, 0x00, /* CE_REG_FR_MODE__A */
247  0x78, 0x00, /* CE_REG_FR_SQS_TRH__A */
248  0x00, 0x00, /* CE_REG_FR_RIO_GAIN__A */
249  0x00, 0x02, /* CE_REG_FR_BYPASS__A */
250  0x0D, 0x00, /* CE_REG_FR_PM_SET__A */
251  0x07, 0x00, /* CE_REG_FR_ERR_SH__A */
252  0x04, 0x00, /* CE_REG_FR_MAN_SH__A */
253  0x06, 0x00, /* CE_REG_FR_TAP_SH__A */
254 
256 };
257 
260  0x00, 0x00, /* FE_AD_REG_PD__A */
261  0x01, 0x00, /* FE_AD_REG_INVEXT__A */
262  0x00, 0x00, /* FE_AD_REG_CLKNEG__A */
263 
265  0x10, 0x00, /* FE_AG_REG_DCE_AUR_CNT__A */
266  0x10, 0x00, /* FE_AG_REG_DCE_RUR_CNT__A */
267 
269  0x0E, 0x00, /* FE_AG_REG_ACE_AUR_CNT__A */
270  0x00, 0x00, /* FE_AG_REG_ACE_RUR_CNT__A */
271 
273  0x04, 0x00, /* FE_AG_REG_EGC_FLA_RGN__A */
274  0x1F, 0x00, /* FE_AG_REG_EGC_SLO_RGN__A */
275  0x00, 0x00, /* FE_AG_REG_EGC_JMP_PSN__A */
276  0x00, 0x00, /* FE_AG_REG_EGC_FLA_INC__A */
277  0x00, 0x00, /* FE_AG_REG_EGC_FLA_DEC__A */
278 
280  0xFF, 0x01, /* FE_AG_REG_GC1_AGC_MAX__A */
281  0x00, 0xFE, /* FE_AG_REG_GC1_AGC_MIN__A */
282 
284  0x00, 0x00, /* FE_AG_REG_IND_WIN__A */
285  0x05, 0x00, /* FE_AG_REG_IND_THD_LOL__A */
286  0x0F, 0x00, /* FE_AG_REG_IND_THD_HIL__A */
287  0x00, 0x00, /* FE_AG_REG_IND_DEL__A don't care */
288  0x1E, 0x00, /* FE_AG_REG_IND_PD1_WRI__A */
289  0x0C, 0x00, /* FE_AG_REG_PDA_AUR_CNT__A */
290  0x00, 0x00, /* FE_AG_REG_PDA_RUR_CNT__A */
291  0x00, 0x00, /* FE_AG_REG_PDA_AVE_DAT__A don't care */
292  0x00, 0x00, /* FE_AG_REG_PDC_RUR_CNT__A */
293  0x01, 0x00, /* FE_AG_REG_PDC_SET_LVL__A */
294  0x02, 0x00, /* FE_AG_REG_PDC_FLA_RGN__A */
295  0x00, 0x00, /* FE_AG_REG_PDC_JMP_PSN__A don't care */
296  0xFF, 0xFF, /* FE_AG_REG_PDC_FLA_STP__A */
297  0xFF, 0xFF, /* FE_AG_REG_PDC_SLO_STP__A */
298  0x00, 0x1F, /* FE_AG_REG_PDC_PD2_WRI__A don't care */
299  0x00, 0x00, /* FE_AG_REG_PDC_MAP_DAT__A don't care */
300  0x02, 0x00, /* FE_AG_REG_PDC_MAX__A */
301  0x0C, 0x00, /* FE_AG_REG_TGA_AUR_CNT__A */
302  0x00, 0x00, /* FE_AG_REG_TGA_RUR_CNT__A */
303  0x00, 0x00, /* FE_AG_REG_TGA_AVE_DAT__A don't care */
304  0x00, 0x00, /* FE_AG_REG_TGC_RUR_CNT__A */
305  0x22, 0x00, /* FE_AG_REG_TGC_SET_LVL__A */
306  0x15, 0x00, /* FE_AG_REG_TGC_FLA_RGN__A */
307  0x00, 0x00, /* FE_AG_REG_TGC_JMP_PSN__A don't care */
308  0x01, 0x00, /* FE_AG_REG_TGC_FLA_STP__A */
309  0x0A, 0x00, /* FE_AG_REG_TGC_SLO_STP__A */
310  0x00, 0x00, /* FE_AG_REG_TGC_MAP_DAT__A don't care */
311  0x10, 0x00, /* FE_AG_REG_FGA_AUR_CNT__A */
312  0x10, 0x00, /* FE_AG_REG_FGA_RUR_CNT__A */
313 
315  0x00, 0x00, /* FE_AG_REG_BGC_FGC_WRI__A */
316  0x00, 0x00, /* FE_AG_REG_BGC_CGC_WRI__A */
317 
319  0x05, 0x00, /* FE_FD_REG_SCL__A */
320  0x03, 0x00, /* FE_FD_REG_MAX_LEV__A */
321  0x05, 0x00, /* FE_FD_REG_NR__A */
322 
324  0x16, 0x00, /* FE_CF_REG_SCL__A */
325  0x04, 0x00, /* FE_CF_REG_MAX_LEV__A */
326  0x06, 0x00, /* FE_CF_REG_NR__A */
327  0x00, 0x00, /* FE_CF_REG_IMP_VAL__A */
328  0x01, 0x00, /* FE_CF_REG_MEAS_VAL__A */
329 
331  0x00, 0x08, /* FE_CU_REG_FRM_CNT_RST__A */
332  0x00, 0x00, /* FE_CU_REG_FRM_CNT_STR__A */
333 
335 };
336 
337  /* with PGA */
338 /* WR16COND( DRXD_WITH_PGA, FE_AG_REG_AG_PGA_MODE__A , 0x0004), */
339  /* without PGA */
340 /* WR16COND( DRXD_WITHOUT_PGA, FE_AG_REG_AG_PGA_MODE__A , 0x0001), */
341 /* WR16(FE_AG_REG_AG_AGC_SIO__A, (extAttr -> FeAgRegAgAgcSio), 0x0000 );*/
342 /* WR16(FE_AG_REG_AG_PWD__A ,(extAttr -> FeAgRegAgPwd), 0x0000 );*/
343 
347  /* Activate measurement, activate scale */
348  WR16(FE_FD_REG_MEAS_VAL__A, 0x0001),
349 
350  WR16(FE_CU_REG_COMM_EXEC__A, 0x0001),
351  WR16(FE_CF_REG_COMM_EXEC__A, 0x0001),
352  WR16(FE_IF_REG_COMM_EXEC__A, 0x0001),
353  WR16(FE_FD_REG_COMM_EXEC__A, 0x0001),
354  WR16(FE_FS_REG_COMM_EXEC__A, 0x0001),
355  WR16(FE_AD_REG_COMM_EXEC__A, 0x0001),
356  WR16(FE_AG_REG_COMM_EXEC__A, 0x0001),
358 
360 };
361 
363  WR16(B_FE_AD_REG_PD__A, 0x0000),
364  WR16(B_FE_AD_REG_CLKNEG__A, 0x0000),
375 };
376 
377  /* with PGA */
378 /* WR16(B_FE_AG_REG_AG_PGA_MODE__A , 0x0000, 0x0000); */
379  /* without PGA */
380 /* WR16(B_FE_AG_REG_AG_PGA_MODE__A ,
381  B_FE_AG_REG_AG_PGA_MODE_PFN_PCN_AFY_REN, 0x0000);*/
382  /* WR16(B_FE_AG_REG_AG_AGC_SIO__A,(extAttr -> FeAgRegAgAgcSio), 0x0000 );*//*added HS 23-05-2005 */
383 /* WR16(B_FE_AG_REG_AG_PWD__A ,(extAttr -> FeAgRegAgPwd), 0x0000 );*/
384 
386  WR16(B_FE_COMM_EXEC__A, 0x0001),
387 
388  /* RF-AGC setup */
400 
405 };
406 
409  0x07, 0x00, /* CP_REG_BR_SPL_OFFSET__A */
410  0x0A, 0x00, /* CP_REG_BR_STR_DEL__A */
411 
413  0x00, 0x00, /* CP_REG_RT_ANG_INC0__A */
414  0x00, 0x00, /* CP_REG_RT_ANG_INC1__A */
415  0x03, 0x00, /* CP_REG_RT_DETECT_ENA__A */
416  0x03, 0x00, /* CP_REG_RT_DETECT_TRH__A */
417 
419  0x32, 0x00, /* CP_REG_AC_NEXP_OFFS__A */
420  0x62, 0x00, /* CP_REG_AC_AVER_POW__A */
421  0x82, 0x00, /* CP_REG_AC_MAX_POW__A */
422  0x26, 0x00, /* CP_REG_AC_WEIGHT_MAN__A */
423  0x0F, 0x00, /* CP_REG_AC_WEIGHT_EXP__A */
424 
426  0x02, 0x00, /* CP_REG_AC_AMP_MODE__A */
427  0x01, 0x00, /* CP_REG_AC_AMP_FIX__A */
428 
429  WR16(CP_REG_INTERVAL__A, 0x0005),
430  WR16(CP_REG_RT_EXP_MARG__A, 0x0004),
431  WR16(CP_REG_AC_ANG_MODE__A, 0x0003),
432 
433  WR16(CP_REG_COMM_EXEC__A, 0x0001),
435 };
436 
439  WR16(B_CP_COMM_EXEC__A, 0x0001),
441 };
442 
445  0x62, 0x00, /* CE_REG_AVG_POW__A */
446  0x78, 0x00, /* CE_REG_MAX_POW__A */
447  0x62, 0x00, /* CE_REG_ATT__A */
448  0x17, 0x00, /* CE_REG_NRED__A */
449 
451  0x07, 0x00, /* CE_REG_NE_ERR_SELECT__A */
452  0xEB, 0xFF, /* CE_REG_NE_TD_CAL__A */
453 
455  0x06, 0x00, /* CE_REG_NE_MIXAVG__A */
456  0x00, 0x00, /* CE_REG_NE_NUPD_OFS__A */
457 
459  0x00, 0x00, /* CE_REG_PE_NEXP_OFFS__A */
460  0x00, 0x00, /* CE_REG_PE_TIMESHIFT__A */
461 
463  0x00, 0x01, /* CE_REG_TP_A0_TAP_NEW__A */
464  0x01, 0x00, /* CE_REG_TP_A0_TAP_NEW_VALID__A */
465  0x0E, 0x00, /* CE_REG_TP_A0_MU_LMS_STEP__A */
466 
468  0x00, 0x00, /* CE_REG_TP_A1_TAP_NEW__A */
469  0x01, 0x00, /* CE_REG_TP_A1_TAP_NEW_VALID__A */
470  0x0A, 0x00, /* CE_REG_TP_A1_MU_LMS_STEP__A */
471 
473  0x12, 0x00, /* CE_REG_FI_SHT_INCR__A */
474  0x0C, 0x00, /* CE_REG_FI_EXP_NORM__A */
475 
477  0x00, 0x00, /* CE_REG_IR_INPUTSEL__A */
478  0x00, 0x00, /* CE_REG_IR_STARTPOS__A */
479  0xFF, 0x00, /* CE_REG_IR_NEXP_THRES__A */
480 
481  WR16(CE_REG_TI_NEXP_OFFS__A, 0x0000),
482 
484 };
485 
488  WR16(B_CE_REG_FR_PM_SET__A, 0x000D),
489 
491 };
492 
495  0x1E, 0x00, /* EQ_REG_OT_QNT_THRES0__A */
496  0x1F, 0x00, /* EQ_REG_OT_QNT_THRES1__A */
497  0x06, 0x00, /* EQ_REG_OT_CSI_STEP__A */
498  0x02, 0x00, /* EQ_REG_OT_CSI_OFFSET__A */
499 
501  WR16(EQ_REG_IS_CLIP_EXP__A, 0x001F),
502  WR16(EQ_REG_SN_OFFSET__A, (u16) (-7)),
503  WR16(EQ_REG_RC_SEL_CAR__A, 0x0002),
504  WR16(EQ_REG_COMM_EXEC__A, 0x0001),
506 };
507 
509  WR16(B_EQ_REG_COMM_EXEC__A, 0x0001),
511 };
512 
514  /* Reset packet sync bytes in EC_VD ram */
515  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (0 * 17), 0x0000),
516  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (1 * 17), 0x0000),
517  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (2 * 17), 0x0000),
518  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (3 * 17), 0x0000),
519  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (4 * 17), 0x0000),
520  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (5 * 17), 0x0000),
521  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (6 * 17), 0x0000),
522  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (7 * 17), 0x0000),
523  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (8 * 17), 0x0000),
524  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (9 * 17), 0x0000),
525  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (10 * 17), 0x0000),
526 
527  /* Reset packet sync bytes in EC_RS ram */
528  WR16(EC_RS_EC_RAM__A, 0x0000),
529  WR16(EC_RS_EC_RAM__A + 204, 0x0000),
531 };
532 
535  0x1F, 0x00, /* EC_SB_REG_CSI_HI__A */
536  0x1E, 0x00, /* EC_SB_REG_CSI_LO__A */
537  0x01, 0x00, /* EC_SB_REG_SMB_TGL__A */
538  0x7F, 0x00, /* EC_SB_REG_SNR_HI__A */
539  0x7F, 0x00, /* EC_SB_REG_SNR_MID__A */
540  0x7F, 0x00, /* EC_SB_REG_SNR_LO__A */
541 
543  0x00, 0x10, /* EC_RS_REG_REQ_PCK_CNT__A */
544  DATA16(EC_RS_REG_VAL_PCK), /* EC_RS_REG_VAL__A */
545 
547  0x03, 0x00, /* EC_OC_REG_TMD_TOP_MODE__A */
548  0xF4, 0x01, /* EC_OC_REG_TMD_TOP_CNT__A */
549  0xC0, 0x03, /* EC_OC_REG_TMD_HIL_MAR__A */
550  0x40, 0x00, /* EC_OC_REG_TMD_LOL_MAR__A */
551  0x03, 0x00, /* EC_OC_REG_TMD_CUR_CNT__A */
552 
554  0x06, 0x00, /* EC_OC_REG_AVR_ASH_CNT__A */
555  0x02, 0x00, /* EC_OC_REG_AVR_BSH_CNT__A */
556 
558  0x07, 0x00, /* EC_OC_REG_RCN_MODE__A */
559  0x00, 0x00, /* EC_OC_REG_RCN_CRA_LOP__A */
560  0xc0, 0x00, /* EC_OC_REG_RCN_CRA_HIP__A */
561  0x00, 0x10, /* EC_OC_REG_RCN_CST_LOP__A */
562  0x00, 0x00, /* EC_OC_REG_RCN_CST_HIP__A */
563  0xFF, 0x01, /* EC_OC_REG_RCN_SET_LVL__A */
564  0x0D, 0x00, /* EC_OC_REG_RCN_GAI_LVL__A */
565 
567  0x00, 0x00, /* EC_OC_REG_RCN_CLP_LOP__A */
568  0xC0, 0x00, /* EC_OC_REG_RCN_CLP_HIP__A */
569 
570  WR16(EC_SB_REG_CSI_OFS__A, 0x0001),
571  WR16(EC_VD_REG_FORCE__A, 0x0002),
573  WR16(EC_VD_REG_RLK_ENA__A, 0x0001),
574  WR16(EC_OD_REG_SYNC__A, 0x0664),
575  WR16(EC_OC_REG_OC_MON_SIO__A, 0x0000),
577  /* Output zero on monitorbus pads, power saving */
593 
594 /* CHK_ERROR(ResetECRAM(demod)); */
595  /* Reset packet sync bytes in EC_VD ram */
596  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (0 * 17), 0x0000),
597  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (1 * 17), 0x0000),
598  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (2 * 17), 0x0000),
599  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (3 * 17), 0x0000),
600  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (4 * 17), 0x0000),
601  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (5 * 17), 0x0000),
602  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (6 * 17), 0x0000),
603  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (7 * 17), 0x0000),
604  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (8 * 17), 0x0000),
605  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (9 * 17), 0x0000),
606  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (10 * 17), 0x0000),
607 
608  /* Reset packet sync bytes in EC_RS ram */
609  WR16(EC_RS_EC_RAM__A, 0x0000),
610  WR16(EC_RS_EC_RAM__A + 204, 0x0000),
611 
612  WR16(EC_SB_REG_COMM_EXEC__A, 0x0001),
613  WR16(EC_VD_REG_COMM_EXEC__A, 0x0001),
614  WR16(EC_OD_REG_COMM_EXEC__A, 0x0001),
615  WR16(EC_RS_REG_COMM_EXEC__A, 0x0001),
617 };
618 
620  WR16(B_EC_SB_REG_CSI_OFS0__A, 0x0001),
621  WR16(B_EC_SB_REG_CSI_OFS1__A, 0x0001),
622  WR16(B_EC_SB_REG_CSI_OFS2__A, 0x0001),
623  WR16(B_EC_SB_REG_CSI_LO__A, 0x000c),
624  WR16(B_EC_SB_REG_CSI_HI__A, 0x0018),
625  WR16(B_EC_SB_REG_SNR_HI__A, 0x007f),
626  WR16(B_EC_SB_REG_SNR_MID__A, 0x007f),
627  WR16(B_EC_SB_REG_SNR_LO__A, 0x007f),
628 
630  WR16(B_EC_OC_REG_DTO_PER__A, 0x0006),
631  WR16(B_EC_OC_REG_DTO_BUR__A, 0x0001),
635 
636  /* Needed because shadow registers do not have correct default value */
645 
646  WR16(B_EC_OD_REG_SYNC__A, 0x0664),
648 
649 /* CHK_ERROR(ResetECRAM(demod)); */
650  /* Reset packet sync bytes in EC_VD ram */
651  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (0 * 17), 0x0000),
652  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (1 * 17), 0x0000),
653  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (2 * 17), 0x0000),
654  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (3 * 17), 0x0000),
655  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (4 * 17), 0x0000),
656  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (5 * 17), 0x0000),
657  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (6 * 17), 0x0000),
658  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (7 * 17), 0x0000),
659  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (8 * 17), 0x0000),
660  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (9 * 17), 0x0000),
661  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (10 * 17), 0x0000),
662 
663  /* Reset packet sync bytes in EC_RS ram */
664  WR16(EC_RS_EC_RAM__A, 0x0000),
665  WR16(EC_RS_EC_RAM__A + 204, 0x0000),
666 
672 };
673 
675 
676  WR16(EC_OC_REG_COMM_EXEC__A, 0x0000),
677  WR16(EC_OD_REG_COMM_EXEC__A, 0x0000),
678 
680  0x03, 0x00, /* EC_OC_REG_TMD_TOP_MODE__A */
681  0xF4, 0x01, /* EC_OC_REG_TMD_TOP_CNT__A */
682  0xC0, 0x03, /* EC_OC_REG_TMD_HIL_MAR__A */
683  0x40, 0x00, /* EC_OC_REG_TMD_LOL_MAR__A */
684  0x03, 0x00, /* EC_OC_REG_TMD_CUR_CNT__A */
685 
687  0x06, 0x00, /* EC_OC_REG_AVR_ASH_CNT__A */
688  0x02, 0x00, /* EC_OC_REG_AVR_BSH_CNT__A */
689 
691  0x07, 0x00, /* EC_OC_REG_RCN_MODE__A */
692  0x00, 0x00, /* EC_OC_REG_RCN_CRA_LOP__A */
693  0xc0, 0x00, /* EC_OC_REG_RCN_CRA_HIP__A */
694  0x00, 0x10, /* EC_OC_REG_RCN_CST_LOP__A */
695  0x00, 0x00, /* EC_OC_REG_RCN_CST_HIP__A */
696  0xFF, 0x01, /* EC_OC_REG_RCN_SET_LVL__A */
697  0x0D, 0x00, /* EC_OC_REG_RCN_GAI_LVL__A */
698 
700  0x00, 0x00, /* EC_OC_REG_RCN_CLP_LOP__A */
701  0xC0, 0x00, /* EC_OC_REG_RCN_CLP_HIP__A */
702 
703  WR16(EC_OD_REG_SYNC__A, 0x0664),
704  WR16(EC_OC_REG_OC_MON_SIO__A, 0x0000),
706  /* Output zero on monitorbus pads, power saving */
722 
723 /* CHK_ERROR(ResetECRAM(demod)); */
724  /* Reset packet sync bytes in EC_VD ram */
725  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (0 * 17), 0x0000),
726  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (1 * 17), 0x0000),
727  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (2 * 17), 0x0000),
728  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (3 * 17), 0x0000),
729  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (4 * 17), 0x0000),
730  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (5 * 17), 0x0000),
731  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (6 * 17), 0x0000),
732  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (7 * 17), 0x0000),
733  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (8 * 17), 0x0000),
734  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (9 * 17), 0x0000),
735  WR16(EC_OD_DEINT_RAM__A + 0x3b7 + (10 * 17), 0x0000),
736 
737  /* Reset packet sync bytes in EC_RS ram */
738  WR16(EC_RS_EC_RAM__A, 0x0000),
739  WR16(EC_RS_EC_RAM__A + 204, 0x0000),
740 
741  WR16(EC_OD_REG_COMM_EXEC__A, 0x0001),
743 };
744 
746  WR16(SC_COMM_EXEC__A, 0),
748 
749 #ifdef COMPILE_FOR_QT
751 #endif
752 
753  /* SC is not started, this is done in SetChannels() */
755 };
756 
757 /* Diversity settings */
758 
760  /* Start demod ********* RF in , diversity out **************************** */
763 
772 
779 
785 
786  WR16(B_CC_REG_DIVERSITY__A, 0x0001),
790 
791  /* 0x2a ), *//* CE to PASS mux */
792 
794 };
795 
797  /* End demod *********** combining RF in and diversity in, MPEG TS out **** */
798  /* disable near/far; switch on timing slave mode */
804 /* MV from CtrlDiversity */
805  ),
806 #ifdef DRXDDIV_SRMM_SLAVING
809 #else
812 #endif
813 
820 
827 
833 
834  WR16(B_CC_REG_DIVERSITY__A, 0x0001),
836 };
837 
853 
866 
872 
873  WR16(B_CC_REG_DIVERSITY__A, 0x0000),
874  WR16(B_EQ_REG_RC_SEL_CAR__A, B_EQ_REG_RC_SEL_CAR_INIT), /* combining disabled */
875 
877 };
878 
880  /* Start demod, RF in and diversity out, no combining */
884  WR16(B_EQ_REG_COMM_MB__A, 0x12), /* EQ to MB out */
887 
889 
891 };
892 
894  /* End demod, combining RF in and diversity in, MPEG TS out */
895  WR16(B_FE_CF_REG_IMP_VAL__A, 0x0), /* disable impulse noise cruncher */
896  WR16(B_FE_AD_REG_INVEXT__A, 0x0), /* clock inversion (for sohard board) */
897  WR16(B_CP_REG_BR_STR_DEL__A, 10), /* apperently no mb delay matching is best */
898 
899  WR16(B_EQ_REG_RC_SEL_CAR__A, B_EQ_REG_RC_SEL_CAR_DIV_ON | /* org = 0x81 combining enabled */
902 
904 };
905 
916 };
917 
918 u8 DRXD_DiversityDelay6MHZ[] = /* also used ok for 7 MHz */
919 {
929 };