diff options
author | Mauro Carvalho Chehab <mchehab@redhat.com> | 2010-10-07 01:28:24 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2010-10-20 23:17:51 -0400 |
commit | 709944eae2505eb4c93c0fff4bd4de18dfd8c570 (patch) | |
tree | 9f0575806839aef7a6d266a0e54bbdbe5caed7a2 | |
parent | 39a96b4cf592e79aefd1b4f2b136c20ec7bf10a7 (diff) |
[media] tm6000: add audio standards table
The better is to remove the audio init from tm6000-core and add a
separate per-standard set of tables.
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r-- | drivers/staging/tm6000/tm6000-core.c | 44 | ||||
-rw-r--r-- | drivers/staging/tm6000/tm6000-stds.c | 167 | ||||
-rw-r--r-- | drivers/staging/tm6000/tm6000-video.c | 12 |
3 files changed, 178 insertions, 45 deletions
diff --git a/drivers/staging/tm6000/tm6000-core.c b/drivers/staging/tm6000/tm6000-core.c index 3d825107c09f..1bce43acd3d9 100644 --- a/drivers/staging/tm6000/tm6000-core.c +++ b/drivers/staging/tm6000/tm6000-core.c | |||
@@ -202,6 +202,10 @@ int tm6000_init_analog_mode(struct tm6000_core *dev) | |||
202 | val &= ~0x40; | 202 | val &= ~0x40; |
203 | tm6000_set_reg(dev, TM6010_REQ07_RC0_ACTIVE_VIDEO_SOURCE, val); | 203 | tm6000_set_reg(dev, TM6010_REQ07_RC0_ACTIVE_VIDEO_SOURCE, val); |
204 | 204 | ||
205 | tm6000_set_reg(dev, TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfc); | ||
206 | |||
207 | #if 0 /* FIXME: VBI is standard-dependent */ | ||
208 | |||
205 | /* Init teletext */ | 209 | /* Init teletext */ |
206 | tm6000_set_reg(dev, TM6010_REQ07_R3F_RESET, 0x01); | 210 | tm6000_set_reg(dev, TM6010_REQ07_R3F_RESET, 0x01); |
207 | tm6000_set_reg(dev, TM6010_REQ07_R41_TELETEXT_VBI_CODE1, 0x27); | 211 | tm6000_set_reg(dev, TM6010_REQ07_R41_TELETEXT_VBI_CODE1, 0x27); |
@@ -251,44 +255,7 @@ int tm6000_init_analog_mode(struct tm6000_core *dev) | |||
251 | tm6000_set_reg(dev, TM6010_REQ07_R5B_VBI_TELETEXT_DTO0, 0x4c); | 255 | tm6000_set_reg(dev, TM6010_REQ07_R5B_VBI_TELETEXT_DTO0, 0x4c); |
252 | tm6000_set_reg(dev, TM6010_REQ07_R40_TELETEXT_VBI_CODE0, 0x01); | 256 | tm6000_set_reg(dev, TM6010_REQ07_R40_TELETEXT_VBI_CODE0, 0x01); |
253 | tm6000_set_reg(dev, TM6010_REQ07_R3F_RESET, 0x00); | 257 | tm6000_set_reg(dev, TM6010_REQ07_R3F_RESET, 0x00); |
254 | 258 | #endif | |
255 | |||
256 | /* Init audio */ | ||
257 | tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x00); | ||
258 | tm6000_set_reg(dev, TM6010_REQ08_R02_A_FIX_GAIN_CTRL, 0x04); | ||
259 | tm6000_set_reg(dev, TM6010_REQ08_R03_A_AUTO_GAIN_CTRL, 0x00); | ||
260 | tm6000_set_reg(dev, TM6010_REQ08_R04_A_SIF_AMP_CTRL, 0xa0); | ||
261 | tm6000_set_reg(dev, TM6010_REQ08_R06_A_SOUND_MOD, 0x06); | ||
262 | tm6000_set_reg(dev, TM6010_REQ08_R07_A_LEFT_VOL, 0x00); | ||
263 | tm6000_set_reg(dev, TM6010_REQ08_R08_A_RIGHT_VOL, 0x00); | ||
264 | tm6000_set_reg(dev, TM6010_REQ08_R09_A_MAIN_VOL, 0x08); | ||
265 | tm6000_set_reg(dev, TM6010_REQ08_R0A_A_I2S_MOD, 0x91); | ||
266 | tm6000_set_reg(dev, TM6010_REQ08_R0B_A_ASD_THRES1, 0x20); | ||
267 | tm6000_set_reg(dev, TM6010_REQ08_R0C_A_ASD_THRES2, 0x12); | ||
268 | tm6000_set_reg(dev, TM6010_REQ08_R0D_A_AMD_THRES, 0x20); | ||
269 | tm6000_set_reg(dev, TM6010_REQ08_R0E_A_MONO_THRES1, 0xf0); | ||
270 | tm6000_set_reg(dev, TM6010_REQ08_R0F_A_MONO_THRES2, 0x80); | ||
271 | tm6000_set_reg(dev, TM6010_REQ08_R10_A_MUTE_THRES1, 0xc0); | ||
272 | tm6000_set_reg(dev, TM6010_REQ08_R11_A_MUTE_THRES2, 0x80); | ||
273 | tm6000_set_reg(dev, TM6010_REQ08_R12_A_AGC_U, 0x12); | ||
274 | tm6000_set_reg(dev, TM6010_REQ08_R13_A_AGC_ERR_T, 0xfe); | ||
275 | tm6000_set_reg(dev, TM6010_REQ08_R14_A_AGC_GAIN_INIT, 0x20); | ||
276 | tm6000_set_reg(dev, TM6010_REQ08_R15_A_AGC_STEP_THR, 0x14); | ||
277 | tm6000_set_reg(dev, TM6010_REQ08_R16_A_AGC_GAIN_MAX, 0xfe); | ||
278 | tm6000_set_reg(dev, TM6010_REQ08_R17_A_AGC_GAIN_MIN, 0x01); | ||
279 | tm6000_set_reg(dev, TM6010_REQ08_R18_A_TR_CTRL, 0xa0); | ||
280 | tm6000_set_reg(dev, TM6010_REQ08_R19_A_FH_2FH_GAIN, 0x32); | ||
281 | tm6000_set_reg(dev, TM6010_REQ08_R1A_A_NICAM_SER_MAX, 0x64); | ||
282 | tm6000_set_reg(dev, TM6010_REQ08_R1B_A_NICAM_SER_MIN, 0x20); | ||
283 | tm6000_set_reg(dev, REQ_08_SET_GET_AVREG_BIT, 0x1c, 0x00); | ||
284 | tm6000_set_reg(dev, REQ_08_SET_GET_AVREG_BIT, 0x1d, 0x00); | ||
285 | tm6000_set_reg(dev, TM6010_REQ08_R1E_A_GAIN_DEEMPH_OUT, 0x13); | ||
286 | tm6000_set_reg(dev, TM6010_REQ08_R1F_A_TEST_INTF_SEL, 0x00); | ||
287 | tm6000_set_reg(dev, TM6010_REQ08_R20_A_TEST_PIN_SEL, 0x00); | ||
288 | tm6000_set_reg(dev, TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3); | ||
289 | tm6000_set_reg(dev, TM6010_REQ08_R06_A_SOUND_MOD, 0x00); | ||
290 | tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x80); | ||
291 | |||
292 | } else { | 259 | } else { |
293 | /* Enables soft reset */ | 260 | /* Enables soft reset */ |
294 | tm6000_set_reg(dev, TM6010_REQ07_R3F_RESET, 0x01); | 261 | tm6000_set_reg(dev, TM6010_REQ07_R3F_RESET, 0x01); |
@@ -370,7 +337,6 @@ int tm6000_init_digital_mode(struct tm6000_core *dev) | |||
370 | tm6000_set_reg(dev, TM6010_REQ07_RFE_POWER_DOWN, 0x28); | 337 | tm6000_set_reg(dev, TM6010_REQ07_RFE_POWER_DOWN, 0x28); |
371 | tm6000_set_reg(dev, TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xfc); | 338 | tm6000_set_reg(dev, TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xfc); |
372 | tm6000_set_reg(dev, TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0xff); | 339 | tm6000_set_reg(dev, TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0xff); |
373 | tm6000_set_reg(dev, TM6010_REQ08_RF1_AADC_POWER_DOWN, 0xfe); | ||
374 | tm6000_read_write_usb(dev, 0xc0, 0x0e, 0x00c2, 0x0008, buf, 2); | 340 | tm6000_read_write_usb(dev, 0xc0, 0x0e, 0x00c2, 0x0008, buf, 2); |
375 | printk(KERN_INFO"buf %#x %#x\n", buf[0], buf[1]); | 341 | printk(KERN_INFO"buf %#x %#x\n", buf[0], buf[1]); |
376 | } else { | 342 | } else { |
diff --git a/drivers/staging/tm6000/tm6000-stds.c b/drivers/staging/tm6000/tm6000-stds.c index fe22f427491a..506670282875 100644 --- a/drivers/staging/tm6000/tm6000-stds.c +++ b/drivers/staging/tm6000/tm6000-stds.c | |||
@@ -28,8 +28,22 @@ struct tm6000_reg_settings { | |||
28 | unsigned char value; | 28 | unsigned char value; |
29 | }; | 29 | }; |
30 | 30 | ||
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 | |||
31 | struct tm6000_std_tv_settings { | 43 | struct tm6000_std_tv_settings { |
32 | v4l2_std_id id; | 44 | v4l2_std_id id; |
45 | enum tm6000_audio_std audio_default_std; | ||
46 | |||
33 | struct tm6000_reg_settings sif[12]; | 47 | struct tm6000_reg_settings sif[12]; |
34 | struct tm6000_reg_settings nosif[12]; | 48 | struct tm6000_reg_settings nosif[12]; |
35 | struct tm6000_reg_settings common[26]; | 49 | struct tm6000_reg_settings common[26]; |
@@ -37,12 +51,14 @@ struct tm6000_std_tv_settings { | |||
37 | 51 | ||
38 | struct tm6000_std_settings { | 52 | struct tm6000_std_settings { |
39 | v4l2_std_id id; | 53 | v4l2_std_id id; |
54 | enum tm6000_audio_std audio_default_std; | ||
40 | struct tm6000_reg_settings common[37]; | 55 | struct tm6000_reg_settings common[37]; |
41 | }; | 56 | }; |
42 | 57 | ||
43 | static struct tm6000_std_tv_settings tv_stds[] = { | 58 | static struct tm6000_std_tv_settings tv_stds[] = { |
44 | { | 59 | { |
45 | .id = V4L2_STD_PAL_M, | 60 | .id = V4L2_STD_PAL_M, |
61 | .audio_default_std = BTSC, | ||
46 | .sif = { | 62 | .sif = { |
47 | {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf2}, | 63 | {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf2}, |
48 | {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8}, | 64 | {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8}, |
@@ -96,12 +112,13 @@ static struct tm6000_std_tv_settings tv_stds[] = { | |||
96 | 112 | ||
97 | {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc}, | 113 | {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc}, |
98 | {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07}, | 114 | {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07}, |
99 | {TM6010_REQ08_R05_A_STANDARD_MOD, 0x21}, /* FIXME */ | ||
100 | {TM6010_REQ07_R3F_RESET, 0x00}, | 115 | {TM6010_REQ07_R3F_RESET, 0x00}, |
116 | |||
101 | {0, 0, 0}, | 117 | {0, 0, 0}, |
102 | }, | 118 | }, |
103 | }, { | 119 | }, { |
104 | .id = V4L2_STD_PAL_Nc, | 120 | .id = V4L2_STD_PAL_Nc, |
121 | .audio_default_std = BTSC, | ||
105 | .sif = { | 122 | .sif = { |
106 | {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf2}, | 123 | {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf2}, |
107 | {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8}, | 124 | {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8}, |
@@ -161,6 +178,7 @@ static struct tm6000_std_tv_settings tv_stds[] = { | |||
161 | }, | 178 | }, |
162 | }, { | 179 | }, { |
163 | .id = V4L2_STD_PAL, | 180 | .id = V4L2_STD_PAL, |
181 | .audio_default_std = BG_A2, | ||
164 | .sif = { | 182 | .sif = { |
165 | {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf2}, | 183 | {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf2}, |
166 | {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8}, | 184 | {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8}, |
@@ -220,6 +238,7 @@ static struct tm6000_std_tv_settings tv_stds[] = { | |||
220 | }, | 238 | }, |
221 | }, { | 239 | }, { |
222 | .id = V4L2_STD_SECAM, | 240 | .id = V4L2_STD_SECAM, |
241 | .audio_default_std = BG_NICAM, | ||
223 | .sif = { | 242 | .sif = { |
224 | {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf2}, | 243 | {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf2}, |
225 | {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8}, | 244 | {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8}, |
@@ -278,6 +297,7 @@ static struct tm6000_std_tv_settings tv_stds[] = { | |||
278 | }, | 297 | }, |
279 | }, { | 298 | }, { |
280 | .id = V4L2_STD_NTSC, | 299 | .id = V4L2_STD_NTSC, |
300 | .audio_default_std = BTSC, | ||
281 | .sif = { | 301 | .sif = { |
282 | {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf2}, | 302 | {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf2}, |
283 | {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8}, | 303 | {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf8}, |
@@ -341,6 +361,7 @@ static struct tm6000_std_tv_settings tv_stds[] = { | |||
341 | static struct tm6000_std_settings composite_stds[] = { | 361 | static struct tm6000_std_settings composite_stds[] = { |
342 | { | 362 | { |
343 | .id = V4L2_STD_PAL_M, | 363 | .id = V4L2_STD_PAL_M, |
364 | .audio_default_std = BTSC, | ||
344 | .common = { | 365 | .common = { |
345 | {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0}, | 366 | {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0}, |
346 | {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf4}, | 367 | {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf4}, |
@@ -383,6 +404,7 @@ static struct tm6000_std_settings composite_stds[] = { | |||
383 | }, | 404 | }, |
384 | }, { | 405 | }, { |
385 | .id = V4L2_STD_PAL_Nc, | 406 | .id = V4L2_STD_PAL_Nc, |
407 | .audio_default_std = BTSC, | ||
386 | .common = { | 408 | .common = { |
387 | {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0}, | 409 | {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0}, |
388 | {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf4}, | 410 | {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf4}, |
@@ -425,6 +447,7 @@ static struct tm6000_std_settings composite_stds[] = { | |||
425 | }, | 447 | }, |
426 | }, { | 448 | }, { |
427 | .id = V4L2_STD_PAL, | 449 | .id = V4L2_STD_PAL, |
450 | .audio_default_std = BG_A2, | ||
428 | .common = { | 451 | .common = { |
429 | {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0}, | 452 | {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0}, |
430 | {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf4}, | 453 | {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf4}, |
@@ -467,6 +490,7 @@ static struct tm6000_std_settings composite_stds[] = { | |||
467 | }, | 490 | }, |
468 | }, { | 491 | }, { |
469 | .id = V4L2_STD_SECAM, | 492 | .id = V4L2_STD_SECAM, |
493 | .audio_default_std = BG_NICAM, | ||
470 | .common = { | 494 | .common = { |
471 | {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0}, | 495 | {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0}, |
472 | {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf4}, | 496 | {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf4}, |
@@ -508,6 +532,7 @@ static struct tm6000_std_settings composite_stds[] = { | |||
508 | }, | 532 | }, |
509 | }, { | 533 | }, { |
510 | .id = V4L2_STD_NTSC, | 534 | .id = V4L2_STD_NTSC, |
535 | .audio_default_std = BTSC, | ||
511 | .common = { | 536 | .common = { |
512 | {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0}, | 537 | {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0}, |
513 | {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf4}, | 538 | {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf4}, |
@@ -554,6 +579,7 @@ static struct tm6000_std_settings composite_stds[] = { | |||
554 | static struct tm6000_std_settings svideo_stds[] = { | 579 | static struct tm6000_std_settings svideo_stds[] = { |
555 | { | 580 | { |
556 | .id = V4L2_STD_PAL_M, | 581 | .id = V4L2_STD_PAL_M, |
582 | .audio_default_std = BTSC, | ||
557 | .common = { | 583 | .common = { |
558 | {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0}, | 584 | {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0}, |
559 | {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xfc}, | 585 | {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xfc}, |
@@ -596,6 +622,7 @@ static struct tm6000_std_settings svideo_stds[] = { | |||
596 | }, | 622 | }, |
597 | }, { | 623 | }, { |
598 | .id = V4L2_STD_PAL_Nc, | 624 | .id = V4L2_STD_PAL_Nc, |
625 | .audio_default_std = BTSC, | ||
599 | .common = { | 626 | .common = { |
600 | {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0}, | 627 | {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0}, |
601 | {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xfc}, | 628 | {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xfc}, |
@@ -638,6 +665,7 @@ static struct tm6000_std_settings svideo_stds[] = { | |||
638 | }, | 665 | }, |
639 | }, { | 666 | }, { |
640 | .id = V4L2_STD_PAL, | 667 | .id = V4L2_STD_PAL, |
668 | .audio_default_std = BG_A2, | ||
641 | .common = { | 669 | .common = { |
642 | {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0}, | 670 | {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0}, |
643 | {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xfc}, | 671 | {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xfc}, |
@@ -680,6 +708,7 @@ static struct tm6000_std_settings svideo_stds[] = { | |||
680 | }, | 708 | }, |
681 | }, { | 709 | }, { |
682 | .id = V4L2_STD_SECAM, | 710 | .id = V4L2_STD_SECAM, |
711 | .audio_default_std = BG_NICAM, | ||
683 | .common = { | 712 | .common = { |
684 | {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0}, | 713 | {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0}, |
685 | {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xfc}, | 714 | {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xfc}, |
@@ -721,6 +750,7 @@ static struct tm6000_std_settings svideo_stds[] = { | |||
721 | }, | 750 | }, |
722 | }, { | 751 | }, { |
723 | .id = V4L2_STD_NTSC, | 752 | .id = V4L2_STD_NTSC, |
753 | .audio_default_std = BTSC, | ||
724 | .common = { | 754 | .common = { |
725 | {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0}, | 755 | {TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xf0}, |
726 | {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xfc}, | 756 | {TM6010_REQ08_RE3_ADC_IN1_SEL, 0xfc}, |
@@ -765,6 +795,136 @@ static struct tm6000_std_settings svideo_stds[] = { | |||
765 | }, | 795 | }, |
766 | }; | 796 | }; |
767 | 797 | ||
798 | |||
799 | static int tm6000_set_audio_std(struct tm6000_core *dev, | ||
800 | enum tm6000_audio_std std) | ||
801 | { | ||
802 | switch (std) { | ||
803 | case BG_NICAM: | ||
804 | tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x00); | ||
805 | tm6000_set_reg(dev, TM6010_REQ08_R02_A_FIX_GAIN_CTRL, 0x11); | ||
806 | tm6000_set_reg(dev, TM6010_REQ08_R03_A_AUTO_GAIN_CTRL, 0x00); | ||
807 | tm6000_set_reg(dev, TM6010_REQ08_R05_A_STANDARD_MOD, 0x01); | ||
808 | tm6000_set_reg(dev, TM6010_REQ08_R06_A_SOUND_MOD, 0x06); | ||
809 | tm6000_set_reg(dev, TM6010_REQ08_R0A_A_I2S_MOD, 0x91); | ||
810 | tm6000_set_reg(dev, TM6010_REQ08_R16_A_AGC_GAIN_MAX, 0xfe); | ||
811 | tm6000_set_reg(dev, TM6010_REQ08_R17_A_AGC_GAIN_MIN, 0x01); | ||
812 | tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x80); | ||
813 | break; | ||
814 | case BTSC: | ||
815 | tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x00); | ||
816 | tm6000_set_reg(dev, TM6010_REQ08_R02_A_FIX_GAIN_CTRL, 0x04); | ||
817 | tm6000_set_reg(dev, TM6010_REQ08_R03_A_AUTO_GAIN_CTRL, 0x00); | ||
818 | tm6000_set_reg(dev, TM6010_REQ08_R05_A_STANDARD_MOD, 0x02); | ||
819 | tm6000_set_reg(dev, TM6010_REQ08_R06_A_SOUND_MOD, 0x06); | ||
820 | tm6000_set_reg(dev, TM6010_REQ08_R09_A_MAIN_VOL, 0x08); | ||
821 | tm6000_set_reg(dev, TM6010_REQ08_R0A_A_I2S_MOD, 0x91); | ||
822 | tm6000_set_reg(dev, TM6010_REQ08_R0E_A_MONO_THRES1, 0xf0); | ||
823 | tm6000_set_reg(dev, TM6010_REQ08_R0F_A_MONO_THRES2, 0x80); | ||
824 | tm6000_set_reg(dev, TM6010_REQ08_R10_A_MUTE_THRES1, 0xc0); | ||
825 | tm6000_set_reg(dev, TM6010_REQ08_R11_A_MUTE_THRES2, 0x80); | ||
826 | tm6000_set_reg(dev, TM6010_REQ08_R16_A_AGC_GAIN_MAX, 0xfe); | ||
827 | tm6000_set_reg(dev, TM6010_REQ08_R17_A_AGC_GAIN_MIN, 0x01); | ||
828 | tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x80); | ||
829 | break; | ||
830 | case BG_A2: | ||
831 | tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x00); | ||
832 | tm6000_set_reg(dev, TM6010_REQ08_R02_A_FIX_GAIN_CTRL, 0x04); | ||
833 | tm6000_set_reg(dev, TM6010_REQ08_R03_A_AUTO_GAIN_CTRL, 0x00); | ||
834 | tm6000_set_reg(dev, TM6010_REQ08_R05_A_STANDARD_MOD, 0x05); | ||
835 | tm6000_set_reg(dev, TM6010_REQ08_R06_A_SOUND_MOD, 0x06); | ||
836 | tm6000_set_reg(dev, TM6010_REQ08_R09_A_MAIN_VOL, 0x08); | ||
837 | tm6000_set_reg(dev, TM6010_REQ08_R0A_A_I2S_MOD, 0x91); | ||
838 | tm6000_set_reg(dev, TM6010_REQ08_R0E_A_MONO_THRES1, 0xf0); | ||
839 | tm6000_set_reg(dev, TM6010_REQ08_R0F_A_MONO_THRES2, 0x80); | ||
840 | tm6000_set_reg(dev, TM6010_REQ08_R10_A_MUTE_THRES1, 0xc0); | ||
841 | tm6000_set_reg(dev, TM6010_REQ08_R11_A_MUTE_THRES2, 0x80); | ||
842 | tm6000_set_reg(dev, TM6010_REQ08_R16_A_AGC_GAIN_MAX, 0xfe); | ||
843 | tm6000_set_reg(dev, TM6010_REQ08_R17_A_AGC_GAIN_MIN, 0x01); | ||
844 | tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x80); | ||
845 | break; | ||
846 | case DK_NICAM: | ||
847 | tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x00); | ||
848 | tm6000_set_reg(dev, TM6010_REQ08_R02_A_FIX_GAIN_CTRL, 0x04); | ||
849 | tm6000_set_reg(dev, TM6010_REQ08_R03_A_AUTO_GAIN_CTRL, 0x00); | ||
850 | tm6000_set_reg(dev, TM6010_REQ08_R05_A_STANDARD_MOD, 0x06); | ||
851 | tm6000_set_reg(dev, TM6010_REQ08_R06_A_SOUND_MOD, 0x06); | ||
852 | tm6000_set_reg(dev, TM6010_REQ08_R09_A_MAIN_VOL, 0x08); | ||
853 | tm6000_set_reg(dev, TM6010_REQ08_R0A_A_I2S_MOD, 0x91); | ||
854 | tm6000_set_reg(dev, TM6010_REQ08_R0C_A_ASD_THRES2, 0x0a); | ||
855 | tm6000_set_reg(dev, TM6010_REQ08_R16_A_AGC_GAIN_MAX, 0xfe); | ||
856 | tm6000_set_reg(dev, TM6010_REQ08_R17_A_AGC_GAIN_MIN, 0x01); | ||
857 | tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x80); | ||
858 | break; | ||
859 | case EIAJ: | ||
860 | tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x00); | ||
861 | tm6000_set_reg(dev, TM6010_REQ08_R02_A_FIX_GAIN_CTRL, 0x04); | ||
862 | tm6000_set_reg(dev, TM6010_REQ08_R03_A_AUTO_GAIN_CTRL, 0x00); | ||
863 | tm6000_set_reg(dev, TM6010_REQ08_R05_A_STANDARD_MOD, 0x03); | ||
864 | tm6000_set_reg(dev, TM6010_REQ08_R06_A_SOUND_MOD, 0x06); | ||
865 | tm6000_set_reg(dev, TM6010_REQ08_R09_A_MAIN_VOL, 0x08); | ||
866 | tm6000_set_reg(dev, TM6010_REQ08_R0A_A_I2S_MOD, 0x91); | ||
867 | tm6000_set_reg(dev, TM6010_REQ08_R16_A_AGC_GAIN_MAX, 0xfe); | ||
868 | tm6000_set_reg(dev, TM6010_REQ08_R17_A_AGC_GAIN_MIN, 0x01); | ||
869 | tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x80); | ||
870 | break; | ||
871 | case FM_RADIO: | ||
872 | tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x00); | ||
873 | tm6000_set_reg(dev, TM6010_REQ08_R02_A_FIX_GAIN_CTRL, 0x01); | ||
874 | tm6000_set_reg(dev, TM6010_REQ08_R03_A_AUTO_GAIN_CTRL, 0x00); | ||
875 | tm6000_set_reg(dev, TM6010_REQ08_R05_A_STANDARD_MOD, 0x0c); | ||
876 | tm6000_set_reg(dev, TM6010_REQ08_R06_A_SOUND_MOD, 0x00); | ||
877 | tm6000_set_reg(dev, TM6010_REQ08_R09_A_MAIN_VOL, 0x10); | ||
878 | tm6000_set_reg(dev, TM6010_REQ08_R0A_A_I2S_MOD, 0x91); | ||
879 | tm6000_set_reg(dev, TM6010_REQ08_R16_A_AGC_GAIN_MAX, 0xfe); | ||
880 | tm6000_set_reg(dev, TM6010_REQ08_R17_A_AGC_GAIN_MIN, 0x01); | ||
881 | tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x80); | ||
882 | break; | ||
883 | case I_NICAM: | ||
884 | tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x00); | ||
885 | tm6000_set_reg(dev, TM6010_REQ08_R02_A_FIX_GAIN_CTRL, 0x04); | ||
886 | tm6000_set_reg(dev, TM6010_REQ08_R03_A_AUTO_GAIN_CTRL, 0x00); | ||
887 | tm6000_set_reg(dev, TM6010_REQ08_R05_A_STANDARD_MOD, 0x01); | ||
888 | tm6000_set_reg(dev, TM6010_REQ08_R06_A_SOUND_MOD, 0x06); | ||
889 | tm6000_set_reg(dev, TM6010_REQ08_R09_A_MAIN_VOL, 0x08); | ||
890 | tm6000_set_reg(dev, TM6010_REQ08_R0A_A_I2S_MOD, 0x91); | ||
891 | tm6000_set_reg(dev, TM6010_REQ08_R0C_A_ASD_THRES2, 0x0a); | ||
892 | tm6000_set_reg(dev, TM6010_REQ08_R16_A_AGC_GAIN_MAX, 0xfe); | ||
893 | tm6000_set_reg(dev, TM6010_REQ08_R17_A_AGC_GAIN_MIN, 0x01); | ||
894 | tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x80); | ||
895 | break; | ||
896 | case KOREA_A2: | ||
897 | tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x00); | ||
898 | tm6000_set_reg(dev, TM6010_REQ08_R02_A_FIX_GAIN_CTRL, 0x04); | ||
899 | tm6000_set_reg(dev, TM6010_REQ08_R03_A_AUTO_GAIN_CTRL, 0x00); | ||
900 | tm6000_set_reg(dev, TM6010_REQ08_R05_A_STANDARD_MOD, 0x04); | ||
901 | tm6000_set_reg(dev, TM6010_REQ08_R06_A_SOUND_MOD, 0x06); | ||
902 | tm6000_set_reg(dev, TM6010_REQ08_R09_A_MAIN_VOL, 0x08); | ||
903 | tm6000_set_reg(dev, TM6010_REQ08_R0A_A_I2S_MOD, 0x91); | ||
904 | tm6000_set_reg(dev, TM6010_REQ08_R0E_A_MONO_THRES1, 0xf0); | ||
905 | tm6000_set_reg(dev, TM6010_REQ08_R0F_A_MONO_THRES2, 0x80); | ||
906 | tm6000_set_reg(dev, TM6010_REQ08_R10_A_MUTE_THRES1, 0xc0); | ||
907 | tm6000_set_reg(dev, TM6010_REQ08_R11_A_MUTE_THRES2, 0xf0); | ||
908 | tm6000_set_reg(dev, TM6010_REQ08_R16_A_AGC_GAIN_MAX, 0xfe); | ||
909 | tm6000_set_reg(dev, TM6010_REQ08_R17_A_AGC_GAIN_MIN, 0x01); | ||
910 | tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x80); | ||
911 | break; | ||
912 | case L_NICAM: | ||
913 | tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x00); | ||
914 | tm6000_set_reg(dev, TM6010_REQ08_R02_A_FIX_GAIN_CTRL, 0x02); | ||
915 | tm6000_set_reg(dev, TM6010_REQ08_R03_A_AUTO_GAIN_CTRL, 0x00); | ||
916 | tm6000_set_reg(dev, TM6010_REQ08_R05_A_STANDARD_MOD, 0x0a); | ||
917 | tm6000_set_reg(dev, TM6010_REQ08_R06_A_SOUND_MOD, 0x06); | ||
918 | tm6000_set_reg(dev, TM6010_REQ08_R09_A_MAIN_VOL, 0x08); | ||
919 | tm6000_set_reg(dev, TM6010_REQ08_R0A_A_I2S_MOD, 0x91); | ||
920 | tm6000_set_reg(dev, TM6010_REQ08_R16_A_AGC_GAIN_MAX, 0xfe); | ||
921 | tm6000_set_reg(dev, TM6010_REQ08_R17_A_AGC_GAIN_MIN, 0x01); | ||
922 | tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x80); | ||
923 | break; | ||
924 | } | ||
925 | return 0; | ||
926 | } | ||
927 | |||
768 | void tm6000_get_std_res(struct tm6000_core *dev) | 928 | void tm6000_get_std_res(struct tm6000_core *dev) |
769 | { | 929 | { |
770 | /* Currently, those are the only supported resoltions */ | 930 | /* Currently, those are the only supported resoltions */ |
@@ -825,6 +985,8 @@ static int tm6000_set_tv(struct tm6000_core *dev, int pos) | |||
825 | rc = tm6000_load_std(dev, tv_stds[pos].common, | 985 | rc = tm6000_load_std(dev, tv_stds[pos].common, |
826 | sizeof(tv_stds[pos].common)); | 986 | sizeof(tv_stds[pos].common)); |
827 | 987 | ||
988 | tm6000_set_audio_std(dev, tv_stds[pos].audio_default_std); | ||
989 | |||
828 | return rc; | 990 | return rc; |
829 | } | 991 | } |
830 | 992 | ||
@@ -850,6 +1012,8 @@ int tm6000_set_standard(struct tm6000_core *dev, v4l2_std_id * norm) | |||
850 | rc = tm6000_load_std(dev, svideo_stds[i].common, | 1012 | rc = tm6000_load_std(dev, svideo_stds[i].common, |
851 | sizeof(svideo_stds[i]. | 1013 | sizeof(svideo_stds[i]. |
852 | common)); | 1014 | common)); |
1015 | tm6000_set_audio_std(dev, svideo_stds[i].audio_default_std); | ||
1016 | |||
853 | goto ret; | 1017 | goto ret; |
854 | } | 1018 | } |
855 | } | 1019 | } |
@@ -861,6 +1025,7 @@ int tm6000_set_standard(struct tm6000_core *dev, v4l2_std_id * norm) | |||
861 | composite_stds[i].common, | 1025 | composite_stds[i].common, |
862 | sizeof(composite_stds[i]. | 1026 | sizeof(composite_stds[i]. |
863 | common)); | 1027 | common)); |
1028 | tm6000_set_audio_std(dev, composite_stds[i].audio_default_std); | ||
864 | goto ret; | 1029 | goto ret; |
865 | } | 1030 | } |
866 | } | 1031 | } |
diff --git a/drivers/staging/tm6000/tm6000-video.c b/drivers/staging/tm6000/tm6000-video.c index a45b012c340e..9304158db6da 100644 --- a/drivers/staging/tm6000/tm6000-video.c +++ b/drivers/staging/tm6000/tm6000-video.c | |||
@@ -1015,7 +1015,8 @@ static int vidioc_s_std (struct file *file, void *priv, v4l2_std_id *norm) | |||
1015 | struct tm6000_fh *fh=priv; | 1015 | struct tm6000_fh *fh=priv; |
1016 | struct tm6000_core *dev = fh->dev; | 1016 | struct tm6000_core *dev = fh->dev; |
1017 | 1017 | ||
1018 | rc=tm6000_set_standard (dev, norm); | 1018 | rc = tm6000_set_standard(dev, norm); |
1019 | rc = tm6000_init_analog_mode(dev); | ||
1019 | 1020 | ||
1020 | fh->width = dev->width; | 1021 | fh->width = dev->width; |
1021 | fh->height = dev->height; | 1022 | fh->height = dev->height; |
@@ -1292,9 +1293,10 @@ static int tm6000_open(struct file *file) | |||
1292 | "active=%d\n",list_empty(&dev->vidq.active)); | 1293 | "active=%d\n",list_empty(&dev->vidq.active)); |
1293 | 1294 | ||
1294 | /* initialize hardware on analog mode */ | 1295 | /* initialize hardware on analog mode */ |
1295 | if (dev->mode!=TM6000_MODE_ANALOG) { | 1296 | // if (dev->mode!=TM6000_MODE_ANALOG) { |
1296 | rc=tm6000_init_analog_mode (dev); | 1297 | // rc = tm6000_set_standard(dev, dev->norm); |
1297 | if (rc<0) | 1298 | rc += tm6000_init_analog_mode(dev); |
1299 | if (rc < 0) | ||
1298 | return rc; | 1300 | return rc; |
1299 | 1301 | ||
1300 | /* Put all controls at a sane state */ | 1302 | /* Put all controls at a sane state */ |
@@ -1302,7 +1304,7 @@ static int tm6000_open(struct file *file) | |||
1302 | qctl_regs[i] =tm6000_qctrl[i].default_value; | 1304 | qctl_regs[i] =tm6000_qctrl[i].default_value; |
1303 | 1305 | ||
1304 | dev->mode=TM6000_MODE_ANALOG; | 1306 | dev->mode=TM6000_MODE_ANALOG; |
1305 | } | 1307 | // } |
1306 | 1308 | ||
1307 | videobuf_queue_vmalloc_init(&fh->vb_vidq, &tm6000_video_qops, | 1309 | videobuf_queue_vmalloc_init(&fh->vb_vidq, &tm6000_video_qops, |
1308 | NULL, &dev->slock, | 1310 | NULL, &dev->slock, |