22
22
#include "tm6000.h"
23
23
#include "tm6000-regs.h"
25
static unsigned int tm6010_a_mode = 0;
26
module_param(tm6010_a_mode, int, 0644);
27
MODULE_PARM_DESC(tm6010_a_mode, "set tm6010 sif audio mode");
25
29
struct tm6000_reg_settings {
28
32
unsigned char value;
31
enum tm6000_audio_std {
43
struct tm6000_std_tv_settings {
45
enum tm6000_audio_std audio_default_std;
47
struct tm6000_reg_settings sif[12];
48
struct tm6000_reg_settings nosif[12];
49
struct tm6000_reg_settings common[26];
52
36
struct tm6000_std_settings {
54
enum tm6000_audio_std audio_default_std;
55
struct tm6000_reg_settings common[37];
58
static struct tm6000_std_tv_settings tv_stds[] = {
61
.audio_default_std = BTSC,
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},
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},
91
{TM6010_REQ07_R3F_RESET, 0x01},
92
{TM6010_REQ07_R00_VIDEO_CONTROL0, 0x04},
93
{TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
94
{TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
95
{TM6010_REQ07_R03_YC_SEP_CONTROL, 0x00},
96
{TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
97
{TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e},
98
{TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x83},
99
{TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x0a},
100
{TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xe0},
101
{TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
102
{TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
103
{TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
104
{TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
105
{TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x88},
106
{TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x20},
107
{TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0x61},
108
{TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c},
109
{TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
110
{TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52},
111
{TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
113
{TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc},
114
{TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
116
{TM6010_REQ07_R3F_RESET, 0x00},
121
.id = V4L2_STD_PAL_Nc,
122
.audio_default_std = BTSC,
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},
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},
152
{TM6010_REQ07_R3F_RESET, 0x01},
153
{TM6010_REQ07_R00_VIDEO_CONTROL0, 0x36},
154
{TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
155
{TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
156
{TM6010_REQ07_R03_YC_SEP_CONTROL, 0x02},
157
{TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
158
{TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e},
159
{TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x91},
160
{TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x1f},
161
{TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0x0c},
162
{TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
163
{TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
164
{TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
165
{TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
166
{TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c},
167
{TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2c},
168
{TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
169
{TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c},
170
{TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
171
{TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52},
172
{TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
174
{TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc},
175
{TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
177
{TM6010_REQ07_R3F_RESET, 0x00},
183
.audio_default_std = BG_A2,
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},
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},
213
{TM6010_REQ07_R3F_RESET, 0x01},
214
{TM6010_REQ07_R00_VIDEO_CONTROL0, 0x32},
215
{TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
216
{TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
217
{TM6010_REQ07_R03_YC_SEP_CONTROL, 0x02},
218
{TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
219
{TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x25},
220
{TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0xd5},
221
{TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x63},
222
{TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0x50},
223
{TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
224
{TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
225
{TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
226
{TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
227
{TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c},
228
{TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2c},
229
{TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
230
{TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c},
231
{TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
232
{TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52},
233
{TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
235
{TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc},
236
{TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
238
{TM6010_REQ07_R3F_RESET, 0x00},
243
.id = V4L2_STD_SECAM_B | V4L2_STD_SECAM_G,
244
.audio_default_std = BG_NICAM,
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},
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},
274
{TM6010_REQ07_R3F_RESET, 0x01},
275
{TM6010_REQ07_R00_VIDEO_CONTROL0, 0x38},
276
{TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
277
{TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
278
{TM6010_REQ07_R03_YC_SEP_CONTROL, 0x02},
279
{TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
280
{TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x24},
281
{TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x92},
282
{TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0xe8},
283
{TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xed},
284
{TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
285
{TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
286
{TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
287
{TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
288
{TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c},
289
{TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2c},
290
{TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1},
291
{TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x2c},
292
{TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x18},
293
{TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x42},
294
{TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0xFF},
296
{TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
298
{TM6010_REQ07_R3F_RESET, 0x00},
302
.id = V4L2_STD_SECAM_DK,
303
.audio_default_std = DK_NICAM,
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},
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},
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},
355
{TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
357
{TM6010_REQ07_R3F_RESET, 0x00},
362
.audio_default_std = BTSC,
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},
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},
392
{TM6010_REQ07_R3F_RESET, 0x01},
393
{TM6010_REQ07_R00_VIDEO_CONTROL0, 0x00},
394
{TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0f},
395
{TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f},
396
{TM6010_REQ07_R03_YC_SEP_CONTROL, 0x00},
397
{TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31},
398
{TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e},
399
{TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x8b},
400
{TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0xa2},
401
{TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xe9},
402
{TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c},
403
{TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc},
404
{TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc},
405
{TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd},
406
{TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x88},
407
{TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x22},
408
{TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0x61},
409
{TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x1c},
410
{TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c},
411
{TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x42},
412
{TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F},
414
{TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdd},
415
{TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07},
417
{TM6010_REQ07_R3F_RESET, 0x00},
38
struct tm6000_reg_settings common[27];
424
41
static struct tm6000_std_settings composite_stds[] = {
426
43
.id = V4L2_STD_PAL_M,
427
.audio_default_std = BTSC,
429
{TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0},
430
{TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf4},
431
{TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3},
432
{TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0x0f},
433
{TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1},
434
{TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0},
435
{TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2},
436
{TM6010_REQ08_RED_GAIN_SEL, 0xe8},
437
{TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x68},
438
{TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc},
439
{TM6010_REQ07_RFE_POWER_DOWN, 0x8b},
441
45
{TM6010_REQ07_R3F_RESET, 0x01},
442
46
{TM6010_REQ07_R00_VIDEO_CONTROL0, 0x04},
443
47
{TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e},
1109
static int tm6000_set_tv(struct tm6000_core *dev, int pos)
1113
/* FIXME: This code is for tm6010 - not tested yet - doesn't work with
1117
/* FIXME: This is tuner-dependent */
1121
rc = tm6000_load_std(dev, tv_stds[pos].nosif,
1122
sizeof(tv_stds[pos].nosif));
1124
rc = tm6000_load_std(dev, tv_stds[pos].sif,
1125
sizeof(tv_stds[pos].sif));
1129
rc = tm6000_load_std(dev, tv_stds[pos].common,
1130
sizeof(tv_stds[pos].common));
1132
tm6000_set_audio_std(dev, tv_stds[pos].audio_default_std);
1137
int tm6000_set_standard(struct tm6000_core *dev, v4l2_std_id * norm)
526
int tm6000_set_standard(struct tm6000_core *dev)
1142
534
tm6000_get_std_res(dev);
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);
1153
case TM6000_INPUT_SVIDEO:
540
if (dev->dev_type == TM6010) {
541
switch (dev->vinput[dev->input].vmux) {
542
case TM6000_VMUX_VIDEO_A:
543
tm6000_set_reg(dev, TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf4);
544
tm6000_set_reg(dev, TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1);
545
tm6000_set_reg(dev, TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0);
546
tm6000_set_reg(dev, TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2);
547
tm6000_set_reg(dev, TM6010_REQ08_RED_GAIN_SEL, 0xe8);
550
case TM6000_VMUX_VIDEO_B:
551
tm6000_set_reg(dev, TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8);
552
tm6000_set_reg(dev, TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1);
553
tm6000_set_reg(dev, TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xe0);
554
tm6000_set_reg(dev, TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2);
555
tm6000_set_reg(dev, TM6010_REQ08_RED_GAIN_SEL, 0xe8);
558
case TM6000_VMUX_VIDEO_AB:
559
tm6000_set_reg(dev, TM6010_REQ08_RE3_ADC_IN1_SEL, 0xfc);
560
tm6000_set_reg(dev, TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf8);
562
tm6000_set_reg(dev, TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf2);
563
tm6000_set_reg(dev, TM6010_REQ08_REB_SIF_GAIN_CTRL, 0xf0);
564
tm6000_set_reg(dev, TM6010_REQ08_REC_REVERSE_YC_CTRL, 0xc2);
565
tm6000_set_reg(dev, TM6010_REQ08_RED_GAIN_SEL, 0xe0);
570
switch (dev->vinput[dev->input].amux) {
571
case TM6000_AMUX_ADC1:
572
tm6000_set_reg_mask(dev, TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG,
575
case TM6000_AMUX_ADC2:
576
tm6000_set_reg_mask(dev, TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG,
579
case TM6000_AMUX_SIF1:
584
tm6000_set_reg(dev, TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3);
585
tm6000_set_reg_mask(dev, TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG,
588
case TM6000_AMUX_SIF2:
593
tm6000_set_reg(dev, TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf7);
594
tm6000_set_reg_mask(dev, TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG,
600
tm6000_set_reg(dev, TM6010_REQ08_RE2_POWER_DOWN_CTRL1, reg_08_e2);
601
tm6000_set_reg(dev, TM6010_REQ08_RE6_POWER_DOWN_CTRL2, reg_08_e6);
602
tm6000_set_reg(dev, TM6010_REQ08_RF1_AADC_POWER_DOWN, reg_08_f1);
603
tm6000_set_reg(dev, TM6010_REQ07_RFE_POWER_DOWN, reg_07_fe);
605
switch (dev->vinput[dev->input].vmux) {
606
case TM6000_VMUX_VIDEO_A:
607
tm6000_set_reg(dev, TM6000_REQ07_RE3_VADC_INP_LPF_SEL1, 0x10);
608
tm6000_set_reg(dev, TM6000_REQ07_RE5_VADC_INP_LPF_SEL2, 0x00);
609
tm6000_set_reg(dev, TM6000_REQ07_RE8_VADC_PWDOWN_CTL, 0x0f);
611
REQ_03_SET_GET_MCU_PIN, dev->vinput[dev->input].v_gpio, 0);
613
case TM6000_VMUX_VIDEO_B:
614
tm6000_set_reg(dev, TM6000_REQ07_RE3_VADC_INP_LPF_SEL1, 0x00);
615
tm6000_set_reg(dev, TM6000_REQ07_RE5_VADC_INP_LPF_SEL2, 0x00);
616
tm6000_set_reg(dev, TM6000_REQ07_RE8_VADC_PWDOWN_CTL, 0x0f);
618
REQ_03_SET_GET_MCU_PIN, dev->vinput[dev->input].v_gpio, 0);
620
case TM6000_VMUX_VIDEO_AB:
621
tm6000_set_reg(dev, TM6000_REQ07_RE3_VADC_INP_LPF_SEL1, 0x10);
622
tm6000_set_reg(dev, TM6000_REQ07_RE5_VADC_INP_LPF_SEL2, 0x10);
623
tm6000_set_reg(dev, TM6000_REQ07_RE8_VADC_PWDOWN_CTL, 0x00);
625
REQ_03_SET_GET_MCU_PIN, dev->vinput[dev->input].v_gpio, 1);
630
switch (dev->vinput[dev->input].amux) {
631
case TM6000_AMUX_ADC1:
632
tm6000_set_reg_mask(dev,
633
TM6000_REQ07_REB_VADC_AADC_MODE, 0x00, 0x0f);
635
case TM6000_AMUX_ADC2:
636
tm6000_set_reg_mask(dev,
637
TM6000_REQ07_REB_VADC_AADC_MODE, 0x04, 0x0f);
643
if (dev->vinput[dev->input].type == TM6000_INPUT_SVIDEO) {
1154
644
for (i = 0; i < ARRAY_SIZE(svideo_stds); i++) {
1155
if (*norm & svideo_stds[i].id) {
645
if (dev->norm & svideo_stds[i].id) {
1156
646
rc = tm6000_load_std(dev, svideo_stds[i].common,
1157
647
sizeof(svideo_stds[i].
1159
tm6000_set_audio_std(dev, svideo_stds[i].audio_default_std);
1165
case TM6000_INPUT_COMPOSITE:
1166
654
for (i = 0; i < ARRAY_SIZE(composite_stds); i++) {
1167
if (*norm & composite_stds[i].id) {
655
if (dev->norm & composite_stds[i].id) {
1168
656
rc = tm6000_load_std(dev,
1169
657
composite_stds[i].common,
1170
658
sizeof(composite_stds[i].
1172
tm6000_set_audio_std(dev, composite_stds[i].audio_default_std);