Merge branch 'rmobile-latest' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal...
[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         if (dev->radio) {
956                 tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x00);
957                 tm6000_set_reg(dev, TM6010_REQ08_R02_A_FIX_GAIN_CTRL, 0x04);
958                 tm6000_set_reg(dev, TM6010_REQ08_R03_A_AUTO_GAIN_CTRL, 0x00);
959                 tm6000_set_reg(dev, TM6010_REQ08_R04_A_SIF_AMP_CTRL, 0x80);
960                 tm6000_set_reg(dev, TM6010_REQ08_R05_A_STANDARD_MOD, 0x0c);
961                 tm6000_set_reg(dev, TM6010_REQ08_R06_A_SOUND_MOD, 0x00);
962                 tm6000_set_reg(dev, TM6010_REQ08_R09_A_MAIN_VOL, 0x18);
963                 tm6000_set_reg(dev, TM6010_REQ08_R0C_A_ASD_THRES2, 0x0a);
964                 tm6000_set_reg(dev, TM6010_REQ08_R0D_A_AMD_THRES, 0x40);
965                 tm6000_set_reg(dev, TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc);
966                 tm6000_set_reg(dev, TM6010_REQ08_R1E_A_GAIN_DEEMPH_OUT, 0x13);
967                 tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x80);
968                 return 0;
969         }
970
971         switch (std) {
972 #if 0
973         case DK_MONO:
974                 mono_flag = 1;
975                 break;
976         case DK_A2_1:
977                 break;
978         case DK_A2_3:
979                 areg_05 = 0x0b;
980                 break;
981         case BG_MONO:
982                 mono_flag = 1;
983                 areg_05 = 0x05;
984                 break;
985 #endif
986         case BG_NICAM:
987                 areg_05 = 0x07;
988                 nicam_flag = 1;
989                 break;
990         case BTSC:
991                 areg_05 = 0x02;
992                 break;
993         case BG_A2:
994                 areg_05 = 0x05;
995                 break;
996         case DK_NICAM:
997                 areg_05 = 0x06;
998                 nicam_flag = 1;
999                 break;
1000         case EIAJ:
1001                 areg_05 = 0x02;
1002                 break;
1003         case I_NICAM:
1004                 areg_05 = 0x08;
1005                 nicam_flag = 1;
1006                 break;
1007         case KOREA_A2:
1008                 areg_05 = 0x04;
1009                 break;
1010         case L_NICAM:
1011                 areg_02 = 0x02; /* GC1 Fixed gain +12dB */
1012                 areg_05 = 0x0a;
1013                 nicam_flag = 1;
1014                 break;
1015         default:
1016                 /* do nothink */
1017                 break;
1018         }
1019
1020 #if 0
1021         switch (tv_audio_mode) {
1022         case TV_MONO:
1023                 areg_06 = (nicam_flag) ? 0x03 : 0x00;
1024                 break;
1025         case TV_LANG_A:
1026                 areg_06 = 0x00;
1027                 break;
1028         case TV_LANG_B:
1029                 areg_06 = 0x01;
1030                 break;
1031         }
1032 #endif
1033
1034         if (mono_flag)
1035                 areg_06 = 0x00;
1036
1037         tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x00);
1038         tm6000_set_reg(dev, TM6010_REQ08_R02_A_FIX_GAIN_CTRL, areg_02);
1039         tm6000_set_reg(dev, TM6010_REQ08_R03_A_AUTO_GAIN_CTRL, 0x00);
1040         tm6000_set_reg(dev, TM6010_REQ08_R04_A_SIF_AMP_CTRL, 0xa0);
1041         tm6000_set_reg(dev, TM6010_REQ08_R05_A_STANDARD_MOD, areg_05);
1042         tm6000_set_reg(dev, TM6010_REQ08_R06_A_SOUND_MOD, areg_06);
1043         tm6000_set_reg(dev, TM6010_REQ08_R07_A_LEFT_VOL, 0x00);
1044         tm6000_set_reg(dev, TM6010_REQ08_R08_A_RIGHT_VOL, 0x00);
1045         tm6000_set_reg(dev, TM6010_REQ08_R09_A_MAIN_VOL, 0x08);
1046         tm6000_set_reg(dev, TM6010_REQ08_R0A_A_I2S_MOD, 0x91);
1047         tm6000_set_reg(dev, TM6010_REQ08_R0B_A_ASD_THRES1, 0x20);
1048         tm6000_set_reg(dev, TM6010_REQ08_R0C_A_ASD_THRES2, 0x12);
1049         tm6000_set_reg(dev, TM6010_REQ08_R0D_A_AMD_THRES, 0x20);
1050         tm6000_set_reg(dev, TM6010_REQ08_R0E_A_MONO_THRES1, 0xf0);
1051         tm6000_set_reg(dev, TM6010_REQ08_R0F_A_MONO_THRES2, 0x80);
1052         tm6000_set_reg(dev, TM6010_REQ08_R10_A_MUTE_THRES1, 0xc0);
1053         tm6000_set_reg(dev, TM6010_REQ08_R11_A_MUTE_THRES2, 0x80);
1054         tm6000_set_reg(dev, TM6010_REQ08_R12_A_AGC_U, 0x12);
1055         tm6000_set_reg(dev, TM6010_REQ08_R13_A_AGC_ERR_T, 0xfe);
1056         tm6000_set_reg(dev, TM6010_REQ08_R14_A_AGC_GAIN_INIT, 0x20);
1057         tm6000_set_reg(dev, TM6010_REQ08_R15_A_AGC_STEP_THR, 0x14);
1058         tm6000_set_reg(dev, TM6010_REQ08_R16_A_AGC_GAIN_MAX, 0xfe);
1059         tm6000_set_reg(dev, TM6010_REQ08_R17_A_AGC_GAIN_MIN, 0x01);
1060         tm6000_set_reg(dev, TM6010_REQ08_R18_A_TR_CTRL, 0xa0);
1061         tm6000_set_reg(dev, TM6010_REQ08_R19_A_FH_2FH_GAIN, 0x32);
1062         tm6000_set_reg(dev, TM6010_REQ08_R1A_A_NICAM_SER_MAX, 0x64);
1063         tm6000_set_reg(dev, TM6010_REQ08_R1B_A_NICAM_SER_MIN, 0x20);
1064         tm6000_set_reg(dev, REQ_08_SET_GET_AVREG_BIT, 0x1c, 0x00);
1065         tm6000_set_reg(dev, REQ_08_SET_GET_AVREG_BIT, 0x1d, 0x00);
1066         tm6000_set_reg(dev, TM6010_REQ08_R1E_A_GAIN_DEEMPH_OUT, 0x13);
1067         tm6000_set_reg(dev, TM6010_REQ08_R1F_A_TEST_INTF_SEL, 0x00);
1068         tm6000_set_reg(dev, TM6010_REQ08_R20_A_TEST_PIN_SEL, 0x00);
1069         tm6000_set_reg(dev, TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3);
1070         tm6000_set_reg(dev, TM6010_REQ08_R06_A_SOUND_MOD, 0x00);
1071         tm6000_set_reg(dev, TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc);
1072         tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x80);
1073
1074         return 0;
1075 }
1076
1077 void tm6000_get_std_res(struct tm6000_core *dev)
1078 {
1079         /* Currently, those are the only supported resoltions */
1080         if (dev->norm & V4L2_STD_525_60)
1081                 dev->height = 480;
1082         else
1083                 dev->height = 576;
1084
1085         dev->width = 720;
1086 }
1087
1088 static int tm6000_load_std(struct tm6000_core *dev,
1089                            struct tm6000_reg_settings *set, int max_size)
1090 {
1091         int i, rc;
1092
1093         /* Load board's initialization table */
1094         for (i = 0; max_size; i++) {
1095                 if (!set[i].req)
1096                         return 0;
1097
1098                 if ((dev->dev_type != TM6010) &&
1099                     (set[i].req == REQ_08_SET_GET_AVREG_BIT))
1100                                 continue;
1101
1102                 rc = tm6000_set_reg(dev, set[i].req, set[i].reg, set[i].value);
1103                 if (rc < 0) {
1104                         printk(KERN_ERR "Error %i while setting "
1105                                "req %d, reg %d to value %d\n",
1106                                rc, set[i].req, set[i].reg, set[i].value);
1107                         return rc;
1108                 }
1109         }
1110
1111         return 0;
1112 }
1113
1114 static int tm6000_set_tv(struct tm6000_core *dev, int pos)
1115 {
1116         int rc;
1117
1118         /* FIXME: This code is for tm6010 - not tested yet - doesn't work with
1119            tm5600
1120          */
1121
1122         /* FIXME: This is tuner-dependent */
1123         int nosif = 0;
1124
1125         if (nosif) {
1126                 rc = tm6000_load_std(dev, tv_stds[pos].nosif,
1127                                      sizeof(tv_stds[pos].nosif));
1128         } else {
1129                 rc = tm6000_load_std(dev, tv_stds[pos].sif,
1130                                      sizeof(tv_stds[pos].sif));
1131         }
1132         if (rc < 0)
1133                 return rc;
1134         rc = tm6000_load_std(dev, tv_stds[pos].common,
1135                              sizeof(tv_stds[pos].common));
1136
1137         tm6000_set_audio_std(dev, tv_stds[pos].audio_default_std);
1138
1139         return rc;
1140 }
1141
1142 int tm6000_set_standard(struct tm6000_core *dev, v4l2_std_id * norm)
1143 {
1144         int i, rc = 0;
1145
1146         dev->norm = *norm;
1147         tm6000_get_std_res(dev);
1148
1149         switch (dev->input) {
1150         case TM6000_INPUT_TV:
1151                 for (i = 0; i < ARRAY_SIZE(tv_stds); i++) {
1152                         if (*norm & tv_stds[i].id) {
1153                                 rc = tm6000_set_tv(dev, i);
1154                                 goto ret;
1155                         }
1156                 }
1157                 return -EINVAL;
1158         case TM6000_INPUT_SVIDEO:
1159                 for (i = 0; i < ARRAY_SIZE(svideo_stds); i++) {
1160                         if (*norm & svideo_stds[i].id) {
1161                                 rc = tm6000_load_std(dev, svideo_stds[i].common,
1162                                                      sizeof(svideo_stds[i].
1163                                                             common));
1164                                 goto ret;
1165                         }
1166                 }
1167                 return -EINVAL;
1168         case TM6000_INPUT_COMPOSITE:
1169                 for (i = 0; i < ARRAY_SIZE(composite_stds); i++) {
1170                         if (*norm & composite_stds[i].id) {
1171                                 rc = tm6000_load_std(dev,
1172                                                      composite_stds[i].common,
1173                                                      sizeof(composite_stds[i].
1174                                                             common));
1175                                 tm6000_set_audio_std(dev, composite_stds[i].audio_default_std);
1176                                 goto ret;
1177                         }
1178                 }
1179                 return -EINVAL;
1180         }
1181
1182 ret:
1183         if (rc < 0)
1184                 return rc;
1185
1186         msleep(40);
1187
1188
1189         return 0;
1190 }