2 tm6000-stds.c - driver for TM5600/TM6000/TM6010 USB video capture devices
4 Copyright (C) 2007 Mauro Carvalho Chehab <mchehab@redhat.com>
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
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.
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.
20 #include <linux/module.h>
21 #include <linux/kernel.h>
23 #include "tm6000-regs.h"
25 struct tm6000_reg_settings {
31 struct tm6000_std_tv_settings {
33 struct tm6000_reg_settings sif[12];
34 struct tm6000_reg_settings nosif[12];
35 struct tm6000_reg_settings common[25];
38 struct tm6000_std_settings {
40 struct tm6000_reg_settings common[37];
43 static struct tm6000_std_tv_settings tv_stds[] = {
47 {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf2},
48 {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8},
49 {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
50 {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x08},
51 {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
52 {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
53 {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
54 {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
55 {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x62},
56 {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfe},
57 {TM6010_REQ07_RFE_POWER_DOWN, 0xcb},
61 {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
62 {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8},
63 {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
64 {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x0f},
65 {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
66 {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
67 {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
68 {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
69 {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x60},
70 {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
71 {TM6010_REQ07_RFE_POWER_DOWN, 0x8b},
75 {TM6010_REQ07_R3F_RESET, 0x01},
76 {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x04},
77 {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
78 {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
79 {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x00},
80 {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
81 {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e},
82 {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x83},
83 {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x0a},
84 {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xe0},
85 {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
86 {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
87 {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
88 {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
89 {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x88},
90 {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x20},
91 {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0x61},
92 {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c},
93 {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
94 {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52},
95 {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
97 {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc},
98 {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
99 {TM6010_REQ08_R05_A_STANDARD_MOD, 0x21}, /* FIXME */
100 {TM6010_REQ07_R3F_RESET, 0x00},
104 .id = V4L2_STD_PAL_Nc,
106 {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf2},
107 {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8},
108 {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
109 {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x08},
110 {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
111 {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
112 {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
113 {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
114 {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x62},
115 {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfe},
116 {TM6010_REQ07_RFE_POWER_DOWN, 0xcb},
120 {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
121 {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8},
122 {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
123 {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x0f},
124 {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
125 {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
126 {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
127 {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
128 {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x60},
129 {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
130 {TM6010_REQ07_RFE_POWER_DOWN, 0x8b},
134 {TM6010_REQ07_R3F_RESET, 0x01},
135 {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x36},
136 {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
137 {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
138 {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x02},
139 {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
140 {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e},
141 {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x91},
142 {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x1f},
143 {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0x0c},
144 {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
145 {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
146 {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
147 {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
148 {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c},
149 {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2c},
150 {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
151 {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c},
152 {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
153 {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52},
154 {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
156 {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc},
157 {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
158 {TM6010_REQ08_R05_A_STANDARD_MOD, 0x21}, /* FIXME */
159 {TM6010_REQ07_R3F_RESET, 0x00},
165 {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf2},
166 {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8},
167 {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
168 {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x08},
169 {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
170 {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
171 {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
172 {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
173 {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x62},
174 {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfe},
175 {TM6010_REQ07_RFE_POWER_DOWN, 0xcb},
179 {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
180 {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8},
181 {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
182 {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x0f},
183 {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
184 {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
185 {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
186 {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
187 {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x60},
188 {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
189 {TM6010_REQ07_RFE_POWER_DOWN, 0x8b},
193 {TM6010_REQ07_R3F_RESET, 0x01},
194 {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x32},
195 {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
196 {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
197 {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x02},
198 {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
199 {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x25},
200 {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0xd5},
201 {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x63},
202 {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0x50},
203 {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
204 {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
205 {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
206 {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
207 {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c},
208 {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2c},
209 {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
210 {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c},
211 {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
212 {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52},
213 {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
215 {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc},
216 {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
217 {TM6010_REQ08_R05_A_STANDARD_MOD, 0x76}, /* FIXME */
218 {TM6010_REQ07_R3F_RESET, 0x00},
222 .id = V4L2_STD_SECAM,
224 {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf2},
225 {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8},
226 {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
227 {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x08},
228 {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
229 {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
230 {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
231 {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
232 {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x62},
233 {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfe},
234 {TM6010_REQ07_RFE_POWER_DOWN, 0xcb},
238 {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
239 {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8},
240 {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
241 {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x0f},
242 {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
243 {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
244 {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
245 {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
246 {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x60},
247 {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
248 {TM6010_REQ07_RFE_POWER_DOWN, 0x8b},
252 {TM6010_REQ07_R3F_RESET, 0x01},
253 {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x38},
254 {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
255 {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
256 {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x02},
257 {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
258 {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x24},
259 {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x92},
260 {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0xe8},
261 {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xed},
262 {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
263 {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
264 {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
265 {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
266 {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c},
267 {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2c},
268 {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
269 {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x2c},
270 {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x18},
271 {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x42},
272 {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0xFF},
274 {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
275 {TM6010_REQ08_R05_A_STANDARD_MOD, 0x79},
276 {TM6010_REQ07_R3F_RESET, 0x00},
282 {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf2},
283 {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8},
284 {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
285 {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x08},
286 {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
287 {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
288 {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
289 {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
290 {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x62},
291 {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfe},
292 {TM6010_REQ07_RFE_POWER_DOWN, 0xcb},
296 {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
297 {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8},
298 {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
299 {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x0f},
300 {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
301 {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
302 {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
303 {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
304 {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x60},
305 {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
306 {TM6010_REQ07_RFE_POWER_DOWN, 0x8b},
310 {TM6010_REQ07_R3F_RESET, 0x01},
311 {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x00},
312 {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0f},
313 {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
314 {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x00},
315 {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
316 {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e},
317 {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x8b},
318 {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0xa2},
319 {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xe9},
320 {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
321 {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
322 {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
323 {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
324 {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x88},
325 {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x22},
326 {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0x61},
327 {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x1c},
328 {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
329 {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x42},
330 {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
332 {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdd},
333 {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
334 {TM6010_REQ08_R05_A_STANDARD_MOD, 0x22}, /* FIXME */
335 {TM6010_REQ07_R3F_RESET, 0x00},
341 static struct tm6000_std_settings composite_stds[] = {
343 .id = V4L2_STD_PAL_M,
345 {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
346 {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf4},
347 {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
348 {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x0f},
349 {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
350 {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
351 {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
352 {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
353 {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
354 {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
355 {TM6010_REQ07_RFE_POWER_DOWN, 0x8b},
357 {TM6010_REQ07_R3F_RESET, 0x01},
358 {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x04},
359 {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
360 {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
361 {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x00},
362 {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
363 {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e},
364 {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x83},
365 {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x0a},
366 {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xe0},
367 {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
368 {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
369 {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
370 {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
371 {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x88},
372 {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x20},
373 {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0x61},
374 {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c},
375 {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
376 {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52},
377 {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
379 {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc},
380 {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
381 {TM6010_REQ07_R3F_RESET, 0x00},
385 .id = V4L2_STD_PAL_Nc,
387 {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
388 {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf4},
389 {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
390 {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x0f},
391 {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
392 {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
393 {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
394 {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
395 {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
396 {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
397 {TM6010_REQ07_RFE_POWER_DOWN, 0x8b},
399 {TM6010_REQ07_R3F_RESET, 0x01},
400 {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x36},
401 {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
402 {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
403 {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x02},
404 {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
405 {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e},
406 {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x91},
407 {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x1f},
408 {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0x0c},
409 {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
410 {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
411 {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
412 {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
413 {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c},
414 {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2c},
415 {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
416 {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c},
417 {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
418 {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52},
419 {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
421 {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc},
422 {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
423 {TM6010_REQ07_R3F_RESET, 0x00},
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},
441 {TM6010_REQ07_R3F_RESET, 0x01},
442 {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x32},
443 {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
444 {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
445 {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x02},
446 {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
447 {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x25},
448 {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0xd5},
449 {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x63},
450 {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0x50},
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, 0x8c},
456 {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2c},
457 {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
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},
463 {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc},
464 {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
465 {TM6010_REQ07_R3F_RESET, 0x00},
469 .id = V4L2_STD_SECAM,
471 {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
472 {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf4},
473 {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
474 {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x0f},
475 {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
476 {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
477 {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
478 {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
479 {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
480 {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
481 {TM6010_REQ07_RFE_POWER_DOWN, 0x8b},
483 {TM6010_REQ07_R3F_RESET, 0x01},
484 {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x38},
485 {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
486 {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
487 {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x02},
488 {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
489 {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x24},
490 {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x92},
491 {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0xe8},
492 {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xed},
493 {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
494 {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
495 {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
496 {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
497 {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c},
498 {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2c},
499 {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
500 {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x2c},
501 {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x18},
502 {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x42},
503 {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0xFF},
505 {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
506 {TM6010_REQ07_R3F_RESET, 0x00},
512 {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
513 {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf4},
514 {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
515 {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x0f},
516 {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
517 {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
518 {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
519 {TM6010_REQ08_RED_GAIN_SEL, 0xe8},
520 {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
521 {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
522 {TM6010_REQ07_RFE_POWER_DOWN, 0x8b},
524 {TM6010_REQ07_R3F_RESET, 0x01},
525 {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x00},
526 {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0f},
527 {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
528 {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x00},
529 {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
530 {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e},
531 {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x8b},
532 {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0xa2},
533 {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xe9},
534 {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
535 {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
536 {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
537 {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
538 {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x88},
539 {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x22},
540 {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0x61},
541 {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x1c},
542 {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
543 {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x42},
544 {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
546 {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdd},
547 {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
548 {TM6010_REQ07_R3F_RESET, 0x00},
554 static struct tm6000_std_settings svideo_stds[] = {
556 .id = V4L2_STD_PAL_M,
558 {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
559 {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xfc},
560 {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf8},
561 {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x00},
562 {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf2},
563 {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xf0},
564 {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
565 {TM6010_REQ08_RED_GAIN_SEL, 0xe0},
566 {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
567 {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
568 {TM6010_REQ07_RFE_POWER_DOWN, 0x8a},
570 {TM6010_REQ07_R3F_RESET, 0x01},
571 {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x05},
572 {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
573 {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
574 {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x04},
575 {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
576 {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e},
577 {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x83},
578 {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x0a},
579 {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xe0},
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, 0x88},
585 {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x22},
586 {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0x61},
587 {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c},
588 {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
589 {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52},
590 {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
592 {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc},
593 {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
594 {TM6010_REQ07_R3F_RESET, 0x00},
598 .id = V4L2_STD_PAL_Nc,
600 {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
601 {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xfc},
602 {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf8},
603 {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x00},
604 {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf2},
605 {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xf0},
606 {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
607 {TM6010_REQ08_RED_GAIN_SEL, 0xe0},
608 {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
609 {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
610 {TM6010_REQ07_RFE_POWER_DOWN, 0x8a},
612 {TM6010_REQ07_R3F_RESET, 0x01},
613 {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x37},
614 {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
615 {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
616 {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x04},
617 {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
618 {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e},
619 {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x91},
620 {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x1f},
621 {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0x0c},
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, 0x88},
627 {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x22},
628 {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
629 {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c},
630 {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
631 {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52},
632 {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
634 {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc},
635 {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
636 {TM6010_REQ07_R3F_RESET, 0x00},
642 {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
643 {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xfc},
644 {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf8},
645 {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x00},
646 {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf2},
647 {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xf0},
648 {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
649 {TM6010_REQ08_RED_GAIN_SEL, 0xe0},
650 {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
651 {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
652 {TM6010_REQ07_RFE_POWER_DOWN, 0x8a},
654 {TM6010_REQ07_R3F_RESET, 0x01},
655 {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x33},
656 {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
657 {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
658 {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x04},
659 {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x30},
660 {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x25},
661 {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0xd5},
662 {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x63},
663 {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0x50},
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, 0x8c},
669 {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2a},
670 {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
671 {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c},
672 {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
673 {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52},
674 {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
676 {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc},
677 {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
678 {TM6010_REQ07_R3F_RESET, 0x00},
682 .id = V4L2_STD_SECAM,
684 {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
685 {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xfc},
686 {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf8},
687 {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x00},
688 {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf2},
689 {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xf0},
690 {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
691 {TM6010_REQ08_RED_GAIN_SEL, 0xe0},
692 {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
693 {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
694 {TM6010_REQ07_RFE_POWER_DOWN, 0x8a},
696 {TM6010_REQ07_R3F_RESET, 0x01},
697 {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x39},
698 {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
699 {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
700 {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x03},
701 {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
702 {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x24},
703 {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x92},
704 {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0xe8},
705 {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xed},
706 {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
707 {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
708 {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
709 {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
710 {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c},
711 {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2a},
712 {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
713 {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x2c},
714 {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x18},
715 {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x42},
716 {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0xFF},
718 {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
719 {TM6010_REQ07_R3F_RESET, 0x00},
725 {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
726 {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xfc},
727 {TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf8},
728 {TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x00},
729 {TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf2},
730 {TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xf0},
731 {TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
732 {TM6010_REQ08_RED_GAIN_SEL, 0xe0},
733 {TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
734 {TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
735 {TM6010_REQ07_RFE_POWER_DOWN, 0x8a},
737 {TM6010_REQ07_R3F_RESET, 0x01},
738 {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x01},
739 {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0f},
740 {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
741 {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x03},
742 {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x30},
743 {TM6010_REQ07_R17_HLOOP_MAXSTATE, 0x8b},
744 {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e},
745 {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x8b},
746 {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0xa2},
747 {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xe9},
748 {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
749 {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
750 {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
751 {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
752 {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x88},
753 {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x22},
754 {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0x61},
755 {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x1c},
756 {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
757 {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x42},
758 {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
760 {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdd},
761 {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
762 {TM6010_REQ07_R3F_RESET, 0x00},
768 void tm6000_get_std_res(struct tm6000_core *dev)
770 /* Currently, those are the only supported resoltions */
771 if (dev->norm & V4L2_STD_525_60)
779 static int tm6000_load_std(struct tm6000_core *dev,
780 struct tm6000_reg_settings *set, int max_size)
784 /* Load board's initialization table */
785 for (i = 0; max_size; i++) {
789 if ((dev->dev_type != TM6010) &&
790 (set[i].req == REQ_08_SET_GET_AVREG_BIT))
793 rc = tm6000_set_reg(dev, set[i].req, set[i].reg, set[i].value);
795 printk(KERN_ERR "Error %i while setting "
796 "req %d, reg %d to value %d\n",
797 rc, set[i].req, set[i].reg, set[i].value);
805 static int tm6000_set_tv(struct tm6000_core *dev, int pos)
809 /* FIXME: This code is for tm6010 - not tested yet - doesn't work with
813 /* FIXME: This is tuner-dependent */
817 rc = tm6000_load_std(dev, tv_stds[pos].nosif,
818 sizeof(tv_stds[pos].nosif));
820 rc = tm6000_load_std(dev, tv_stds[pos].sif,
821 sizeof(tv_stds[pos].sif));
825 rc = tm6000_load_std(dev, tv_stds[pos].common,
826 sizeof(tv_stds[pos].common));
831 int tm6000_set_standard(struct tm6000_core *dev, v4l2_std_id * norm)
836 tm6000_get_std_res(dev);
838 switch (dev->input) {
839 case TM6000_INPUT_TV:
840 for (i = 0; i < ARRAY_SIZE(tv_stds); i++) {
841 if (*norm & tv_stds[i].id) {
842 rc = tm6000_set_tv(dev, i);
847 case TM6000_INPUT_SVIDEO:
848 for (i = 0; i < ARRAY_SIZE(svideo_stds); i++) {
849 if (*norm & svideo_stds[i].id) {
850 rc = tm6000_load_std(dev, svideo_stds[i].common,
851 sizeof(svideo_stds[i].
857 case TM6000_INPUT_COMPOSITE:
858 for (i = 0; i < ARRAY_SIZE(composite_stds); i++) {
859 if (*norm & composite_stds[i].id) {
860 rc = tm6000_load_std(dev,
861 composite_stds[i].common,
862 sizeof(composite_stds[i].