summaryrefslogtreecommitdiff
path: root/linux/drivers/media/dvb/frontends
diff options
context:
space:
mode:
Diffstat (limited to 'linux/drivers/media/dvb/frontends')
-rw-r--r--linux/drivers/media/dvb/frontends/stv0297.c10
-rw-r--r--linux/drivers/media/dvb/frontends/stv0297.h3
2 files changed, 11 insertions, 2 deletions
diff --git a/linux/drivers/media/dvb/frontends/stv0297.c b/linux/drivers/media/dvb/frontends/stv0297.c
index 2114c91a8..647a63e6c 100644
--- a/linux/drivers/media/dvb/frontends/stv0297.c
+++ b/linux/drivers/media/dvb/frontends/stv0297.c
@@ -482,6 +482,7 @@ static int stv0297_set_frontend(struct dvb_frontend *fe, struct dvb_frontend_par
int carrieroffset;
unsigned long starttime;
unsigned long timeout;
+ fe_spectral_inversion_t inversion;
switch (p->u.qam.modulation) {
case QAM_16:
@@ -506,8 +507,11 @@ static int stv0297_set_frontend(struct dvb_frontend *fe, struct dvb_frontend_par
}
// determine inversion dependant parameters
+ inversion = p->inversion;
+ if (fe->config->invert)
+ inversion = (inversion == INVERSION_ON) ? INVERSION_OFF : INVERSION_ON;
carrieroffset = -330;
- switch (p->inversion) {
+ switch (inversion) {
case INVERSION_OFF:
break;
@@ -586,7 +590,7 @@ static int stv0297_set_frontend(struct dvb_frontend *fe, struct dvb_frontend_par
stv0297_set_symbolrate(state, p->u.qam.symbol_rate / 1000);
stv0297_set_sweeprate(state, sweeprate, p->u.qam.symbol_rate / 1000);
stv0297_set_carrieroffset(state, carrieroffset);
- stv0297_set_inversion(state, p->inversion);
+ stv0297_set_inversion(state, inversion);
/* kick off lock */
stv0297_writereg_mask(state, 0x88, 0x08, 0x08);
@@ -681,6 +685,8 @@ static int stv0297_get_frontend(struct dvb_frontend *fe, struct dvb_frontend_par
p->frequency = state->base_freq + state->freq_off;
p->inversion = (reg_83 & 0x08) ? INVERSION_ON : INVERSION_OFF;
+ if (fe->config->invert)
+ p->inversion = (p->inversion == INVERSION_ON) ? INVERSION_OFF : INVERSION_ON;
p->u.qam.symbol_rate = 0;
p->u.qam.fec_inner = 0;
diff --git a/linux/drivers/media/dvb/frontends/stv0297.h b/linux/drivers/media/dvb/frontends/stv0297.h
index 355aa8720..3be535989 100644
--- a/linux/drivers/media/dvb/frontends/stv0297.h
+++ b/linux/drivers/media/dvb/frontends/stv0297.h
@@ -29,6 +29,9 @@ struct stv0297_config
/* the demodulator's i2c address */
u8 demod_address;
+ /* does the "inversion" need inverted? */
+ u8 invert:1;
+
/* PLL maintenance */
int (*pll_init)(struct dvb_frontend* fe);
int (*pll_set)(struct dvb_frontend* fe, struct dvb_frontend_parameters* params);