aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb/frontends/tda18271-fe.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/dvb/frontends/tda18271-fe.c')
-rw-r--r--drivers/media/dvb/frontends/tda18271-fe.c26
1 files changed, 21 insertions, 5 deletions
diff --git a/drivers/media/dvb/frontends/tda18271-fe.c b/drivers/media/dvb/frontends/tda18271-fe.c
index c254ac367e72..c8ab1fda1dea 100644
--- a/drivers/media/dvb/frontends/tda18271-fe.c
+++ b/drivers/media/dvb/frontends/tda18271-fe.c
@@ -201,8 +201,7 @@ static int tda18271_rf_tracking_filters_correction(struct dvb_frontend *fe,
201 u8 dc_over_dt, rf_tab; 201 u8 dc_over_dt, rf_tab;
202 202
203 /* power up */ 203 /* power up */
204 regs[R_EP3] &= ~0xe0; /* sm = 0, sm_lt = 0, sm_xt = 0 */ 204 tda18271_set_standby_mode(fe, 0, 0, 0);
205 tda18271_write_regs(fe, R_EP3, 1);
206 205
207 /* read die current temperature */ 206 /* read die current temperature */
208 tm_current = tda18271_read_thermometer(fe); 207 tm_current = tda18271_read_thermometer(fe);
@@ -256,9 +255,7 @@ static int tda18271_por(struct dvb_frontend *fe)
256 regs[R_EB21] |= 0x03; /* set agc2_gain to -6 dB */ 255 regs[R_EB21] |= 0x03; /* set agc2_gain to -6 dB */
257 256
258 /* POR mode */ 257 /* POR mode */
259 regs[R_EP3] &= ~0xe0; /* clear sm, sm_lt, sm_xt */ 258 tda18271_set_standby_mode(fe, 1, 0, 0);
260 regs[R_EP3] |= 0x80; /* sm = 1, sm_lt = 0, sm_xt = 0 */
261 tda18271_write_regs(fe, R_EP3, 1);
262 259
263 /* disable 1.5 MHz low pass filter */ 260 /* disable 1.5 MHz low pass filter */
264 regs[R_EB23] &= ~0x04; /* forcelp_fc2_en = 0 */ 261 regs[R_EB23] &= ~0x04; /* forcelp_fc2_en = 0 */
@@ -610,6 +607,9 @@ static int tda18271_init(struct dvb_frontend *fe)
610 607
611 mutex_lock(&priv->lock); 608 mutex_lock(&priv->lock);
612 609
610 /* power up */
611 tda18271_set_standby_mode(fe, 0, 0, 0);
612
613 /* initialization */ 613 /* initialization */
614 tda18271_ir_cal_init(fe); 614 tda18271_ir_cal_init(fe);
615 615
@@ -953,6 +953,21 @@ fail:
953 return ret; 953 return ret;
954} 954}
955 955
956static int tda18271_sleep(struct dvb_frontend *fe)
957{
958 struct tda18271_priv *priv = fe->tuner_priv;
959
960 mutex_lock(&priv->lock);
961
962 /* standby mode w/ slave tuner output
963 * & loop thru & xtal oscillator on */
964 tda18271_set_standby_mode(fe, 1, 0, 0);
965
966 mutex_unlock(&priv->lock);
967
968 return 0;
969}
970
956static int tda18271_release(struct dvb_frontend *fe) 971static int tda18271_release(struct dvb_frontend *fe)
957{ 972{
958 struct tda18271_priv *priv = fe->tuner_priv; 973 struct tda18271_priv *priv = fe->tuner_priv;
@@ -1096,6 +1111,7 @@ static struct dvb_tuner_ops tda18271_tuner_ops = {
1096 .frequency_step = 62500 1111 .frequency_step = 62500
1097 }, 1112 },
1098 .init = tda18271_init, 1113 .init = tda18271_init,
1114 .sleep = tda18271_sleep,
1099 .set_params = tda18271_set_params, 1115 .set_params = tda18271_set_params,
1100 .set_analog_params = tda18271_set_analog_params, 1116 .set_analog_params = tda18271_set_analog_params,
1101 .release = tda18271_release, 1117 .release = tda18271_release,