Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d8b5a8e4 authored by Oliver Endriss's avatar Oliver Endriss Committed by Mauro Carvalho Chehab
Browse files

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: default avatarOliver Endriss <o.endriss@gmx.de>
Signed-off-by: default avatarManu Abraham <abraham.manu@gmail.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 41894b97
Loading
Loading
Loading
Loading
+18 −1
Original line number Diff line number Diff line
@@ -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)
+9 −0
Original line number Diff line number Diff line
@@ -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);