diff options
Diffstat (limited to 'linux/drivers/media/dvb/frontends')
-rw-r--r-- | linux/drivers/media/dvb/frontends/stv0297.c | 10 | ||||
-rw-r--r-- | linux/drivers/media/dvb/frontends/stv0297.h | 3 |
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); |