V4L/DVB (13988): [STV090x] Configuration parameters adc1_range, adc2_range, tuner_bbgain

Add parameters adc1_range, adc2_range and tuner_bbgain to the config struct.
Defaults: adc1_range = adc2_range = 2Vpp, tuner_bbgain = 10db

Signed-off-by: Oliver Endriss <o.endriss@gmx.de>
Signed-off-by: Manu Abraham <abraham.manu@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
Oliver Endriss 2010-01-10 15:40:28 -03:00 committed by Mauro Carvalho Chehab
parent 41894b9700
commit d8b5a8e449
2 changed files with 27 additions and 1 deletions

View File

@ -3237,7 +3237,10 @@ static enum stv090x_signal_state stv090x_algo(struct stv090x_state *state)
goto err;
if (state->config->tuner_set_bbgain) {
if (state->config->tuner_set_bbgain(fe, 10) < 0) /* 10dB */
reg = state->config->tuner_bbgain;
if (reg == 0)
reg = 10; /* default: 10dB */
if (state->config->tuner_set_bbgain(fe, reg) < 0)
goto err_gateoff;
}
@ -4446,6 +4449,20 @@ static int stv090x_setup(struct dvb_frontend *fe)
state->internal->dev_ver);
}
/* ADC1 range */
reg = stv090x_read_reg(state, STV090x_TSTTNR1);
STV090x_SETFIELD(reg, ADC1_INMODE_FIELD,
(config->adc1_range == STV090x_ADC_1Vpp) ? 0 : 1);
if (stv090x_write_reg(state, STV090x_TSTTNR1, reg) < 0)
goto err;
/* ADC2 range */
reg = stv090x_read_reg(state, STV090x_TSTTNR3);
STV090x_SETFIELD(reg, ADC2_INMODE_FIELD,
(config->adc2_range == STV090x_ADC_1Vpp) ? 0 : 1);
if (stv090x_write_reg(state, STV090x_TSTTNR3, reg) < 0)
goto err;
if (stv090x_write_reg(state, STV090x_TSTRES0, 0x80) < 0)
goto err;
if (stv090x_write_reg(state, STV090x_TSTRES0, 0x00) < 0)

View File

@ -60,6 +60,11 @@ enum stv090x_i2crpt {
STV090x_RPTLEVEL_2 = 7,
};
enum stv090x_adc_range {
STV090x_ADC_2Vpp = 0,
STV090x_ADC_1Vpp = 1
};
struct stv090x_config {
enum stv090x_device device;
enum stv090x_mode demod_mode;
@ -75,6 +80,10 @@ struct stv090x_config {
enum stv090x_i2crpt repeater_level;
u8 tuner_bbgain; /* default: 10db */
enum stv090x_adc_range adc1_range; /* default: 2Vpp */
enum stv090x_adc_range adc2_range; /* default: 2Vpp */
bool diseqc_envelope_mode;
int (*tuner_init) (struct dvb_frontend *fe);