]> bbs.cooldavid.org Git - net-next-2.6.git/blame - drivers/staging/tm6000/tm6000-stds.c
xps: Transmit Packet Steering
[net-next-2.6.git] / drivers / staging / tm6000 / tm6000-stds.c
CommitLineData
5200401a 1/*
d0058645
RP
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.
5200401a
MCC
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
709944ea
MCC
31enum 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
5200401a
MCC
43struct tm6000_std_tv_settings {
44 v4l2_std_id id;
709944ea
MCC
45 enum tm6000_audio_std audio_default_std;
46
5200401a
MCC
47 struct tm6000_reg_settings sif[12];
48 struct tm6000_reg_settings nosif[12];
be737a82 49 struct tm6000_reg_settings common[26];
5200401a
MCC
50};
51
52struct tm6000_std_settings {
53 v4l2_std_id id;
709944ea 54 enum tm6000_audio_std audio_default_std;
5200401a
MCC
55 struct tm6000_reg_settings common[37];
56};
57
58static struct tm6000_std_tv_settings tv_stds[] = {
59 {
60 .id = V4L2_STD_PAL_M,
709944ea 61 .audio_default_std = BTSC,
5200401a 62 .sif = {
9afec493
MCC
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},
5200401a
MCC
74 {0, 0, 0},
75 },
76 .nosif = {
9afec493
MCC
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},
5200401a
MCC
88 {0, 0, 0},
89 },
90 .common = {
9afec493
MCC
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},
53ff4c79 96 {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
9afec493
MCC
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},
421d1b70 115
9afec493 116 {TM6010_REQ07_R3F_RESET, 0x00},
709944ea 117
5200401a
MCC
118 {0, 0, 0},
119 },
120 }, {
121 .id = V4L2_STD_PAL_Nc,
709944ea 122 .audio_default_std = BTSC,
5200401a 123 .sif = {
9afec493
MCC
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},
5200401a
MCC
135 {0, 0, 0},
136 },
137 .nosif = {
9afec493
MCC
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},
5200401a
MCC
149 {0, 0, 0},
150 },
151 .common = {
9afec493
MCC
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},
53ff4c79 157 {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
9afec493
MCC
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},
421d1b70 176
9afec493 177 {TM6010_REQ07_R3F_RESET, 0x00},
421d1b70 178
5200401a
MCC
179 {0, 0, 0},
180 },
181 }, {
182 .id = V4L2_STD_PAL,
709944ea 183 .audio_default_std = BG_A2,
5200401a 184 .sif = {
9afec493
MCC
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},
5200401a
MCC
196 {0, 0, 0}
197 },
198 .nosif = {
9afec493
MCC
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},
5200401a
MCC
210 {0, 0, 0},
211 },
212 .common = {
9afec493
MCC
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},
53ff4c79 218 {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
9afec493
MCC
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},
421d1b70 237
9afec493 238 {TM6010_REQ07_R3F_RESET, 0x00},
421d1b70 239
5200401a
MCC
240 {0, 0, 0},
241 },
242 }, {
421d1b70 243 .id = V4L2_STD_SECAM_B | V4L2_STD_SECAM_G,
709944ea 244 .audio_default_std = BG_NICAM,
5200401a 245 .sif = {
9afec493
MCC
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},
5200401a
MCC
257 {0, 0, 0},
258 },
259 .nosif = {
9afec493
MCC
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},
5200401a
MCC
271 {0, 0, 0},
272 },
273 .common = {
9afec493
MCC
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},
53ff4c79 279 {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
9afec493
MCC
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},
421d1b70
DB
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
9afec493 357 {TM6010_REQ07_R3F_RESET, 0x00},
5200401a
MCC
358 {0, 0, 0},
359 },
360 }, {
361 .id = V4L2_STD_NTSC,
709944ea 362 .audio_default_std = BTSC,
5200401a 363 .sif = {
9afec493
MCC
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},
5200401a
MCC
375 {0, 0, 0},
376 },
377 .nosif = {
9afec493
MCC
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},
5200401a
MCC
389 {0, 0, 0},
390 },
391 .common = {
9afec493
MCC
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},
53ff4c79 397 {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
9afec493
MCC
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},
421d1b70 416
9afec493 417 {TM6010_REQ07_R3F_RESET, 0x00},
421d1b70 418
5200401a
MCC
419 {0, 0, 0},
420 },
421 },
422};
423
424static struct tm6000_std_settings composite_stds[] = {
425 {
426 .id = V4L2_STD_PAL_M,
709944ea 427 .audio_default_std = BTSC,
5200401a 428 .common = {
9afec493
MCC
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},
53ff4c79 446 {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
9afec493
MCC
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},
5200401a
MCC
466 {0, 0, 0},
467 },
468 }, {
469 .id = V4L2_STD_PAL_Nc,
709944ea 470 .audio_default_std = BTSC,
5200401a 471 .common = {
9afec493
MCC
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},
53ff4c79 489 {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
9afec493
MCC
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},
5200401a
MCC
509 {0, 0, 0},
510 },
511 }, {
512 .id = V4L2_STD_PAL,
709944ea 513 .audio_default_std = BG_A2,
5200401a 514 .common = {
9afec493
MCC
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},
53ff4c79 532 {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
9afec493
MCC
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},
5200401a
MCC
552 {0, 0, 0},
553 },
554 }, {
555 .id = V4L2_STD_SECAM,
709944ea 556 .audio_default_std = BG_NICAM,
5200401a 557 .common = {
9afec493
MCC
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},
53ff4c79 575 {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
9afec493
MCC
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},
5200401a
MCC
594 {0, 0, 0},
595 },
596 }, {
421d1b70
DB
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 }, {
5200401a 639 .id = V4L2_STD_NTSC,
709944ea 640 .audio_default_std = BTSC,
5200401a 641 .common = {
9afec493
MCC
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},
53ff4c79 659 {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
9afec493
MCC
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},
5200401a
MCC
679 {0, 0, 0},
680 },
681 },
682};
683
684static struct tm6000_std_settings svideo_stds[] = {
685 {
686 .id = V4L2_STD_PAL_M,
709944ea 687 .audio_default_std = BTSC,
5200401a 688 .common = {
9afec493
MCC
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},
53ff4c79 706 {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
9afec493
MCC
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},
5200401a
MCC
726 {0, 0, 0},
727 },
728 }, {
729 .id = V4L2_STD_PAL_Nc,
709944ea 730 .audio_default_std = BTSC,
5200401a 731 .common = {
9afec493
MCC
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},
53ff4c79 749 {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
9afec493
MCC
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},
5200401a
MCC
769 {0, 0, 0},
770 },
771 }, {
772 .id = V4L2_STD_PAL,
709944ea 773 .audio_default_std = BG_A2,
5200401a 774 .common = {
9afec493
MCC
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},
53ff4c79 792 {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x30},
9afec493
MCC
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},
5200401a
MCC
812 {0, 0, 0},
813 },
814 }, {
815 .id = V4L2_STD_SECAM,
709944ea 816 .audio_default_std = BG_NICAM,
5200401a 817 .common = {
9afec493
MCC
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},
53ff4c79 835 {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
9afec493
MCC
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},
5200401a
MCC
854 {0, 0, 0},
855 },
856 }, {
421d1b70
DB
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 }, {
5200401a 899 .id = V4L2_STD_NTSC,
709944ea 900 .audio_default_std = BTSC,
5200401a 901 .common = {
9afec493
MCC
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},
53ff4c79 919 {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x30},
9afec493
MCC
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},
5200401a
MCC
940 {0, 0, 0},
941 },
942 },
943};
944
709944ea
MCC
945
946static int tm6000_set_audio_std(struct tm6000_core *dev,
947 enum tm6000_audio_std std)
948{
421d1b70
DB
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
709944ea 955 switch (std) {
421d1b70
DB
956#if 0
957 case DK_MONO:
958 mono_flag = 1;
959 break;
960 case DK_A2_1:
961 break;
962 case DK_A2_3:
963 areg_05 = 0x0b;
964 break;
965 case BG_MONO:
966 mono_flag = 1;
967 areg_05 = 0x05;
968 break;
969#endif
709944ea 970 case BG_NICAM:
421d1b70
DB
971 areg_05 = 0x07;
972 nicam_flag = 1;
709944ea
MCC
973 break;
974 case BTSC:
421d1b70 975 areg_05 = 0x02;
709944ea
MCC
976 break;
977 case BG_A2:
421d1b70 978 areg_05 = 0x05;
709944ea
MCC
979 break;
980 case DK_NICAM:
421d1b70
DB
981 areg_05 = 0x06;
982 nicam_flag = 1;
709944ea
MCC
983 break;
984 case EIAJ:
421d1b70 985 areg_05 = 0x02;
709944ea
MCC
986 break;
987 case FM_RADIO:
988 tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x00);
421d1b70 989 tm6000_set_reg(dev, TM6010_REQ08_R02_A_FIX_GAIN_CTRL, 0x04);
709944ea
MCC
990 tm6000_set_reg(dev, TM6010_REQ08_R03_A_AUTO_GAIN_CTRL, 0x00);
991 tm6000_set_reg(dev, TM6010_REQ08_R05_A_STANDARD_MOD, 0x0c);
992 tm6000_set_reg(dev, TM6010_REQ08_R06_A_SOUND_MOD, 0x00);
421d1b70 993 tm6000_set_reg(dev, TM6010_REQ08_R09_A_MAIN_VOL, 0x18);
709944ea
MCC
994 tm6000_set_reg(dev, TM6010_REQ08_R0A_A_I2S_MOD, 0x91);
995 tm6000_set_reg(dev, TM6010_REQ08_R16_A_AGC_GAIN_MAX, 0xfe);
996 tm6000_set_reg(dev, TM6010_REQ08_R17_A_AGC_GAIN_MIN, 0x01);
421d1b70 997 tm6000_set_reg(dev, TM6010_REQ08_R1E_A_GAIN_DEEMPH_OUT, 0x13);
709944ea 998 tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x80);
421d1b70 999 return 0;
709944ea
MCC
1000 break;
1001 case I_NICAM:
421d1b70
DB
1002 areg_05 = 0x08;
1003 nicam_flag = 1;
709944ea
MCC
1004 break;
1005 case KOREA_A2:
421d1b70 1006 areg_05 = 0x04;
709944ea
MCC
1007 break;
1008 case L_NICAM:
421d1b70
DB
1009 areg_02 = 0x02; /* GC1 Fixed gain +12dB */
1010 areg_05 = 0x0a;
1011 nicam_flag = 1;
709944ea
MCC
1012 break;
1013 }
421d1b70
DB
1014
1015#if 0
1016 switch (tv_audio_mode) {
1017 case TV_MONO:
1018 areg_06 = (nicam_flag) ? 0x03 : 0x00;
1019 break;
1020 case TV_LANG_A:
1021 areg_06 = 0x00;
1022 break;
1023 case TV_LANG_B:
1024 areg_06 = 0x01;
1025 break;
1026 }
1027#endif
1028
1029 if (mono_flag)
1030 areg_06 = 0x00;
1031
1032 tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x00);
1033 tm6000_set_reg(dev, TM6010_REQ08_R02_A_FIX_GAIN_CTRL, areg_02);
1034 tm6000_set_reg(dev, TM6010_REQ08_R03_A_AUTO_GAIN_CTRL, 0x00);
1035 tm6000_set_reg(dev, TM6010_REQ08_R04_A_SIF_AMP_CTRL, 0xa0);
1036 tm6000_set_reg(dev, TM6010_REQ08_R05_A_STANDARD_MOD, areg_05);
1037 tm6000_set_reg(dev, TM6010_REQ08_R06_A_SOUND_MOD, areg_06);
1038 tm6000_set_reg(dev, TM6010_REQ08_R07_A_LEFT_VOL, 0x00);
1039 tm6000_set_reg(dev, TM6010_REQ08_R08_A_RIGHT_VOL, 0x00);
1040 tm6000_set_reg(dev, TM6010_REQ08_R09_A_MAIN_VOL, 0x08);
1041 tm6000_set_reg(dev, TM6010_REQ08_R0A_A_I2S_MOD, 0x91);
1042 tm6000_set_reg(dev, TM6010_REQ08_R0B_A_ASD_THRES1, 0x20);
1043 tm6000_set_reg(dev, TM6010_REQ08_R0C_A_ASD_THRES2, 0x12);
1044 tm6000_set_reg(dev, TM6010_REQ08_R0D_A_AMD_THRES, 0x20);
1045 tm6000_set_reg(dev, TM6010_REQ08_R0E_A_MONO_THRES1, 0xf0);
1046 tm6000_set_reg(dev, TM6010_REQ08_R0F_A_MONO_THRES2, 0x80);
1047 tm6000_set_reg(dev, TM6010_REQ08_R10_A_MUTE_THRES1, 0xc0);
1048 tm6000_set_reg(dev, TM6010_REQ08_R11_A_MUTE_THRES2, 0x80);
1049 tm6000_set_reg(dev, TM6010_REQ08_R12_A_AGC_U, 0x12);
1050 tm6000_set_reg(dev, TM6010_REQ08_R13_A_AGC_ERR_T, 0xfe);
1051 tm6000_set_reg(dev, TM6010_REQ08_R14_A_AGC_GAIN_INIT, 0x20);
1052 tm6000_set_reg(dev, TM6010_REQ08_R15_A_AGC_STEP_THR, 0x14);
1053 tm6000_set_reg(dev, TM6010_REQ08_R16_A_AGC_GAIN_MAX, 0xfe);
1054 tm6000_set_reg(dev, TM6010_REQ08_R17_A_AGC_GAIN_MIN, 0x01);
1055 tm6000_set_reg(dev, TM6010_REQ08_R18_A_TR_CTRL, 0xa0);
1056 tm6000_set_reg(dev, TM6010_REQ08_R19_A_FH_2FH_GAIN, 0x32);
1057 tm6000_set_reg(dev, TM6010_REQ08_R1A_A_NICAM_SER_MAX, 0x64);
1058 tm6000_set_reg(dev, TM6010_REQ08_R1B_A_NICAM_SER_MIN, 0x20);
1059 tm6000_set_reg(dev, REQ_08_SET_GET_AVREG_BIT, 0x1c, 0x00);
1060 tm6000_set_reg(dev, REQ_08_SET_GET_AVREG_BIT, 0x1d, 0x00);
1061 tm6000_set_reg(dev, TM6010_REQ08_R1E_A_GAIN_DEEMPH_OUT, 0x13);
1062 tm6000_set_reg(dev, TM6010_REQ08_R1F_A_TEST_INTF_SEL, 0x00);
1063 tm6000_set_reg(dev, TM6010_REQ08_R20_A_TEST_PIN_SEL, 0x00);
1064 tm6000_set_reg(dev, TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3);
1065 tm6000_set_reg(dev, TM6010_REQ08_R06_A_SOUND_MOD, 0x00);
1066 tm6000_set_reg(dev, TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc);
1067 tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x80);
1068
709944ea
MCC
1069 return 0;
1070}
1071
5200401a
MCC
1072void tm6000_get_std_res(struct tm6000_core *dev)
1073{
1074 /* Currently, those are the only supported resoltions */
52e0a72a 1075 if (dev->norm & V4L2_STD_525_60)
5200401a 1076 dev->height = 480;
52e0a72a 1077 else
5200401a 1078 dev->height = 576;
52e0a72a 1079
5200401a
MCC
1080 dev->width = 720;
1081}
1082
1083static int tm6000_load_std(struct tm6000_core *dev,
1084 struct tm6000_reg_settings *set, int max_size)
1085{
1086 int i, rc;
1087
1088 /* Load board's initialization table */
1089 for (i = 0; max_size; i++) {
1090 if (!set[i].req)
1091 return 0;
1092
29c389be
MCC
1093 if ((dev->dev_type != TM6010) &&
1094 (set[i].req == REQ_08_SET_GET_AVREG_BIT))
1095 continue;
0ef4b05a 1096
5200401a
MCC
1097 rc = tm6000_set_reg(dev, set[i].req, set[i].reg, set[i].value);
1098 if (rc < 0) {
1099 printk(KERN_ERR "Error %i while setting "
1100 "req %d, reg %d to value %d\n",
1101 rc, set[i].req, set[i].reg, set[i].value);
1102 return rc;
1103 }
1104 }
1105
1106 return 0;
1107}
1108
1109static int tm6000_set_tv(struct tm6000_core *dev, int pos)
1110{
1111 int rc;
1112
0ef4b05a
MCC
1113 /* FIXME: This code is for tm6010 - not tested yet - doesn't work with
1114 tm5600
1115 */
1116
1117 /* FIXME: This is tuner-dependent */
1118 int nosif = 0;
1119
1120 if (nosif) {
1121 rc = tm6000_load_std(dev, tv_stds[pos].nosif,
1122 sizeof(tv_stds[pos].nosif));
1123 } else {
1124 rc = tm6000_load_std(dev, tv_stds[pos].sif,
1125 sizeof(tv_stds[pos].sif));
1126 }
1127 if (rc < 0)
1128 return rc;
5200401a
MCC
1129 rc = tm6000_load_std(dev, tv_stds[pos].common,
1130 sizeof(tv_stds[pos].common));
1131
709944ea
MCC
1132 tm6000_set_audio_std(dev, tv_stds[pos].audio_default_std);
1133
5200401a
MCC
1134 return rc;
1135}
1136
1137int tm6000_set_standard(struct tm6000_core *dev, v4l2_std_id * norm)
1138{
1139 int i, rc = 0;
1140
1141 dev->norm = *norm;
1142 tm6000_get_std_res(dev);
1143
1144 switch (dev->input) {
1145 case TM6000_INPUT_TV:
1146 for (i = 0; i < ARRAY_SIZE(tv_stds); i++) {
1147 if (*norm & tv_stds[i].id) {
1148 rc = tm6000_set_tv(dev, i);
1149 goto ret;
1150 }
1151 }
1152 return -EINVAL;
1153 case TM6000_INPUT_SVIDEO:
1154 for (i = 0; i < ARRAY_SIZE(svideo_stds); i++) {
1155 if (*norm & svideo_stds[i].id) {
1156 rc = tm6000_load_std(dev, svideo_stds[i].common,
1157 sizeof(svideo_stds[i].
1158 common));
709944ea
MCC
1159 tm6000_set_audio_std(dev, svideo_stds[i].audio_default_std);
1160
5200401a
MCC
1161 goto ret;
1162 }
1163 }
1164 return -EINVAL;
1165 case TM6000_INPUT_COMPOSITE:
1166 for (i = 0; i < ARRAY_SIZE(composite_stds); i++) {
1167 if (*norm & composite_stds[i].id) {
1168 rc = tm6000_load_std(dev,
1169 composite_stds[i].common,
1170 sizeof(composite_stds[i].
1171 common));
709944ea 1172 tm6000_set_audio_std(dev, composite_stds[i].audio_default_std);
5200401a
MCC
1173 goto ret;
1174 }
1175 }
1176 return -EINVAL;
1177 }
1178
1179ret:
1180 if (rc < 0)
1181 return rc;
1182
1183 msleep(40);
1184
29c389be 1185
5200401a
MCC
1186 return 0;
1187}