diff options
Diffstat (limited to 'drivers/media/dvb/frontends/tda18271-fe.c')
-rw-r--r-- | drivers/media/dvb/frontends/tda18271-fe.c | 26 |
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 | ||
956 | static 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 | |||
956 | static int tda18271_release(struct dvb_frontend *fe) | 971 | static 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, |