Commit 3fd02b44 authored by Thierry Reding's avatar Thierry Reding Committed by Mauro Carvalho Chehab

[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: default avatarThierry Reding <thierry.reding@avionic-design.de>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 3d1a51db
...@@ -525,6 +525,7 @@ static int tm6000_load_std(struct tm6000_core *dev, ...@@ -525,6 +525,7 @@ static int tm6000_load_std(struct tm6000_core *dev,
int tm6000_set_standard(struct tm6000_core *dev) int tm6000_set_standard(struct tm6000_core *dev)
{ {
struct tm6000_input *input;
int i, rc = 0; int i, rc = 0;
u8 reg_07_fe = 0x8a; u8 reg_07_fe = 0x8a;
u8 reg_08_f1 = 0xfc; u8 reg_08_f1 = 0xfc;
...@@ -533,12 +534,13 @@ int tm6000_set_standard(struct tm6000_core *dev) ...@@ -533,12 +534,13 @@ int tm6000_set_standard(struct tm6000_core *dev)
tm6000_get_std_res(dev); tm6000_get_std_res(dev);
if (dev->radio) { if (!dev->radio)
/* todo */ input = &dev->vinput[dev->input];
} else
input = &dev->rinput;
if (dev->dev_type == TM6010) { if (dev->dev_type == TM6010) {
switch (dev->vinput[dev->input].vmux) { switch (input->vmux) {
case TM6000_VMUX_VIDEO_A: case TM6000_VMUX_VIDEO_A:
tm6000_set_reg(dev, TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf4); tm6000_set_reg(dev, TM6010_REQ08_RE3_ADC_IN1_SEL, 0xf4);
tm6000_set_reg(dev, TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1); tm6000_set_reg(dev, TM6010_REQ08_REA_BUFF_DRV_CTRL, 0xf1);
...@@ -567,7 +569,7 @@ int tm6000_set_standard(struct tm6000_core *dev) ...@@ -567,7 +569,7 @@ int tm6000_set_standard(struct tm6000_core *dev)
default: default:
break; break;
} }
switch (dev->vinput[dev->input].amux) { switch (input->amux) {
case TM6000_AMUX_ADC1: case TM6000_AMUX_ADC1:
tm6000_set_reg_mask(dev, TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, tm6000_set_reg_mask(dev, TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG,
0x00, 0x0f); 0x00, 0x0f);
...@@ -602,32 +604,32 @@ int tm6000_set_standard(struct tm6000_core *dev) ...@@ -602,32 +604,32 @@ int tm6000_set_standard(struct tm6000_core *dev)
tm6000_set_reg(dev, TM6010_REQ08_RF1_AADC_POWER_DOWN, reg_08_f1); tm6000_set_reg(dev, TM6010_REQ08_RF1_AADC_POWER_DOWN, reg_08_f1);
tm6000_set_reg(dev, TM6010_REQ07_RFE_POWER_DOWN, reg_07_fe); tm6000_set_reg(dev, TM6010_REQ07_RFE_POWER_DOWN, reg_07_fe);
} else { } else {
switch (dev->vinput[dev->input].vmux) { switch (input->vmux) {
case TM6000_VMUX_VIDEO_A: case TM6000_VMUX_VIDEO_A:
tm6000_set_reg(dev, TM6000_REQ07_RE3_VADC_INP_LPF_SEL1, 0x10); tm6000_set_reg(dev, TM6000_REQ07_RE3_VADC_INP_LPF_SEL1, 0x10);
tm6000_set_reg(dev, TM6000_REQ07_RE5_VADC_INP_LPF_SEL2, 0x00); tm6000_set_reg(dev, TM6000_REQ07_RE5_VADC_INP_LPF_SEL2, 0x00);
tm6000_set_reg(dev, TM6000_REQ07_RE8_VADC_PWDOWN_CTL, 0x0f); tm6000_set_reg(dev, TM6000_REQ07_RE8_VADC_PWDOWN_CTL, 0x0f);
tm6000_set_reg(dev, tm6000_set_reg(dev,
REQ_03_SET_GET_MCU_PIN, dev->vinput[dev->input].v_gpio, 0); REQ_03_SET_GET_MCU_PIN, input->v_gpio, 0);
break; break;
case TM6000_VMUX_VIDEO_B: case TM6000_VMUX_VIDEO_B:
tm6000_set_reg(dev, TM6000_REQ07_RE3_VADC_INP_LPF_SEL1, 0x00); tm6000_set_reg(dev, TM6000_REQ07_RE3_VADC_INP_LPF_SEL1, 0x00);
tm6000_set_reg(dev, TM6000_REQ07_RE5_VADC_INP_LPF_SEL2, 0x00); tm6000_set_reg(dev, TM6000_REQ07_RE5_VADC_INP_LPF_SEL2, 0x00);
tm6000_set_reg(dev, TM6000_REQ07_RE8_VADC_PWDOWN_CTL, 0x0f); tm6000_set_reg(dev, TM6000_REQ07_RE8_VADC_PWDOWN_CTL, 0x0f);
tm6000_set_reg(dev, tm6000_set_reg(dev,
REQ_03_SET_GET_MCU_PIN, dev->vinput[dev->input].v_gpio, 0); REQ_03_SET_GET_MCU_PIN, input->v_gpio, 0);
break; break;
case TM6000_VMUX_VIDEO_AB: case TM6000_VMUX_VIDEO_AB:
tm6000_set_reg(dev, TM6000_REQ07_RE3_VADC_INP_LPF_SEL1, 0x10); tm6000_set_reg(dev, TM6000_REQ07_RE3_VADC_INP_LPF_SEL1, 0x10);
tm6000_set_reg(dev, TM6000_REQ07_RE5_VADC_INP_LPF_SEL2, 0x10); tm6000_set_reg(dev, TM6000_REQ07_RE5_VADC_INP_LPF_SEL2, 0x10);
tm6000_set_reg(dev, TM6000_REQ07_RE8_VADC_PWDOWN_CTL, 0x00); tm6000_set_reg(dev, TM6000_REQ07_RE8_VADC_PWDOWN_CTL, 0x00);
tm6000_set_reg(dev, tm6000_set_reg(dev,
REQ_03_SET_GET_MCU_PIN, dev->vinput[dev->input].v_gpio, 1); REQ_03_SET_GET_MCU_PIN, input->v_gpio, 1);
break; break;
default: default:
break; break;
} }
switch (dev->vinput[dev->input].amux) { switch (input->amux) {
case TM6000_AMUX_ADC1: case TM6000_AMUX_ADC1:
tm6000_set_reg_mask(dev, tm6000_set_reg_mask(dev,
TM6000_REQ07_REB_VADC_AADC_MODE, 0x00, 0x0f); TM6000_REQ07_REB_VADC_AADC_MODE, 0x00, 0x0f);
...@@ -640,7 +642,7 @@ int tm6000_set_standard(struct tm6000_core *dev) ...@@ -640,7 +642,7 @@ int tm6000_set_standard(struct tm6000_core *dev)
break; break;
} }
} }
if (dev->vinput[dev->input].type == TM6000_INPUT_SVIDEO) { if (input->type == TM6000_INPUT_SVIDEO) {
for (i = 0; i < ARRAY_SIZE(svideo_stds); i++) { for (i = 0; i < ARRAY_SIZE(svideo_stds); i++) {
if (dev->norm & svideo_stds[i].id) { if (dev->norm & svideo_stds[i].id) {
rc = tm6000_load_std(dev, svideo_stds[i].common, rc = tm6000_load_std(dev, svideo_stds[i].common,
...@@ -668,8 +670,8 @@ int tm6000_set_standard(struct tm6000_core *dev) ...@@ -668,8 +670,8 @@ int tm6000_set_standard(struct tm6000_core *dev)
return rc; return rc;
if ((dev->dev_type == TM6010) && if ((dev->dev_type == TM6010) &&
((dev->vinput[dev->input].amux == TM6000_AMUX_SIF1) || ((input->amux == TM6000_AMUX_SIF1) ||
(dev->vinput[dev->input].amux == TM6000_AMUX_SIF2))) (input->amux == TM6000_AMUX_SIF2)))
tm6000_set_audio_std(dev); tm6000_set_audio_std(dev);
msleep(40); msleep(40);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment