Commit 7e072221 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

[media] dvb-core: Don't pass DVBv3 parameters on tune() fops

As all parameters are passed via DVBv5 to the frontends, there's
no need to pass them again via fops. Also, most drivers weren't using
it anyway. So, instead, just pass a parameter to indicate if the
hardware algorithm wants the driver to re-tune or not.
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 5581e130
...@@ -1643,31 +1643,32 @@ static int dst_set_frontend(struct dvb_frontend *fe) ...@@ -1643,31 +1643,32 @@ static int dst_set_frontend(struct dvb_frontend *fe)
} }
static int dst_tune_frontend(struct dvb_frontend* fe, static int dst_tune_frontend(struct dvb_frontend* fe,
struct dvb_frontend_parameters* p, bool re_tune,
unsigned int mode_flags, unsigned int mode_flags,
unsigned int *delay, unsigned int *delay,
fe_status_t *status) fe_status_t *status)
{ {
struct dst_state *state = fe->demodulator_priv; struct dst_state *state = fe->demodulator_priv;
struct dtv_frontend_properties *p = &fe->dtv_property_cache;
if (p != NULL) { if (re_tune) {
dst_set_freq(state, p->frequency); dst_set_freq(state, p->frequency);
dprintk(verbose, DST_DEBUG, 1, "Set Frequency=[%d]", p->frequency); dprintk(verbose, DST_DEBUG, 1, "Set Frequency=[%d]", p->frequency);
if (state->dst_type == DST_TYPE_IS_SAT) { if (state->dst_type == DST_TYPE_IS_SAT) {
if (state->type_flags & DST_TYPE_HAS_OBS_REGS) if (state->type_flags & DST_TYPE_HAS_OBS_REGS)
dst_set_inversion(state, p->inversion); dst_set_inversion(state, p->inversion);
dst_set_fec(state, p->u.qpsk.fec_inner); dst_set_fec(state, p->fec_inner);
dst_set_symbolrate(state, p->u.qpsk.symbol_rate); dst_set_symbolrate(state, p->symbol_rate);
dst_set_polarization(state); dst_set_polarization(state);
dprintk(verbose, DST_DEBUG, 1, "Set Symbolrate=[%d]", p->u.qpsk.symbol_rate); dprintk(verbose, DST_DEBUG, 1, "Set Symbolrate=[%d]", p->symbol_rate);
} else if (state->dst_type == DST_TYPE_IS_TERR) } else if (state->dst_type == DST_TYPE_IS_TERR)
dst_set_bandwidth(state, p->u.ofdm.bandwidth); dst_set_bandwidth(state, p->bandwidth_hz);
else if (state->dst_type == DST_TYPE_IS_CABLE) { else if (state->dst_type == DST_TYPE_IS_CABLE) {
dst_set_fec(state, p->u.qam.fec_inner); dst_set_fec(state, p->fec_inner);
dst_set_symbolrate(state, p->u.qam.symbol_rate); dst_set_symbolrate(state, p->symbol_rate);
dst_set_modulation(state, p->u.qam.modulation); dst_set_modulation(state, p->modulation);
} }
dst_write_tuna(fe); dst_write_tuna(fe);
} }
......
...@@ -547,7 +547,7 @@ static int dvb_frontend_thread(void *data) ...@@ -547,7 +547,7 @@ static int dvb_frontend_thread(void *data)
fe_status_t s; fe_status_t s;
enum dvbfe_algo algo; enum dvbfe_algo algo;
struct dvb_frontend_parameters *params; bool re_tune = false;
dprintk("%s\n", __func__); dprintk("%s\n", __func__);
...@@ -596,18 +596,15 @@ static int dvb_frontend_thread(void *data) ...@@ -596,18 +596,15 @@ static int dvb_frontend_thread(void *data)
switch (algo) { switch (algo) {
case DVBFE_ALGO_HW: case DVBFE_ALGO_HW:
dprintk("%s: Frontend ALGO = DVBFE_ALGO_HW\n", __func__); dprintk("%s: Frontend ALGO = DVBFE_ALGO_HW\n", __func__);
params = NULL; /* have we been asked to RETUNE ? */
if (fepriv->state & FESTATE_RETUNE) { if (fepriv->state & FESTATE_RETUNE) {
dprintk("%s: Retune requested, FESTATE_RETUNE\n", __func__); dprintk("%s: Retune requested, FESTATE_RETUNE\n", __func__);
params = &fepriv->parameters_in; re_tune = true;
fepriv->state = FESTATE_TUNED; fepriv->state = FESTATE_TUNED;
} }
if (fe->ops.tune) if (fe->ops.tune)
fe->ops.tune(fe, params, fepriv->tune_mode_flags, &fepriv->delay, &s); fe->ops.tune(fe, re_tune, fepriv->tune_mode_flags, &fepriv->delay, &s);
if (params)
fepriv->parameters_out = *params;
if (s != fepriv->status && !(fepriv->tune_mode_flags & FE_TUNE_MODE_ONESHOT)) { if (s != fepriv->status && !(fepriv->tune_mode_flags & FE_TUNE_MODE_ONESHOT)) {
dprintk("%s: state changed, adding current state\n", __func__); dprintk("%s: state changed, adding current state\n", __func__);
......
...@@ -273,7 +273,7 @@ struct dvb_frontend_ops { ...@@ -273,7 +273,7 @@ struct dvb_frontend_ops {
/* if this is set, it overrides the default swzigzag */ /* if this is set, it overrides the default swzigzag */
int (*tune)(struct dvb_frontend* fe, int (*tune)(struct dvb_frontend* fe,
struct dvb_frontend_parameters* params, bool re_tune,
unsigned int mode_flags, unsigned int mode_flags,
unsigned int *delay, unsigned int *delay,
fe_status_t *status); fe_status_t *status);
......
...@@ -1440,7 +1440,7 @@ static int cx24116_set_frontend(struct dvb_frontend *fe) ...@@ -1440,7 +1440,7 @@ static int cx24116_set_frontend(struct dvb_frontend *fe)
return cx24116_cmd_execute(fe, &cmd); return cx24116_cmd_execute(fe, &cmd);
} }
static int cx24116_tune(struct dvb_frontend *fe, struct dvb_frontend_parameters *params, static int cx24116_tune(struct dvb_frontend *fe, bool re_tune,
unsigned int mode_flags, unsigned int *delay, fe_status_t *status) unsigned int mode_flags, unsigned int *delay, fe_status_t *status)
{ {
/* /*
...@@ -1452,7 +1452,7 @@ static int cx24116_tune(struct dvb_frontend *fe, struct dvb_frontend_parameters ...@@ -1452,7 +1452,7 @@ static int cx24116_tune(struct dvb_frontend *fe, struct dvb_frontend_parameters
*/ */
*delay = HZ / 5; *delay = HZ / 5;
if (params) { if (re_tune) {
int ret = cx24116_set_frontend(fe); int ret = cx24116_set_frontend(fe);
if (ret) if (ret)
return ret; return ret;
......
...@@ -1006,14 +1006,14 @@ static int cx24123_set_tone(struct dvb_frontend *fe, fe_sec_tone_mode_t tone) ...@@ -1006,14 +1006,14 @@ static int cx24123_set_tone(struct dvb_frontend *fe, fe_sec_tone_mode_t tone)
} }
static int cx24123_tune(struct dvb_frontend *fe, static int cx24123_tune(struct dvb_frontend *fe,
struct dvb_frontend_parameters *params, bool re_tune,
unsigned int mode_flags, unsigned int mode_flags,
unsigned int *delay, unsigned int *delay,
fe_status_t *status) fe_status_t *status)
{ {
int retval = 0; int retval = 0;
if (params != NULL) if (re_tune)
retval = cx24123_set_frontend(fe); retval = cx24123_set_frontend(fe);
if (!(mode_flags & FE_TUNE_MODE_ONESHOT)) if (!(mode_flags & FE_TUNE_MODE_ONESHOT))
......
...@@ -1205,12 +1205,12 @@ static int ds3000_set_frontend(struct dvb_frontend *fe) ...@@ -1205,12 +1205,12 @@ static int ds3000_set_frontend(struct dvb_frontend *fe)
} }
static int ds3000_tune(struct dvb_frontend *fe, static int ds3000_tune(struct dvb_frontend *fe,
struct dvb_frontend_parameters *p, bool re_tune,
unsigned int mode_flags, unsigned int mode_flags,
unsigned int *delay, unsigned int *delay,
fe_status_t *status) fe_status_t *status)
{ {
if (p) { if (re_tune) {
int ret = ds3000_set_frontend(fe); int ret = ds3000_set_frontend(fe);
if (ret) if (ret)
return ret; return ret;
......
...@@ -540,7 +540,7 @@ static int mb86a20s_get_frontend(struct dvb_frontend *fe, ...@@ -540,7 +540,7 @@ static int mb86a20s_get_frontend(struct dvb_frontend *fe,
} }
static int mb86a20s_tune(struct dvb_frontend *fe, static int mb86a20s_tune(struct dvb_frontend *fe,
struct dvb_frontend_parameters *params, bool re_tune,
unsigned int mode_flags, unsigned int mode_flags,
unsigned int *delay, unsigned int *delay,
fe_status_t *status) fe_status_t *status)
...@@ -549,7 +549,7 @@ static int mb86a20s_tune(struct dvb_frontend *fe, ...@@ -549,7 +549,7 @@ static int mb86a20s_tune(struct dvb_frontend *fe,
dprintk("\n"); dprintk("\n");
if (params != NULL) if (re_tune)
rc = mb86a20s_set_frontend(fe); rc = mb86a20s_set_frontend(fe);
if (!(mode_flags & FE_TUNE_MODE_ONESHOT)) if (!(mode_flags & FE_TUNE_MODE_ONESHOT))
......
...@@ -445,7 +445,7 @@ static int s921_get_frontend(struct dvb_frontend *fe, ...@@ -445,7 +445,7 @@ static int s921_get_frontend(struct dvb_frontend *fe,
} }
static int s921_tune(struct dvb_frontend *fe, static int s921_tune(struct dvb_frontend *fe,
struct dvb_frontend_parameters *params, bool re_tune,
unsigned int mode_flags, unsigned int mode_flags,
unsigned int *delay, unsigned int *delay,
fe_status_t *status) fe_status_t *status)
...@@ -454,7 +454,7 @@ static int s921_tune(struct dvb_frontend *fe, ...@@ -454,7 +454,7 @@ static int s921_tune(struct dvb_frontend *fe,
dprintk("\n"); dprintk("\n");
if (params != NULL) if (re_tune)
rc = s921_set_frontend(fe); rc = s921_set_frontend(fe);
if (!(mode_flags & FE_TUNE_MODE_ONESHOT)) if (!(mode_flags & FE_TUNE_MODE_ONESHOT))
......
...@@ -385,7 +385,7 @@ va1j5jf8007s_check_ts_id(struct va1j5jf8007s_state *state, int *lock) ...@@ -385,7 +385,7 @@ va1j5jf8007s_check_ts_id(struct va1j5jf8007s_state *state, int *lock)
static int static int
va1j5jf8007s_tune(struct dvb_frontend *fe, va1j5jf8007s_tune(struct dvb_frontend *fe,
struct dvb_frontend_parameters *params, bool re_tune,
unsigned int mode_flags, unsigned int *delay, unsigned int mode_flags, unsigned int *delay,
fe_status_t *status) fe_status_t *status)
{ {
...@@ -395,7 +395,7 @@ va1j5jf8007s_tune(struct dvb_frontend *fe, ...@@ -395,7 +395,7 @@ va1j5jf8007s_tune(struct dvb_frontend *fe,
state = fe->demodulator_priv; state = fe->demodulator_priv;
if (params != NULL) if (re_tune)
state->tune_state = VA1J5JF8007S_SET_FREQUENCY_1; state->tune_state = VA1J5JF8007S_SET_FREQUENCY_1;
switch (state->tune_state) { switch (state->tune_state) {
......
...@@ -264,7 +264,7 @@ static int va1j5jf8007t_check_modulation(struct va1j5jf8007t_state *state, ...@@ -264,7 +264,7 @@ static int va1j5jf8007t_check_modulation(struct va1j5jf8007t_state *state,
static int static int
va1j5jf8007t_tune(struct dvb_frontend *fe, va1j5jf8007t_tune(struct dvb_frontend *fe,
struct dvb_frontend_parameters *params, bool re_tune,
unsigned int mode_flags, unsigned int *delay, unsigned int mode_flags, unsigned int *delay,
fe_status_t *status) fe_status_t *status)
{ {
...@@ -274,7 +274,7 @@ va1j5jf8007t_tune(struct dvb_frontend *fe, ...@@ -274,7 +274,7 @@ va1j5jf8007t_tune(struct dvb_frontend *fe,
state = fe->demodulator_priv; state = fe->demodulator_priv;
if (params != NULL) if (re_tune)
state->tune_state = VA1J5JF8007T_SET_FREQUENCY; state->tune_state = VA1J5JF8007T_SET_FREQUENCY;
switch (state->tune_state) { switch (state->tune_state) {
......
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