diff options
author | Thierry Reding <thierry.reding@avionic-design.de> | 2011-08-04 03:14:02 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2011-08-31 16:16:53 -0400 |
commit | 3fd02b4456179544d93d7b64c3362d47d6050ec7 (patch) | |
tree | 4e94a8e41322deec27e10e9d92b5f2cde3120e7f | |
parent | 3d1a51db7e908cd7b3440ecb4cbf00f15a8f33bf (diff) |
[media] tm6000: Use correct input in radio mode
In radio mode, the correct input is rinput. The pseudo index 5 is used
but cannot be used to index the vinput array because that only has 3
elements.
Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r-- | drivers/staging/tm6000/tm6000-stds.c | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/drivers/staging/tm6000/tm6000-stds.c b/drivers/staging/tm6000/tm6000-stds.c index bebf1f359d48..cd6962645b83 100644 --- a/drivers/staging/tm6000/tm6000-stds.c +++ b/drivers/staging/tm6000/tm6000-stds.c | |||
@@ -525,6 +525,7 @@ static int tm6000_load_std(struct tm6000_core *dev, | |||
525 | 525 | ||
526 | int tm6000_set_standard(struct tm6000_core *dev) | 526 | int tm6000_set_standard(struct tm6000_core *dev) |
527 | { | 527 | { |
528 | struct tm6000_input *input; | ||
528 | int i, rc = 0; | 529 | int i, rc = 0; |
529 | u8 reg_07_fe = 0x8a; | 530 | u8 reg_07_fe = 0x8a; |
530 | u8 reg_08_f1 = 0xfc; | 531 | u8 reg_08_f1 = 0xfc; |
@@ -533,12 +534,13 @@ int tm6000_set_standard(struct tm6000_core *dev) | |||
533 | 534 | ||
534 | tm6000_get_std_res(dev); | 535 | tm6000_get_std_res(dev); |
535 | 536 | ||
536 | if (dev->radio) { | 537 | if (!dev->radio) |
537 | /* todo */ | 538 | input = &dev->vinput[dev->input]; |
538 | } | 539 | else |
540 | input = &dev->rinput; | ||
539 | 541 | ||
540 | if (dev->dev_type == TM6010) { | 542 | if (dev->dev_type == TM6010) { |
541 | switch (dev->vinput[dev->input].vmux) { | 543 | switch (input->vmux) { |
542 | case TM6000_VMUX_VIDEO_A: | 544 | case TM6000_VMUX_VIDEO_A: |
543 | tm6000_set_reg(dev, TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf4); | 545 | tm6000_set_reg(dev, TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf4); |
544 | tm6000_set_reg(dev, TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1); | 546 | tm6000_set_reg(dev, TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1); |
@@ -567,7 +569,7 @@ int tm6000_set_standard(struct tm6000_core *dev) | |||
567 | default: | 569 | default: |
568 | break; | 570 | break; |
569 | } | 571 | } |
570 | switch (dev->vinput[dev->input].amux) { | 572 | switch (input->amux) { |
571 | case TM6000_AMUX_ADC1: | 573 | case TM6000_AMUX_ADC1: |
572 | tm6000_set_reg_mask(dev, TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, | 574 | tm6000_set_reg_mask(dev, TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, |
573 | 0x00, 0x0f); | 575 | 0x00, 0x0f); |
@@ -602,32 +604,32 @@ int tm6000_set_standard(struct tm6000_core *dev) | |||
602 | tm6000_set_reg(dev, TM6010_REQ08_RF1_AADC_POWER_DOWN, reg_08_f1); | 604 | 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 | tm6000_set_reg(dev, TM6010_REQ07_RFE_POWER_DOWN, reg_07_fe); |
604 | } else { | 606 | } else { |
605 | switch (dev->vinput[dev->input].vmux) { | 607 | switch (input->vmux) { |
606 | case TM6000_VMUX_VIDEO_A: | 608 | case TM6000_VMUX_VIDEO_A: |
607 | tm6000_set_reg(dev, TM6000_REQ07_RE3_VADC_INP_LPF_SEL1, 0x10); | 609 | 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); | 610 | 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 | tm6000_set_reg(dev, TM6000_REQ07_RE8_VADC_PWDOWN_CTL, 0x0f); |
610 | tm6000_set_reg(dev, | 612 | tm6000_set_reg(dev, |
611 | REQ_03_SET_GET_MCU_PIN, dev->vinput[dev->input].v_gpio, 0); | 613 | REQ_03_SET_GET_MCU_PIN, input->v_gpio, 0); |
612 | break; | 614 | break; |
613 | case TM6000_VMUX_VIDEO_B: | 615 | case TM6000_VMUX_VIDEO_B: |
614 | tm6000_set_reg(dev, TM6000_REQ07_RE3_VADC_INP_LPF_SEL1, 0x00); | 616 | 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); | 617 | 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 | tm6000_set_reg(dev, TM6000_REQ07_RE8_VADC_PWDOWN_CTL, 0x0f); |
617 | tm6000_set_reg(dev, | 619 | tm6000_set_reg(dev, |
618 | REQ_03_SET_GET_MCU_PIN, dev->vinput[dev->input].v_gpio, 0); | 620 | REQ_03_SET_GET_MCU_PIN, input->v_gpio, 0); |
619 | break; | 621 | break; |
620 | case TM6000_VMUX_VIDEO_AB: | 622 | case TM6000_VMUX_VIDEO_AB: |
621 | tm6000_set_reg(dev, TM6000_REQ07_RE3_VADC_INP_LPF_SEL1, 0x10); | 623 | 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); | 624 | 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 | tm6000_set_reg(dev, TM6000_REQ07_RE8_VADC_PWDOWN_CTL, 0x00); |
624 | tm6000_set_reg(dev, | 626 | tm6000_set_reg(dev, |
625 | REQ_03_SET_GET_MCU_PIN, dev->vinput[dev->input].v_gpio, 1); | 627 | REQ_03_SET_GET_MCU_PIN, input->v_gpio, 1); |
626 | break; | 628 | break; |
627 | default: | 629 | default: |
628 | break; | 630 | break; |
629 | } | 631 | } |
630 | switch (dev->vinput[dev->input].amux) { | 632 | switch (input->amux) { |
631 | case TM6000_AMUX_ADC1: | 633 | case TM6000_AMUX_ADC1: |
632 | tm6000_set_reg_mask(dev, | 634 | tm6000_set_reg_mask(dev, |
633 | TM6000_REQ07_REB_VADC_AADC_MODE, 0x00, 0x0f); | 635 | TM6000_REQ07_REB_VADC_AADC_MODE, 0x00, 0x0f); |
@@ -640,7 +642,7 @@ int tm6000_set_standard(struct tm6000_core *dev) | |||
640 | break; | 642 | break; |
641 | } | 643 | } |
642 | } | 644 | } |
643 | if (dev->vinput[dev->input].type == TM6000_INPUT_SVIDEO) { | 645 | if (input->type == TM6000_INPUT_SVIDEO) { |
644 | for (i = 0; i < ARRAY_SIZE(svideo_stds); i++) { | 646 | for (i = 0; i < ARRAY_SIZE(svideo_stds); i++) { |
645 | if (dev->norm & svideo_stds[i].id) { | 647 | if (dev->norm & svideo_stds[i].id) { |
646 | rc = tm6000_load_std(dev, svideo_stds[i].common, | 648 | rc = tm6000_load_std(dev, svideo_stds[i].common, |
@@ -668,8 +670,8 @@ ret: | |||
668 | return rc; | 670 | return rc; |
669 | 671 | ||
670 | if ((dev->dev_type == TM6010) && | 672 | if ((dev->dev_type == TM6010) && |
671 | ((dev->vinput[dev->input].amux == TM6000_AMUX_SIF1) || | 673 | ((input->amux == TM6000_AMUX_SIF1) || |
672 | (dev->vinput[dev->input].amux == TM6000_AMUX_SIF2))) | 674 | (input->amux == TM6000_AMUX_SIF2))) |
673 | tm6000_set_audio_std(dev); | 675 | tm6000_set_audio_std(dev); |
674 | 676 | ||
675 | msleep(40); | 677 | msleep(40); |