• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/drivers/staging/tm6000/
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
25struct tm6000_reg_settings {
26	unsigned char req;
27	unsigned char reg;
28	unsigned char value;
29};
30
31struct tm6000_std_tv_settings {
32	v4l2_std_id id;
33	struct tm6000_reg_settings sif[12];
34	struct tm6000_reg_settings nosif[12];
35	struct tm6000_reg_settings common[25];
36};
37
38struct tm6000_std_settings {
39	v4l2_std_id id;
40	struct tm6000_reg_settings common[37];
41};
42
43static struct tm6000_std_tv_settings tv_stds[] = {
44	{
45		.id = V4L2_STD_PAL_M,
46		.sif = {
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},
58			{0, 0, 0},
59		},
60		.nosif = {
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},
72			{0, 0, 0},
73		},
74		.common = {
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},
96
97			{TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc},
98			{TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
99			{TM6010_REQ07_R3F_RESET, 0x00},
100			{0, 0, 0},
101		},
102	}, {
103		.id = V4L2_STD_PAL_Nc,
104		.sif = {
105			{TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf2},
106			{TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8},
107			{TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
108			{TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x08},
109			{TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
110			{TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
111			{TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
112			{TM6010_REQ08_RED_GAIN_SEL, 0xe8},
113			{TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x62},
114			{TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfe},
115			{TM6010_REQ07_RFE_POWER_DOWN, 0xcb},
116			{0, 0, 0},
117		},
118		.nosif = {
119			{TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
120			{TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8},
121			{TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
122			{TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x0f},
123			{TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
124			{TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
125			{TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
126			{TM6010_REQ08_RED_GAIN_SEL, 0xe8},
127			{TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x60},
128			{TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
129			{TM6010_REQ07_RFE_POWER_DOWN, 0x8b},
130			{0, 0, 0},
131		},
132		.common = {
133			{TM6010_REQ07_R3F_RESET, 0x01},
134			{TM6010_REQ07_R00_VIDEO_CONTROL0, 0x36},
135			{TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
136			{TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
137			{TM6010_REQ07_R03_YC_SEP_CONTROL, 0x02},
138			{TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
139			{TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e},
140			{TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x91},
141			{TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x1f},
142			{TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0x0c},
143			{TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
144			{TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
145			{TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
146			{TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
147			{TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c},
148			{TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2c},
149			{TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
150			{TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c},
151			{TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
152			{TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52},
153			{TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
154
155			{TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc},
156			{TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
157			{TM6010_REQ07_R3F_RESET, 0x00},
158			{0, 0, 0},
159		},
160	}, {
161		.id = V4L2_STD_PAL,
162		.sif = {
163			{TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf2},
164			{TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8},
165			{TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
166			{TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x08},
167			{TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
168			{TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
169			{TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
170			{TM6010_REQ08_RED_GAIN_SEL, 0xe8},
171			{TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x62},
172			{TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfe},
173			{TM6010_REQ07_RFE_POWER_DOWN, 0xcb},
174			{0, 0, 0}
175		},
176		.nosif = {
177			{TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
178			{TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8},
179			{TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
180			{TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x0f},
181			{TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
182			{TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
183			{TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
184			{TM6010_REQ08_RED_GAIN_SEL, 0xe8},
185			{TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x60},
186			{TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
187			{TM6010_REQ07_RFE_POWER_DOWN, 0x8b},
188			{0, 0, 0},
189		},
190		.common = {
191			{TM6010_REQ07_R3F_RESET, 0x01},
192			{TM6010_REQ07_R00_VIDEO_CONTROL0, 0x32},
193			{TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
194			{TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
195			{TM6010_REQ07_R03_YC_SEP_CONTROL, 0x02},
196			{TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
197			{TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x25},
198			{TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0xd5},
199			{TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x63},
200			{TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0x50},
201			{TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
202			{TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
203			{TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
204			{TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
205			{TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c},
206			{TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2c},
207			{TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
208			{TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c},
209			{TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
210			{TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52},
211			{TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
212
213			{TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc},
214			{TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
215			{TM6010_REQ07_R3F_RESET, 0x00},
216			{0, 0, 0},
217		},
218	}, {
219		.id = V4L2_STD_SECAM,
220		.sif = {
221			{TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf2},
222			{TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8},
223			{TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
224			{TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x08},
225			{TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
226			{TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
227			{TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
228			{TM6010_REQ08_RED_GAIN_SEL, 0xe8},
229			{TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x62},
230			{TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfe},
231			{TM6010_REQ07_RFE_POWER_DOWN, 0xcb},
232			{0, 0, 0},
233		},
234		.nosif = {
235			{TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
236			{TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8},
237			{TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
238			{TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x0f},
239			{TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
240			{TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
241			{TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
242			{TM6010_REQ08_RED_GAIN_SEL, 0xe8},
243			{TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x60},
244			{TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
245			{TM6010_REQ07_RFE_POWER_DOWN, 0x8b},
246			{0, 0, 0},
247		},
248		.common = {
249			{TM6010_REQ07_R3F_RESET, 0x01},
250			{TM6010_REQ07_R00_VIDEO_CONTROL0, 0x38},
251			{TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
252			{TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
253			{TM6010_REQ07_R03_YC_SEP_CONTROL, 0x02},
254			{TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
255			{TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x24},
256			{TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x92},
257			{TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0xe8},
258			{TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xed},
259			{TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
260			{TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
261			{TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
262			{TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
263			{TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c},
264			{TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2c},
265			{TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
266			{TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x2c},
267			{TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x18},
268			{TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x42},
269			{TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0xFF},
270
271			{TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
272			{TM6010_REQ07_R3F_RESET, 0x00},
273			{0, 0, 0},
274		},
275	}, {
276		.id = V4L2_STD_NTSC,
277		.sif = {
278			{TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf2},
279			{TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8},
280			{TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
281			{TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x08},
282			{TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
283			{TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
284			{TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
285			{TM6010_REQ08_RED_GAIN_SEL, 0xe8},
286			{TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x62},
287			{TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfe},
288			{TM6010_REQ07_RFE_POWER_DOWN, 0xcb},
289			{0, 0, 0},
290		},
291		.nosif = {
292			{TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
293			{TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8},
294			{TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
295			{TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x0f},
296			{TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
297			{TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
298			{TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
299			{TM6010_REQ08_RED_GAIN_SEL, 0xe8},
300			{TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x60},
301			{TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
302			{TM6010_REQ07_RFE_POWER_DOWN, 0x8b},
303			{0, 0, 0},
304		},
305		.common = {
306			{TM6010_REQ07_R3F_RESET, 0x01},
307			{TM6010_REQ07_R00_VIDEO_CONTROL0, 0x00},
308			{TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0f},
309			{TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
310			{TM6010_REQ07_R03_YC_SEP_CONTROL, 0x00},
311			{TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
312			{TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e},
313			{TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x8b},
314			{TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0xa2},
315			{TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xe9},
316			{TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
317			{TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
318			{TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
319			{TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
320			{TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x88},
321			{TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x22},
322			{TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0x61},
323			{TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x1c},
324			{TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
325			{TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x42},
326			{TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
327
328			{TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdd},
329			{TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
330			{TM6010_REQ07_R3F_RESET, 0x00},
331			{0, 0, 0},
332		},
333	},
334};
335
336static struct tm6000_std_settings composite_stds[] = {
337	{
338		.id = V4L2_STD_PAL_M,
339		.common = {
340			{TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
341			{TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf4},
342			{TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
343			{TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x0f},
344			{TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
345			{TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
346			{TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
347			{TM6010_REQ08_RED_GAIN_SEL, 0xe8},
348			{TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
349			{TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
350			{TM6010_REQ07_RFE_POWER_DOWN, 0x8b},
351
352			{TM6010_REQ07_R3F_RESET, 0x01},
353			{TM6010_REQ07_R00_VIDEO_CONTROL0, 0x04},
354			{TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
355			{TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
356			{TM6010_REQ07_R03_YC_SEP_CONTROL, 0x00},
357			{TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
358			{TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e},
359			{TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x83},
360			{TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x0a},
361			{TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xe0},
362			{TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
363			{TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
364			{TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
365			{TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
366			{TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x88},
367			{TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x20},
368			{TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0x61},
369			{TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c},
370			{TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
371			{TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52},
372			{TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
373
374			{TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc},
375			{TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
376			{TM6010_REQ07_R3F_RESET, 0x00},
377			{0, 0, 0},
378		},
379	 }, {
380		.id = V4L2_STD_PAL_Nc,
381		.common = {
382			{TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
383			{TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf4},
384			{TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
385			{TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x0f},
386			{TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
387			{TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
388			{TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
389			{TM6010_REQ08_RED_GAIN_SEL, 0xe8},
390			{TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
391			{TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
392			{TM6010_REQ07_RFE_POWER_DOWN, 0x8b},
393
394			{TM6010_REQ07_R3F_RESET, 0x01},
395			{TM6010_REQ07_R00_VIDEO_CONTROL0, 0x36},
396			{TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
397			{TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
398			{TM6010_REQ07_R03_YC_SEP_CONTROL, 0x02},
399			{TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
400			{TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e},
401			{TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x91},
402			{TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x1f},
403			{TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0x0c},
404			{TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
405			{TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
406			{TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
407			{TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
408			{TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c},
409			{TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2c},
410			{TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
411			{TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c},
412			{TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
413			{TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52},
414			{TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
415
416			{TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc},
417			{TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
418			{TM6010_REQ07_R3F_RESET, 0x00},
419			{0, 0, 0},
420		},
421	}, {
422		.id = V4L2_STD_PAL,
423		.common = {
424			{TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
425			{TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf4},
426			{TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
427			{TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x0f},
428			{TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
429			{TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
430			{TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
431			{TM6010_REQ08_RED_GAIN_SEL, 0xe8},
432			{TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
433			{TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
434			{TM6010_REQ07_RFE_POWER_DOWN, 0x8b},
435
436			{TM6010_REQ07_R3F_RESET, 0x01},
437			{TM6010_REQ07_R00_VIDEO_CONTROL0, 0x32},
438			{TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
439			{TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
440			{TM6010_REQ07_R03_YC_SEP_CONTROL, 0x02},
441			{TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
442			{TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x25},
443			{TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0xd5},
444			{TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x63},
445			{TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0x50},
446			{TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
447			{TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
448			{TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
449			{TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
450			{TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c},
451			{TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2c},
452			{TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
453			{TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c},
454			{TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
455			{TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52},
456			{TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
457
458			{TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc},
459			{TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
460			{TM6010_REQ07_R3F_RESET, 0x00},
461			{0, 0, 0},
462		},
463	 }, {
464		.id = V4L2_STD_SECAM,
465		.common = {
466			{TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
467			{TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf4},
468			{TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
469			{TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x0f},
470			{TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
471			{TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
472			{TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
473			{TM6010_REQ08_RED_GAIN_SEL, 0xe8},
474			{TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
475			{TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
476			{TM6010_REQ07_RFE_POWER_DOWN, 0x8b},
477
478			{TM6010_REQ07_R3F_RESET, 0x01},
479			{TM6010_REQ07_R00_VIDEO_CONTROL0, 0x38},
480			{TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
481			{TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
482			{TM6010_REQ07_R03_YC_SEP_CONTROL, 0x02},
483			{TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
484			{TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x24},
485			{TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x92},
486			{TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0xe8},
487			{TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xed},
488			{TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
489			{TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
490			{TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
491			{TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
492			{TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c},
493			{TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2c},
494			{TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
495			{TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x2c},
496			{TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x18},
497			{TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x42},
498			{TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0xFF},
499
500			{TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
501			{TM6010_REQ07_R3F_RESET, 0x00},
502			{0, 0, 0},
503		},
504	}, {
505		.id = V4L2_STD_NTSC,
506		.common = {
507			{TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
508			{TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf4},
509			{TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
510			{TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x0f},
511			{TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
512			{TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
513			{TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
514			{TM6010_REQ08_RED_GAIN_SEL, 0xe8},
515			{TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
516			{TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
517			{TM6010_REQ07_RFE_POWER_DOWN, 0x8b},
518
519			{TM6010_REQ07_R3F_RESET, 0x01},
520			{TM6010_REQ07_R00_VIDEO_CONTROL0, 0x00},
521			{TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0f},
522			{TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
523			{TM6010_REQ07_R03_YC_SEP_CONTROL, 0x00},
524			{TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
525			{TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e},
526			{TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x8b},
527			{TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0xa2},
528			{TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xe9},
529			{TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
530			{TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
531			{TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
532			{TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
533			{TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x88},
534			{TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x22},
535			{TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0x61},
536			{TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x1c},
537			{TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
538			{TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x42},
539			{TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
540
541			{TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdd},
542			{TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
543			{TM6010_REQ07_R3F_RESET, 0x00},
544			{0, 0, 0},
545		},
546	},
547};
548
549static struct tm6000_std_settings svideo_stds[] = {
550	{
551		.id = V4L2_STD_PAL_M,
552		.common = {
553			{TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
554			{TM6010_REQ08_RE3_ADC_IN1_SEL, 0xfc},
555			{TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf8},
556			{TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x00},
557			{TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf2},
558			{TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xf0},
559			{TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
560			{TM6010_REQ08_RED_GAIN_SEL, 0xe0},
561			{TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
562			{TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
563			{TM6010_REQ07_RFE_POWER_DOWN, 0x8a},
564
565			{TM6010_REQ07_R3F_RESET, 0x01},
566			{TM6010_REQ07_R00_VIDEO_CONTROL0, 0x05},
567			{TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
568			{TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
569			{TM6010_REQ07_R03_YC_SEP_CONTROL, 0x04},
570			{TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
571			{TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e},
572			{TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x83},
573			{TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x0a},
574			{TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xe0},
575			{TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
576			{TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
577			{TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
578			{TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
579			{TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x88},
580			{TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x22},
581			{TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0x61},
582			{TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c},
583			{TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
584			{TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52},
585			{TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
586
587			{TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc},
588			{TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
589			{TM6010_REQ07_R3F_RESET, 0x00},
590			{0, 0, 0},
591		},
592	}, {
593		.id = V4L2_STD_PAL_Nc,
594		.common = {
595			{TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
596			{TM6010_REQ08_RE3_ADC_IN1_SEL, 0xfc},
597			{TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf8},
598			{TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x00},
599			{TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf2},
600			{TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xf0},
601			{TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
602			{TM6010_REQ08_RED_GAIN_SEL, 0xe0},
603			{TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
604			{TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
605			{TM6010_REQ07_RFE_POWER_DOWN, 0x8a},
606
607			{TM6010_REQ07_R3F_RESET, 0x01},
608			{TM6010_REQ07_R00_VIDEO_CONTROL0, 0x37},
609			{TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
610			{TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
611			{TM6010_REQ07_R03_YC_SEP_CONTROL, 0x04},
612			{TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
613			{TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e},
614			{TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x91},
615			{TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x1f},
616			{TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0x0c},
617			{TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
618			{TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
619			{TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
620			{TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
621			{TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x88},
622			{TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x22},
623			{TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
624			{TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c},
625			{TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
626			{TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52},
627			{TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
628
629			{TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc},
630			{TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
631			{TM6010_REQ07_R3F_RESET, 0x00},
632			{0, 0, 0},
633		},
634	}, {
635		.id = V4L2_STD_PAL,
636		.common = {
637			{TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
638			{TM6010_REQ08_RE3_ADC_IN1_SEL, 0xfc},
639			{TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf8},
640			{TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x00},
641			{TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf2},
642			{TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xf0},
643			{TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
644			{TM6010_REQ08_RED_GAIN_SEL, 0xe0},
645			{TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
646			{TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
647			{TM6010_REQ07_RFE_POWER_DOWN, 0x8a},
648
649			{TM6010_REQ07_R3F_RESET, 0x01},
650			{TM6010_REQ07_R00_VIDEO_CONTROL0, 0x33},
651			{TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
652			{TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
653			{TM6010_REQ07_R03_YC_SEP_CONTROL, 0x04},
654			{TM6010_REQ07_R07_OUTPUT_CONTROL, 0x30},
655			{TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x25},
656			{TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0xd5},
657			{TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x63},
658			{TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0x50},
659			{TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
660			{TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
661			{TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
662			{TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
663			{TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c},
664			{TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2a},
665			{TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
666			{TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c},
667			{TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
668			{TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52},
669			{TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
670
671			{TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc},
672			{TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
673			{TM6010_REQ07_R3F_RESET, 0x00},
674			{0, 0, 0},
675		},
676	 }, {
677		.id = V4L2_STD_SECAM,
678		.common = {
679			{TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
680			{TM6010_REQ08_RE3_ADC_IN1_SEL, 0xfc},
681			{TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf8},
682			{TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x00},
683			{TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf2},
684			{TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xf0},
685			{TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
686			{TM6010_REQ08_RED_GAIN_SEL, 0xe0},
687			{TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
688			{TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
689			{TM6010_REQ07_RFE_POWER_DOWN, 0x8a},
690
691			{TM6010_REQ07_R3F_RESET, 0x01},
692			{TM6010_REQ07_R00_VIDEO_CONTROL0, 0x39},
693			{TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
694			{TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
695			{TM6010_REQ07_R03_YC_SEP_CONTROL, 0x03},
696			{TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
697			{TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x24},
698			{TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x92},
699			{TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0xe8},
700			{TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xed},
701			{TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
702			{TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
703			{TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
704			{TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
705			{TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c},
706			{TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2a},
707			{TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
708			{TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x2c},
709			{TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x18},
710			{TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x42},
711			{TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0xFF},
712
713			{TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
714			{TM6010_REQ07_R3F_RESET, 0x00},
715			{0, 0, 0},
716		},
717	}, {
718		.id = V4L2_STD_NTSC,
719		.common = {
720			{TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
721			{TM6010_REQ08_RE3_ADC_IN1_SEL, 0xfc},
722			{TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf8},
723			{TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x00},
724			{TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf2},
725			{TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xf0},
726			{TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
727			{TM6010_REQ08_RED_GAIN_SEL, 0xe0},
728			{TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
729			{TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
730			{TM6010_REQ07_RFE_POWER_DOWN, 0x8a},
731
732			{TM6010_REQ07_R3F_RESET, 0x01},
733			{TM6010_REQ07_R00_VIDEO_CONTROL0, 0x01},
734			{TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0f},
735			{TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
736			{TM6010_REQ07_R03_YC_SEP_CONTROL, 0x03},
737			{TM6010_REQ07_R07_OUTPUT_CONTROL, 0x30},
738			{TM6010_REQ07_R17_HLOOP_MAXSTATE, 0x8b},
739			{TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e},
740			{TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x8b},
741			{TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0xa2},
742			{TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xe9},
743			{TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
744			{TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
745			{TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
746			{TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
747			{TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x88},
748			{TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x22},
749			{TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0x61},
750			{TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x1c},
751			{TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
752			{TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x42},
753			{TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
754
755			{TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdd},
756			{TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
757			{TM6010_REQ07_R3F_RESET, 0x00},
758			{0, 0, 0},
759		},
760	},
761};
762
763void tm6000_get_std_res(struct tm6000_core *dev)
764{
765	/* Currently, those are the only supported resoltions */
766	if (dev->norm & V4L2_STD_525_60)
767		dev->height = 480;
768	else
769		dev->height = 576;
770
771	dev->width = 720;
772}
773
774static int tm6000_load_std(struct tm6000_core *dev,
775			   struct tm6000_reg_settings *set, int max_size)
776{
777	int i, rc;
778
779	/* Load board's initialization table */
780	for (i = 0; max_size; i++) {
781		if (!set[i].req)
782			return 0;
783
784		if ((dev->dev_type != TM6010) &&
785		    (set[i].req == REQ_08_SET_GET_AVREG_BIT))
786				continue;
787
788		rc = tm6000_set_reg(dev, set[i].req, set[i].reg, set[i].value);
789		if (rc < 0) {
790			printk(KERN_ERR "Error %i while setting "
791			       "req %d, reg %d to value %d\n",
792			       rc, set[i].req, set[i].reg, set[i].value);
793			return rc;
794		}
795	}
796
797	return 0;
798}
799
800static int tm6000_set_tv(struct tm6000_core *dev, int pos)
801{
802	int rc;
803
804
805	int nosif = 0;
806
807	if (nosif) {
808		rc = tm6000_load_std(dev, tv_stds[pos].nosif,
809				     sizeof(tv_stds[pos].nosif));
810	} else {
811		rc = tm6000_load_std(dev, tv_stds[pos].sif,
812				     sizeof(tv_stds[pos].sif));
813	}
814	if (rc < 0)
815		return rc;
816	rc = tm6000_load_std(dev, tv_stds[pos].common,
817			     sizeof(tv_stds[pos].common));
818
819	return rc;
820}
821
822int tm6000_set_standard(struct tm6000_core *dev, v4l2_std_id * norm)
823{
824	int i, rc = 0;
825
826	dev->norm = *norm;
827	tm6000_get_std_res(dev);
828
829	switch (dev->input) {
830	case TM6000_INPUT_TV:
831		for (i = 0; i < ARRAY_SIZE(tv_stds); i++) {
832			if (*norm & tv_stds[i].id) {
833				rc = tm6000_set_tv(dev, i);
834				goto ret;
835			}
836		}
837		return -EINVAL;
838	case TM6000_INPUT_SVIDEO:
839		for (i = 0; i < ARRAY_SIZE(svideo_stds); i++) {
840			if (*norm & svideo_stds[i].id) {
841				rc = tm6000_load_std(dev, svideo_stds[i].common,
842						     sizeof(svideo_stds[i].
843							    common));
844				goto ret;
845			}
846		}
847		return -EINVAL;
848	case TM6000_INPUT_COMPOSITE:
849		for (i = 0; i < ARRAY_SIZE(composite_stds); i++) {
850			if (*norm & composite_stds[i].id) {
851				rc = tm6000_load_std(dev,
852						     composite_stds[i].common,
853						     sizeof(composite_stds[i].
854							    common));
855				goto ret;
856			}
857		}
858		return -EINVAL;
859	}
860
861ret:
862	if (rc < 0)
863		return rc;
864
865	msleep(40);
866
867
868	return 0;
869}
870