The patch number 14426 was added via Manu Abraham <m...@linuxtv.org> to http://linuxtv.org/hg/v4l-dvb master development tree.
Kernel patches in this development tree may be modified to be backward compatible with older kernels. Compatibility modifications will be removed before inclusion into the mainstream Kernel If anyone has any objections, please let us know by sending a message to: Linux Media Mailing List <linux-me...@vger.kernel.org> ------ From: Manu Abraham <abraham.m...@gmail.com> [STV090x, STV6110x] Use tuner sleep within the demodulator control Oliver Endriss <o.endr...@gmx.de> pointed out: Imho not a good idea, as the frontend thread calls - fe->ops.tuner_ops.init - fe->ops.tuner_ops.sleep If you remove fe->ops.i2c_gate_ctrl, init and sleep will fail, because gate_ctrl was never called... -- Signed-off-by: Manu Abraham <m...@gmail.com> --- linux/drivers/media/dvb/frontends/stv090x.c | 8 ++++++++ linux/drivers/media/dvb/frontends/stv090x.h | 1 + linux/drivers/media/dvb/frontends/stv6110x.c | 5 +++-- linux/drivers/media/dvb/frontends/stv6110x.h | 1 + linux/drivers/media/dvb/ttpci/budget.c | 2 ++ 5 files changed, 15 insertions(+), 2 deletions(-) diff -r f8a4b7a4eb77 -r 0b84056090e3 linux/drivers/media/dvb/frontends/stv090x.c --- a/linux/drivers/media/dvb/frontends/stv090x.c Sat Jan 23 00:19:49 2010 +0400 +++ b/linux/drivers/media/dvb/frontends/stv090x.c Sat Jan 23 12:49:08 2010 +0400 @@ -4652,6 +4652,11 @@ struct stv090x_state *state = fe->demodulator_priv; u32 reg; + if (state->config->tuner_init) { + if (state->config->tuner_sleep(fe) < 0) + goto err_gateoff; + } + dprintk(FE_DEBUG, 1, "Set %s to sleep", state->device == STV0900 ? "STV0900" : "STV0903"); @@ -4666,6 +4671,9 @@ goto err; return 0; + +err_gateoff: + stv090x_i2c_gate_ctrl(state, 0); err: dprintk(FE_ERROR, 1, "I/O error"); return -1; diff -r f8a4b7a4eb77 -r 0b84056090e3 linux/drivers/media/dvb/frontends/stv090x.h --- a/linux/drivers/media/dvb/frontends/stv090x.h Sat Jan 23 00:19:49 2010 +0400 +++ b/linux/drivers/media/dvb/frontends/stv090x.h Sat Jan 23 12:49:08 2010 +0400 @@ -87,6 +87,7 @@ bool diseqc_envelope_mode; int (*tuner_init) (struct dvb_frontend *fe); + int (*tuner_sleep) (struct dvb_frontend *fe); int (*tuner_set_mode) (struct dvb_frontend *fe, enum tuner_mode mode); int (*tuner_set_frequency) (struct dvb_frontend *fe, u32 frequency); int (*tuner_get_frequency) (struct dvb_frontend *fe, u32 *frequency); diff -r f8a4b7a4eb77 -r 0b84056090e3 linux/drivers/media/dvb/frontends/stv6110x.c --- a/linux/drivers/media/dvb/frontends/stv6110x.c Sat Jan 23 00:19:49 2010 +0400 +++ b/linux/drivers/media/dvb/frontends/stv6110x.c Sat Jan 23 12:49:08 2010 +0400 @@ -402,10 +402,10 @@ .frequency_max = 2150000, .frequency_step = 0, }, - +#if 0 .init = stv6110x_init, .sleep = stv6110x_sleep, -#if 0 + .get_status = stv6110x_get_status, .get_state = stv6110x_get_state, .set_state = stv6110x_set_state, @@ -415,6 +415,7 @@ static struct stv6110x_devctl stv6110x_ctl = { .tuner_init = stv6110x_init, + .tuner_sleep = stv6110x_sleep, .tuner_set_mode = stv6110x_set_mode, .tuner_set_frequency = stv6110x_set_frequency, .tuner_get_frequency = stv6110x_get_frequency, diff -r f8a4b7a4eb77 -r 0b84056090e3 linux/drivers/media/dvb/frontends/stv6110x.h --- a/linux/drivers/media/dvb/frontends/stv6110x.h Sat Jan 23 00:19:49 2010 +0400 +++ b/linux/drivers/media/dvb/frontends/stv6110x.h Sat Jan 23 12:49:08 2010 +0400 @@ -40,6 +40,7 @@ struct stv6110x_devctl { int (*tuner_init) (struct dvb_frontend *fe); + int (*tuner_sleep) (struct dvb_frontend *fe); int (*tuner_set_mode) (struct dvb_frontend *fe, enum tuner_mode mode); int (*tuner_set_frequency) (struct dvb_frontend *fe, u32 frequency); int (*tuner_get_frequency) (struct dvb_frontend *fe, u32 *frequency); diff -r f8a4b7a4eb77 -r 0b84056090e3 linux/drivers/media/dvb/ttpci/budget.c --- a/linux/drivers/media/dvb/ttpci/budget.c Sat Jan 23 00:19:49 2010 +0400 +++ b/linux/drivers/media/dvb/ttpci/budget.c Sat Jan 23 12:49:08 2010 +0400 @@ -442,6 +442,7 @@ .repeater_level = STV090x_RPTLEVEL_16, .tuner_init = NULL, + .tuner_sleep = NULL, .tuner_set_mode = NULL, .tuner_set_frequency = NULL, .tuner_get_frequency = NULL, @@ -628,6 +629,7 @@ &budget->i2c_adap); tt1600_stv090x_config.tuner_init = ctl->tuner_init; + tt1600_stv090x_config.tuner_sleep = ctl->tuner_sleep; tt1600_stv090x_config.tuner_set_mode = ctl->tuner_set_mode; tt1600_stv090x_config.tuner_set_frequency = ctl->tuner_set_frequency; tt1600_stv090x_config.tuner_get_frequency = ctl->tuner_get_frequency; --- Patch is available at: http://linuxtv.org/hg/v4l-dvb/rev/0b84056090e35e7704db88963a5c57b9ecfa1bd6 _______________________________________________ linuxtv-commits mailing list linuxtv-commits@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits