Merge git://git.kernel.org/pub/scm/linux/kernel/git/pkl/squashfs-linus
[pandora-kernel.git] / drivers / staging / tm6000 / tm6000-stds.c
1 /*
2  *  tm6000-stds.c - driver for TM5600/TM6000/TM6010 USB video capture devices
3  *
4  *  Copyright (C) 2007 Mauro Carvalho Chehab <mchehab@redhat.com>
5  *
6  *  This program is free software; you can redistribute it and/or modify
7  *  it under the terms of the GNU General Public License as published by
8  *  the Free Software Foundation version 2
9  *
10  *  This program is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU General Public License for more details.
14  *
15  *  You should have received a copy of the GNU General Public License
16  *  along with this program; if not, write to the Free Software
17  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18  */
19
20 #include <linux/module.h>
21 #include <linux/kernel.h>
22 #include "tm6000.h"
23 #include "tm6000-regs.h"
24
25 struct tm6000_reg_settings {
26         unsigned char req;
27         unsigned char reg;
28         unsigned char value;
29 };
30
31 enum tm6000_audio_std {
32         BG_NICAM,
33         BTSC,
34         BG_A2,
35         DK_NICAM,
36         EIAJ,
37         FM_RADIO,
38         I_NICAM,
39         KOREA_A2,
40         L_NICAM,
41 };
42
43 struct tm6000_std_tv_settings {
44         v4l2_std_id id;
45         enum tm6000_audio_std audio_default_std;
46
47         struct tm6000_reg_settings sif[12];
48         struct tm6000_reg_settings nosif[12];
49         struct tm6000_reg_settings common[26];
50 };
51
52 struct tm6000_std_settings {
53         v4l2_std_id id;
54         enum tm6000_audio_std audio_default_std;
55         struct tm6000_reg_settings common[37];
56 };
57
58 static struct tm6000_std_tv_settings tv_stds[] = {
59         {
60                 .id = V4L2_STD_PAL_M,
61                 .audio_default_std = BTSC,
62                 .sif = {
63                         {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf2},
64                         {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8},
65                         {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
66                         {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x08},
67                         {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
68                         {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
69                         {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
70                         {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
71                         {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x62},
72                         {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfe},
73                         {TM6010_REQ07_RFE_POWER_DOWN, 0xcb},
74                         {0, 0, 0},
75                 },
76                 .nosif = {
77                         {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
78                         {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8},
79                         {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
80                         {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x0f},
81                         {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
82                         {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
83                         {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
84                         {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
85                         {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x60},
86                         {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
87                         {TM6010_REQ07_RFE_POWER_DOWN, 0x8b},
88                         {0, 0, 0},
89                 },
90                 .common = {
91                         {TM6010_REQ07_R3F_RESET, 0x01},
92                         {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x04},
93                         {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
94                         {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
95                         {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x00},
96                         {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
97                         {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e},
98                         {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x83},
99                         {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x0a},
100                         {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xe0},
101                         {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
102                         {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
103                         {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
104                         {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
105                         {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x88},
106                         {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x20},
107                         {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0x61},
108                         {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c},
109                         {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
110                         {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52},
111                         {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
112
113                         {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc},
114                         {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
115
116                         {TM6010_REQ07_R3F_RESET, 0x00},
117
118                         {0, 0, 0},
119                 },
120         }, {
121                 .id = V4L2_STD_PAL_Nc,
122                 .audio_default_std = BTSC,
123                 .sif = {
124                         {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf2},
125                         {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8},
126                         {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
127                         {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x08},
128                         {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
129                         {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
130                         {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
131                         {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
132                         {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x62},
133                         {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfe},
134                         {TM6010_REQ07_RFE_POWER_DOWN, 0xcb},
135                         {0, 0, 0},
136                 },
137                 .nosif = {
138                         {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
139                         {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8},
140                         {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
141                         {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x0f},
142                         {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
143                         {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
144                         {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
145                         {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
146                         {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x60},
147                         {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
148                         {TM6010_REQ07_RFE_POWER_DOWN, 0x8b},
149                         {0, 0, 0},
150                 },
151                 .common = {
152                         {TM6010_REQ07_R3F_RESET, 0x01},
153                         {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x36},
154                         {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
155                         {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
156                         {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x02},
157                         {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
158                         {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e},
159                         {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x91},
160                         {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x1f},
161                         {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0x0c},
162                         {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
163                         {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
164                         {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
165                         {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
166                         {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c},
167                         {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2c},
168                         {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
169                         {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c},
170                         {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
171                         {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52},
172                         {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
173
174                         {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc},
175                         {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
176
177                         {TM6010_REQ07_R3F_RESET, 0x00},
178
179                         {0, 0, 0},
180                 },
181         }, {
182                 .id = V4L2_STD_PAL,
183                 .audio_default_std = BG_A2,
184                 .sif = {
185                         {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf2},
186                         {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8},
187                         {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
188                         {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x08},
189                         {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
190                         {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
191                         {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
192                         {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
193                         {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x62},
194                         {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfe},
195                         {TM6010_REQ07_RFE_POWER_DOWN, 0xcb},
196                         {0, 0, 0}
197                 },
198                 .nosif = {
199                         {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
200                         {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8},
201                         {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
202                         {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x0f},
203                         {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
204                         {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
205                         {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
206                         {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
207                         {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x60},
208                         {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
209                         {TM6010_REQ07_RFE_POWER_DOWN, 0x8b},
210                         {0, 0, 0},
211                 },
212                 .common = {
213                         {TM6010_REQ07_R3F_RESET, 0x01},
214                         {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x32},
215                         {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
216                         {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
217                         {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x02},
218                         {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
219                         {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x25},
220                         {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0xd5},
221                         {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x63},
222                         {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0x50},
223                         {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
224                         {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
225                         {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
226                         {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
227                         {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c},
228                         {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2c},
229                         {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
230                         {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c},
231                         {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
232                         {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52},
233                         {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
234
235                         {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc},
236                         {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
237
238                         {TM6010_REQ07_R3F_RESET, 0x00},
239
240                         {0, 0, 0},
241                 },
242         }, {
243                 .id = V4L2_STD_SECAM_B | V4L2_STD_SECAM_G,
244                 .audio_default_std = BG_NICAM,
245                 .sif = {
246                         {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf2},
247                         {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8},
248                         {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
249                         {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x08},
250                         {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
251                         {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
252                         {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
253                         {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
254                         {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x62},
255                         {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfe},
256                         {TM6010_REQ07_RFE_POWER_DOWN, 0xcb},
257                         {0, 0, 0},
258                 },
259                 .nosif = {
260                         {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
261                         {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8},
262                         {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
263                         {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x0f},
264                         {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
265                         {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
266                         {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
267                         {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
268                         {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x60},
269                         {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
270                         {TM6010_REQ07_RFE_POWER_DOWN, 0x8b},
271                         {0, 0, 0},
272                 },
273                 .common = {
274                         {TM6010_REQ07_R3F_RESET, 0x01},
275                         {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x38},
276                         {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
277                         {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
278                         {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x02},
279                         {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
280                         {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x24},
281                         {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x92},
282                         {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0xe8},
283                         {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xed},
284                         {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
285                         {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
286                         {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
287                         {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
288                         {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c},
289                         {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2c},
290                         {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
291                         {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x2c},
292                         {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x18},
293                         {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x42},
294                         {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0xFF},
295
296                         {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
297
298                         {TM6010_REQ07_R3F_RESET, 0x00},
299                         {0, 0, 0},
300                 },
301         }, {
302                 .id = V4L2_STD_SECAM_DK,
303                 .audio_default_std = DK_NICAM,
304                 .sif = {
305                         {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf2},
306                         {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8},
307                         {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
308                         {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x08},
309                         {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
310                         {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
311                         {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
312                         {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
313                         {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x62},
314                         {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfe},
315                         {TM6010_REQ07_RFE_POWER_DOWN, 0xcb},
316                         {0, 0, 0},
317                 },
318                 .nosif = {
319                         {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
320                         {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8},
321                         {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
322                         {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x0f},
323                         {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
324                         {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
325                         {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
326                         {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
327                         {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x60},
328                         {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
329                         {TM6010_REQ07_RFE_POWER_DOWN, 0x8b},
330                         {0, 0, 0},
331                 },
332                 .common = {
333                         {TM6010_REQ07_R3F_RESET, 0x01},
334                         {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x38},
335                         {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
336                         {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
337                         {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x02},
338                         {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
339                         {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x24},
340                         {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x92},
341                         {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0xe8},
342                         {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xed},
343                         {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
344                         {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
345                         {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
346                         {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
347                         {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c},
348                         {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2c},
349                         {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
350                         {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x2c},
351                         {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x18},
352                         {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x42},
353                         {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0xFF},
354
355                         {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
356
357                         {TM6010_REQ07_R3F_RESET, 0x00},
358                         {0, 0, 0},
359                 },
360         }, {
361                 .id = V4L2_STD_NTSC,
362                 .audio_default_std = BTSC,
363                 .sif = {
364                         {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf2},
365                         {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8},
366                         {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
367                         {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x08},
368                         {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
369                         {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
370                         {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
371                         {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
372                         {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x62},
373                         {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfe},
374                         {TM6010_REQ07_RFE_POWER_DOWN, 0xcb},
375                         {0, 0, 0},
376                 },
377                 .nosif = {
378                         {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
379                         {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8},
380                         {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
381                         {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x0f},
382                         {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
383                         {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
384                         {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
385                         {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
386                         {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x60},
387                         {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
388                         {TM6010_REQ07_RFE_POWER_DOWN, 0x8b},
389                         {0, 0, 0},
390                 },
391                 .common = {
392                         {TM6010_REQ07_R3F_RESET, 0x01},
393                         {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x00},
394                         {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0f},
395                         {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
396                         {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x00},
397                         {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
398                         {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e},
399                         {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x8b},
400                         {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0xa2},
401                         {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xe9},
402                         {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
403                         {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
404                         {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
405                         {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
406                         {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x88},
407                         {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x22},
408                         {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0x61},
409                         {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x1c},
410                         {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
411                         {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x42},
412                         {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
413
414                         {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdd},
415                         {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
416
417                         {TM6010_REQ07_R3F_RESET, 0x00},
418
419                         {0, 0, 0},
420                 },
421         },
422 };
423
424 static struct tm6000_std_settings composite_stds[] = {
425         {
426                 .id = V4L2_STD_PAL_M,
427                 .audio_default_std = BTSC,
428                 .common = {
429                         {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
430                         {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf4},
431                         {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
432                         {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x0f},
433                         {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
434                         {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
435                         {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
436                         {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
437                         {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
438                         {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
439                         {TM6010_REQ07_RFE_POWER_DOWN, 0x8b},
440
441                         {TM6010_REQ07_R3F_RESET, 0x01},
442                         {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x04},
443                         {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
444                         {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
445                         {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x00},
446                         {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
447                         {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e},
448                         {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x83},
449                         {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x0a},
450                         {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xe0},
451                         {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
452                         {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
453                         {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
454                         {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
455                         {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x88},
456                         {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x20},
457                         {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0x61},
458                         {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c},
459                         {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
460                         {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52},
461                         {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
462
463                         {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc},
464                         {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
465                         {TM6010_REQ07_R3F_RESET, 0x00},
466                         {0, 0, 0},
467                 },
468          }, {
469                 .id = V4L2_STD_PAL_Nc,
470                 .audio_default_std = BTSC,
471                 .common = {
472                         {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
473                         {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf4},
474                         {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
475                         {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x0f},
476                         {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
477                         {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
478                         {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
479                         {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
480                         {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
481                         {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
482                         {TM6010_REQ07_RFE_POWER_DOWN, 0x8b},
483
484                         {TM6010_REQ07_R3F_RESET, 0x01},
485                         {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x36},
486                         {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
487                         {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
488                         {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x02},
489                         {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
490                         {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e},
491                         {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x91},
492                         {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x1f},
493                         {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0x0c},
494                         {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
495                         {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
496                         {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
497                         {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
498                         {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c},
499                         {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2c},
500                         {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
501                         {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c},
502                         {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
503                         {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52},
504                         {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
505
506                         {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc},
507                         {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
508                         {TM6010_REQ07_R3F_RESET, 0x00},
509                         {0, 0, 0},
510                 },
511         }, {
512                 .id = V4L2_STD_PAL,
513                 .audio_default_std = BG_A2,
514                 .common = {
515                         {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
516                         {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf4},
517                         {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
518                         {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x0f},
519                         {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
520                         {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
521                         {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
522                         {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
523                         {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
524                         {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
525                         {TM6010_REQ07_RFE_POWER_DOWN, 0x8b},
526
527                         {TM6010_REQ07_R3F_RESET, 0x01},
528                         {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x32},
529                         {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
530                         {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
531                         {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x02},
532                         {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
533                         {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x25},
534                         {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0xd5},
535                         {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x63},
536                         {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0x50},
537                         {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
538                         {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
539                         {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
540                         {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
541                         {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c},
542                         {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2c},
543                         {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
544                         {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c},
545                         {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
546                         {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52},
547                         {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
548
549                         {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc},
550                         {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
551                         {TM6010_REQ07_R3F_RESET, 0x00},
552                         {0, 0, 0},
553                 },
554          }, {
555                 .id = V4L2_STD_SECAM,
556                 .audio_default_std = BG_NICAM,
557                 .common = {
558                         {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
559                         {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf4},
560                         {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
561                         {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x0f},
562                         {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
563                         {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
564                         {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
565                         {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
566                         {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
567                         {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
568                         {TM6010_REQ07_RFE_POWER_DOWN, 0x8b},
569
570                         {TM6010_REQ07_R3F_RESET, 0x01},
571                         {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x38},
572                         {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
573                         {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
574                         {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x02},
575                         {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
576                         {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x24},
577                         {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x92},
578                         {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0xe8},
579                         {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xed},
580                         {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
581                         {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
582                         {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
583                         {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
584                         {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c},
585                         {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2c},
586                         {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
587                         {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x2c},
588                         {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x18},
589                         {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x42},
590                         {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0xFF},
591
592                         {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
593                         {TM6010_REQ07_R3F_RESET, 0x00},
594                         {0, 0, 0},
595                 },
596         }, {
597                 .id = V4L2_STD_SECAM_DK,
598                 .audio_default_std = DK_NICAM,
599                 .common = {
600                         {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
601                         {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf4},
602                         {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
603                         {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x0f},
604                         {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
605                         {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
606                         {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
607                         {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
608                         {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
609                         {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
610                         {TM6010_REQ07_RFE_POWER_DOWN, 0x8b},
611
612                         {TM6010_REQ07_R3F_RESET, 0x01},
613                         {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x38},
614                         {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
615                         {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
616                         {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x02},
617                         {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
618                         {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x24},
619                         {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x92},
620                         {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0xe8},
621                         {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xed},
622                         {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
623                         {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
624                         {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
625                         {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
626                         {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c},
627                         {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2c},
628                         {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
629                         {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x2c},
630                         {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x18},
631                         {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x42},
632                         {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0xFF},
633
634                         {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
635                         {TM6010_REQ07_R3F_RESET, 0x00},
636                         {0, 0, 0},
637                 },
638         }, {
639                 .id = V4L2_STD_NTSC,
640                 .audio_default_std = BTSC,
641                 .common = {
642                         {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
643                         {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf4},
644                         {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
645                         {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x0f},
646                         {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
647                         {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
648                         {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
649                         {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
650                         {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
651                         {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
652                         {TM6010_REQ07_RFE_POWER_DOWN, 0x8b},
653
654                         {TM6010_REQ07_R3F_RESET, 0x01},
655                         {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x00},
656                         {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0f},
657                         {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
658                         {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x00},
659                         {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
660                         {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e},
661                         {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x8b},
662                         {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0xa2},
663                         {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xe9},
664                         {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
665                         {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
666                         {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
667                         {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
668                         {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x88},
669                         {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x22},
670                         {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0x61},
671                         {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x1c},
672                         {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
673                         {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x42},
674                         {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
675
676                         {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdd},
677                         {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
678                         {TM6010_REQ07_R3F_RESET, 0x00},
679                         {0, 0, 0},
680                 },
681         },
682 };
683
684 static struct tm6000_std_settings svideo_stds[] = {
685         {
686                 .id = V4L2_STD_PAL_M,
687                 .audio_default_std = BTSC,
688                 .common = {
689                         {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
690                         {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xfc},
691                         {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf8},
692                         {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x00},
693                         {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf2},
694                         {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xf0},
695                         {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
696                         {TM6010_REQ08_RED_GAIN_SEL, 0xe0},
697                         {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
698                         {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
699                         {TM6010_REQ07_RFE_POWER_DOWN, 0x8a},
700
701                         {TM6010_REQ07_R3F_RESET, 0x01},
702                         {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x05},
703                         {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
704                         {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
705                         {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x04},
706                         {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
707                         {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e},
708                         {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x83},
709                         {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x0a},
710                         {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xe0},
711                         {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
712                         {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
713                         {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
714                         {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
715                         {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x88},
716                         {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x22},
717                         {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0x61},
718                         {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c},
719                         {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
720                         {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52},
721                         {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
722
723                         {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc},
724                         {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
725                         {TM6010_REQ07_R3F_RESET, 0x00},
726                         {0, 0, 0},
727                 },
728         }, {
729                 .id = V4L2_STD_PAL_Nc,
730                 .audio_default_std = BTSC,
731                 .common = {
732                         {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
733                         {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xfc},
734                         {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf8},
735                         {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x00},
736                         {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf2},
737                         {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xf0},
738                         {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
739                         {TM6010_REQ08_RED_GAIN_SEL, 0xe0},
740                         {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
741                         {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
742                         {TM6010_REQ07_RFE_POWER_DOWN, 0x8a},
743
744                         {TM6010_REQ07_R3F_RESET, 0x01},
745                         {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x37},
746                         {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
747                         {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
748                         {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x04},
749                         {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
750                         {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e},
751                         {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x91},
752                         {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x1f},
753                         {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0x0c},
754                         {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
755                         {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
756                         {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
757                         {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
758                         {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x88},
759                         {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x22},
760                         {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
761                         {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c},
762                         {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
763                         {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52},
764                         {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
765
766                         {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc},
767                         {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
768                         {TM6010_REQ07_R3F_RESET, 0x00},
769                         {0, 0, 0},
770                 },
771         }, {
772                 .id = V4L2_STD_PAL,
773                 .audio_default_std = BG_A2,
774                 .common = {
775                         {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
776                         {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xfc},
777                         {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf8},
778                         {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x00},
779                         {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf2},
780                         {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xf0},
781                         {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
782                         {TM6010_REQ08_RED_GAIN_SEL, 0xe0},
783                         {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
784                         {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
785                         {TM6010_REQ07_RFE_POWER_DOWN, 0x8a},
786
787                         {TM6010_REQ07_R3F_RESET, 0x01},
788                         {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x33},
789                         {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
790                         {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
791                         {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x04},
792                         {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x30},
793                         {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x25},
794                         {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0xd5},
795                         {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x63},
796                         {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0x50},
797                         {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
798                         {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
799                         {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
800                         {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
801                         {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c},
802                         {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2a},
803                         {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
804                         {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c},
805                         {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
806                         {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52},
807                         {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
808
809                         {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc},
810                         {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
811                         {TM6010_REQ07_R3F_RESET, 0x00},
812                         {0, 0, 0},
813                 },
814          }, {
815                 .id = V4L2_STD_SECAM,
816                 .audio_default_std = BG_NICAM,
817                 .common = {
818                         {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
819                         {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xfc},
820                         {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf8},
821                         {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x00},
822                         {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf2},
823                         {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xf0},
824                         {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
825                         {TM6010_REQ08_RED_GAIN_SEL, 0xe0},
826                         {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
827                         {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
828                         {TM6010_REQ07_RFE_POWER_DOWN, 0x8a},
829
830                         {TM6010_REQ07_R3F_RESET, 0x01},
831                         {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x39},
832                         {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
833                         {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
834                         {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x03},
835                         {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
836                         {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x24},
837                         {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x92},
838                         {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0xe8},
839                         {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xed},
840                         {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
841                         {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
842                         {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
843                         {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
844                         {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c},
845                         {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2a},
846                         {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
847                         {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x2c},
848                         {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x18},
849                         {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x42},
850                         {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0xFF},
851
852                         {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
853                         {TM6010_REQ07_R3F_RESET, 0x00},
854                         {0, 0, 0},
855                 },
856         }, {
857                 .id = V4L2_STD_SECAM_DK,
858                 .audio_default_std = DK_NICAM,
859                 .common = {
860                         {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
861                         {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xfc},
862                         {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf8},
863                         {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x00},
864                         {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf2},
865                         {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xf0},
866                         {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
867                         {TM6010_REQ08_RED_GAIN_SEL, 0xe0},
868                         {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
869                         {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
870                         {TM6010_REQ07_RFE_POWER_DOWN, 0x8a},
871
872                         {TM6010_REQ07_R3F_RESET, 0x01},
873                         {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x39},
874                         {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
875                         {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
876                         {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x03},
877                         {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
878                         {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x24},
879                         {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x92},
880                         {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0xe8},
881                         {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xed},
882                         {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
883                         {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
884                         {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
885                         {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
886                         {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c},
887                         {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2a},
888                         {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
889                         {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x2c},
890                         {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x18},
891                         {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x42},
892                         {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0xFF},
893
894                         {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
895                         {TM6010_REQ07_R3F_RESET, 0x00},
896                         {0, 0, 0},
897                 },
898         }, {
899                 .id = V4L2_STD_NTSC,
900                 .audio_default_std = BTSC,
901                 .common = {
902                         {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
903                         {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xfc},
904                         {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf8},
905                         {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x00},
906                         {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf2},
907                         {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xf0},
908                         {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
909                         {TM6010_REQ08_RED_GAIN_SEL, 0xe0},
910                         {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
911                         {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
912                         {TM6010_REQ07_RFE_POWER_DOWN, 0x8a},
913
914                         {TM6010_REQ07_R3F_RESET, 0x01},
915                         {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x01},
916                         {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0f},
917                         {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
918                         {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x03},
919                         {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x30},
920                         {TM6010_REQ07_R17_HLOOP_MAXSTATE, 0x8b},
921                         {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e},
922                         {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x8b},
923                         {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0xa2},
924                         {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xe9},
925                         {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
926                         {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
927                         {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
928                         {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
929                         {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x88},
930                         {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x22},
931                         {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0x61},
932                         {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x1c},
933                         {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
934                         {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x42},
935                         {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
936
937                         {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdd},
938                         {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
939                         {TM6010_REQ07_R3F_RESET, 0x00},
940                         {0, 0, 0},
941                 },
942         },
943 };
944
945
946 static int tm6000_set_audio_std(struct tm6000_core *dev,
947                                 enum tm6000_audio_std std)
948 {
949         uint8_t areg_02 = 0x04; /* GC1 Fixed gain 0dB */
950         uint8_t areg_05 = 0x09; /* Auto 4.5 = M Japan, Auto 6.5 = DK */
951         uint8_t areg_06 = 0x02; /* Auto de-emphasis, mannual channel mode */
952         uint8_t mono_flag = 0;  /* No mono */
953         uint8_t nicam_flag = 0; /* No NICAM */
954
955         switch (std) {
956 #if 0
957         case DK_MONO:
958                 mono_flag = 1;
959                 break;
960         case DK_A2_1:
961                 break;
962         case DK_A2_3:
963                 areg_05 = 0x0b;
964                 break;
965         case BG_MONO:
966                 mono_flag = 1;
967                 areg_05 = 0x05;
968                 break;
969 #endif
970         case BG_NICAM:
971                 areg_05 = 0x07;
972                 nicam_flag = 1;
973                 break;
974         case BTSC:
975                 areg_05 = 0x02;
976                 break;
977         case BG_A2:
978                 areg_05 = 0x05;
979                 break;
980         case DK_NICAM:
981                 areg_05 = 0x06;
982                 nicam_flag = 1;
983                 break;
984         case EIAJ:
985                 areg_05 = 0x02;
986                 break;
987         case FM_RADIO:
988                 tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x00);
989                 tm6000_set_reg(dev, TM6010_REQ08_R02_A_FIX_GAIN_CTRL, 0x04);
990                 tm6000_set_reg(dev, TM6010_REQ08_R03_A_AUTO_GAIN_CTRL, 0x00);
991                 tm6000_set_reg(dev, TM6010_REQ08_R05_A_STANDARD_MOD, 0x0c);
992                 tm6000_set_reg(dev, TM6010_REQ08_R06_A_SOUND_MOD, 0x00);
993                 tm6000_set_reg(dev, TM6010_REQ08_R09_A_MAIN_VOL, 0x18);
994                 tm6000_set_reg(dev, TM6010_REQ08_R0A_A_I2S_MOD, 0x91);
995                 tm6000_set_reg(dev, TM6010_REQ08_R16_A_AGC_GAIN_MAX, 0xfe);
996                 tm6000_set_reg(dev, TM6010_REQ08_R17_A_AGC_GAIN_MIN, 0x01);
997                 tm6000_set_reg(dev, TM6010_REQ08_R1E_A_GAIN_DEEMPH_OUT, 0x13);
998                 tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x80);
999                 return 0;
1000                 break;
1001         case I_NICAM:
1002                 areg_05 = 0x08;
1003                 nicam_flag = 1;
1004                 break;
1005         case KOREA_A2:
1006                 areg_05 = 0x04;
1007                 break;
1008         case L_NICAM:
1009                 areg_02 = 0x02; /* GC1 Fixed gain +12dB */
1010                 areg_05 = 0x0a;
1011                 nicam_flag = 1;
1012                 break;
1013         }
1014
1015 #if 0
1016         switch (tv_audio_mode) {
1017         case TV_MONO:
1018                 areg_06 = (nicam_flag) ? 0x03 : 0x00;
1019                 break;
1020         case TV_LANG_A:
1021                 areg_06 = 0x00;
1022                 break;
1023         case TV_LANG_B:
1024                 areg_06 = 0x01;
1025                 break;
1026         }
1027 #endif
1028
1029         if (mono_flag)
1030                 areg_06 = 0x00;
1031
1032         tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x00);
1033         tm6000_set_reg(dev, TM6010_REQ08_R02_A_FIX_GAIN_CTRL, areg_02);
1034         tm6000_set_reg(dev, TM6010_REQ08_R03_A_AUTO_GAIN_CTRL, 0x00);
1035         tm6000_set_reg(dev, TM6010_REQ08_R04_A_SIF_AMP_CTRL, 0xa0);
1036         tm6000_set_reg(dev, TM6010_REQ08_R05_A_STANDARD_MOD, areg_05);
1037         tm6000_set_reg(dev, TM6010_REQ08_R06_A_SOUND_MOD, areg_06);
1038         tm6000_set_reg(dev, TM6010_REQ08_R07_A_LEFT_VOL, 0x00);
1039         tm6000_set_reg(dev, TM6010_REQ08_R08_A_RIGHT_VOL, 0x00);
1040         tm6000_set_reg(dev, TM6010_REQ08_R09_A_MAIN_VOL, 0x08);
1041         tm6000_set_reg(dev, TM6010_REQ08_R0A_A_I2S_MOD, 0x91);
1042         tm6000_set_reg(dev, TM6010_REQ08_R0B_A_ASD_THRES1, 0x20);
1043         tm6000_set_reg(dev, TM6010_REQ08_R0C_A_ASD_THRES2, 0x12);
1044         tm6000_set_reg(dev, TM6010_REQ08_R0D_A_AMD_THRES, 0x20);
1045         tm6000_set_reg(dev, TM6010_REQ08_R0E_A_MONO_THRES1, 0xf0);
1046         tm6000_set_reg(dev, TM6010_REQ08_R0F_A_MONO_THRES2, 0x80);
1047         tm6000_set_reg(dev, TM6010_REQ08_R10_A_MUTE_THRES1, 0xc0);
1048         tm6000_set_reg(dev, TM6010_REQ08_R11_A_MUTE_THRES2, 0x80);
1049         tm6000_set_reg(dev, TM6010_REQ08_R12_A_AGC_U, 0x12);
1050         tm6000_set_reg(dev, TM6010_REQ08_R13_A_AGC_ERR_T, 0xfe);
1051         tm6000_set_reg(dev, TM6010_REQ08_R14_A_AGC_GAIN_INIT, 0x20);
1052         tm6000_set_reg(dev, TM6010_REQ08_R15_A_AGC_STEP_THR, 0x14);
1053         tm6000_set_reg(dev, TM6010_REQ08_R16_A_AGC_GAIN_MAX, 0xfe);
1054         tm6000_set_reg(dev, TM6010_REQ08_R17_A_AGC_GAIN_MIN, 0x01);
1055         tm6000_set_reg(dev, TM6010_REQ08_R18_A_TR_CTRL, 0xa0);
1056         tm6000_set_reg(dev, TM6010_REQ08_R19_A_FH_2FH_GAIN, 0x32);
1057         tm6000_set_reg(dev, TM6010_REQ08_R1A_A_NICAM_SER_MAX, 0x64);
1058         tm6000_set_reg(dev, TM6010_REQ08_R1B_A_NICAM_SER_MIN, 0x20);
1059         tm6000_set_reg(dev, REQ_08_SET_GET_AVREG_BIT, 0x1c, 0x00);
1060         tm6000_set_reg(dev, REQ_08_SET_GET_AVREG_BIT, 0x1d, 0x00);
1061         tm6000_set_reg(dev, TM6010_REQ08_R1E_A_GAIN_DEEMPH_OUT, 0x13);
1062         tm6000_set_reg(dev, TM6010_REQ08_R1F_A_TEST_INTF_SEL, 0x00);
1063         tm6000_set_reg(dev, TM6010_REQ08_R20_A_TEST_PIN_SEL, 0x00);
1064         tm6000_set_reg(dev, TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3);
1065         tm6000_set_reg(dev, TM6010_REQ08_R06_A_SOUND_MOD, 0x00);
1066         tm6000_set_reg(dev, TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc);
1067         tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x80);
1068
1069         return 0;
1070 }
1071
1072 void tm6000_get_std_res(struct tm6000_core *dev)
1073 {
1074         /* Currently, those are the only supported resoltions */
1075         if (dev->norm & V4L2_STD_525_60)
1076                 dev->height = 480;
1077         else
1078                 dev->height = 576;
1079
1080         dev->width = 720;
1081 }
1082
1083 static int tm6000_load_std(struct tm6000_core *dev,
1084                            struct tm6000_reg_settings *set, int max_size)
1085 {
1086         int i, rc;
1087
1088         /* Load board's initialization table */
1089         for (i = 0; max_size; i++) {
1090                 if (!set[i].req)
1091                         return 0;
1092
1093                 if ((dev->dev_type != TM6010) &&
1094                     (set[i].req == REQ_08_SET_GET_AVREG_BIT))
1095                                 continue;
1096
1097                 rc = tm6000_set_reg(dev, set[i].req, set[i].reg, set[i].value);
1098                 if (rc < 0) {
1099                         printk(KERN_ERR "Error %i while setting "
1100                                "req %d, reg %d to value %d\n",
1101                                rc, set[i].req, set[i].reg, set[i].value);
1102                         return rc;
1103                 }
1104         }
1105
1106         return 0;
1107 }
1108
1109 static int tm6000_set_tv(struct tm6000_core *dev, int pos)
1110 {
1111         int rc;
1112
1113         /* FIXME: This code is for tm6010 - not tested yet - doesn't work with
1114            tm5600
1115          */
1116
1117         /* FIXME: This is tuner-dependent */
1118         int nosif = 0;
1119
1120         if (nosif) {
1121                 rc = tm6000_load_std(dev, tv_stds[pos].nosif,
1122                                      sizeof(tv_stds[pos].nosif));
1123         } else {
1124                 rc = tm6000_load_std(dev, tv_stds[pos].sif,
1125                                      sizeof(tv_stds[pos].sif));
1126         }
1127         if (rc < 0)
1128                 return rc;
1129         rc = tm6000_load_std(dev, tv_stds[pos].common,
1130                              sizeof(tv_stds[pos].common));
1131
1132         tm6000_set_audio_std(dev, tv_stds[pos].audio_default_std);
1133
1134         return rc;
1135 }
1136
1137 int tm6000_set_standard(struct tm6000_core *dev, v4l2_std_id * norm)
1138 {
1139         int i, rc = 0;
1140
1141         dev->norm = *norm;
1142         tm6000_get_std_res(dev);
1143
1144         switch (dev->input) {
1145         case TM6000_INPUT_TV:
1146                 for (i = 0; i < ARRAY_SIZE(tv_stds); i++) {
1147                         if (*norm & tv_stds[i].id) {
1148                                 rc = tm6000_set_tv(dev, i);
1149                                 goto ret;
1150                         }
1151                 }
1152                 return -EINVAL;
1153         case TM6000_INPUT_SVIDEO:
1154                 for (i = 0; i < ARRAY_SIZE(svideo_stds); i++) {
1155                         if (*norm & svideo_stds[i].id) {
1156                                 rc = tm6000_load_std(dev, svideo_stds[i].common,
1157                                                      sizeof(svideo_stds[i].
1158                                                             common));
1159                                 tm6000_set_audio_std(dev, svideo_stds[i].audio_default_std);
1160
1161                                 goto ret;
1162                         }
1163                 }
1164                 return -EINVAL;
1165         case TM6000_INPUT_COMPOSITE:
1166                 for (i = 0; i < ARRAY_SIZE(composite_stds); i++) {
1167                         if (*norm & composite_stds[i].id) {
1168                                 rc = tm6000_load_std(dev,
1169                                                      composite_stds[i].common,
1170                                                      sizeof(composite_stds[i].
1171                                                             common));
1172                                 tm6000_set_audio_std(dev, composite_stds[i].audio_default_std);
1173                                 goto ret;
1174                         }
1175                 }
1176                 return -EINVAL;
1177         }
1178
1179 ret:
1180         if (rc < 0)
1181                 return rc;
1182
1183         msleep(40);
1184
1185
1186         return 0;
1187 }