]>
Commit | Line | Data |
---|---|---|
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 | ||
25 | struct tm6000_reg_settings { | |
26 | unsigned char req; | |
27 | unsigned char reg; | |
28 | unsigned char value; | |
29 | }; | |
30 | ||
709944ea MCC |
31 | enum tm6000_audio_std { |
32 | BG_NICAM, | |
33 | BTSC, | |
34 | BG_A2, | |
35 | DK_NICAM, | |
36 | EIAJ, | |
37 | FM_RADIO, | |
38 | I_NICAM, | |
39 | KOREA_A2, | |
40 | L_NICAM, | |
41 | }; | |
42 | ||
5200401a MCC |
43 | struct 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 | ||
52 | struct 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 | ||
58 | static 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 | ||
424 | static 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 | ||
684 | static 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 | |
946 | static 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 |
1072 | void 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 | ||
1083 | static int tm6000_load_std(struct tm6000_core *dev, | |
1084 | struct tm6000_reg_settings *set, int max_size) | |
1085 | { | |
1086 | int i, rc; | |
1087 | ||
1088 | /* Load board's initialization table */ | |
1089 | for (i = 0; max_size; i++) { | |
1090 | if (!set[i].req) | |
1091 | return 0; | |
1092 | ||
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 | ||
1109 | static 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 | ||
1137 | int tm6000_set_standard(struct tm6000_core *dev, v4l2_std_id * norm) | |
1138 | { | |
1139 | int i, rc = 0; | |
1140 | ||
1141 | dev->norm = *norm; | |
1142 | tm6000_get_std_res(dev); | |
1143 | ||
1144 | switch (dev->input) { | |
1145 | case TM6000_INPUT_TV: | |
1146 | for (i = 0; i < ARRAY_SIZE(tv_stds); i++) { | |
1147 | if (*norm & tv_stds[i].id) { | |
1148 | rc = tm6000_set_tv(dev, i); | |
1149 | goto ret; | |
1150 | } | |
1151 | } | |
1152 | return -EINVAL; | |
1153 | case TM6000_INPUT_SVIDEO: | |
1154 | for (i = 0; i < ARRAY_SIZE(svideo_stds); i++) { | |
1155 | if (*norm & svideo_stds[i].id) { | |
1156 | rc = tm6000_load_std(dev, svideo_stds[i].common, | |
1157 | sizeof(svideo_stds[i]. | |
1158 | common)); | |
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 | ||
1179 | ret: | |
1180 | if (rc < 0) | |
1181 | return rc; | |
1182 | ||
1183 | msleep(40); | |
1184 | ||
29c389be | 1185 | |
5200401a MCC |
1186 | return 0; |
1187 | } |