aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThierry Reding <thierry.reding@avionic-design.de>2011-08-04 03:14:02 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2011-08-31 16:16:53 -0400
commit3fd02b4456179544d93d7b64c3362d47d6050ec7 (patch)
tree4e94a8e41322deec27e10e9d92b5f2cde3120e7f
parent3d1a51db7e908cd7b3440ecb4cbf00f15a8f33bf (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.c28
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
526int tm6000_set_standard(struct tm6000_core *dev) 526int 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);