Commit fac229f3 authored by Devin Heitmueller's avatar Devin Heitmueller Committed by Greg Kroah-Hartman

DVB: s5h1411: Power down s5h1411 when not in use

commit 11fc9a4a upstream.

DVB: s5h1411: Power down s5h1411 when not in use

Power down the s5h1411 demodulator when not in use
(on the Pinnacle 801e, this brings idle power from
123ma down to 84ma).
Signed-off-by: default avatarDevin Heitmueller <devin.heitmueller@gmail.com>
Acked-by: default avatarSteven Toth <stoth@linuxtv.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
Signed-off-by: default avatarMichael Krufky <mkrufky@linuxtv.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 05cc17f9
...@@ -549,7 +549,7 @@ static int s5h1411_set_gpio(struct dvb_frontend *fe, int enable) ...@@ -549,7 +549,7 @@ static int s5h1411_set_gpio(struct dvb_frontend *fe, int enable)
return s5h1411_writereg(state, S5H1411_I2C_TOP_ADDR, 0xe0, val); return s5h1411_writereg(state, S5H1411_I2C_TOP_ADDR, 0xe0, val);
} }
static int s5h1411_sleep(struct dvb_frontend *fe, int enable) static int s5h1411_set_powerstate(struct dvb_frontend *fe, int enable)
{ {
struct s5h1411_state *state = fe->demodulator_priv; struct s5h1411_state *state = fe->demodulator_priv;
...@@ -565,6 +565,11 @@ static int s5h1411_sleep(struct dvb_frontend *fe, int enable) ...@@ -565,6 +565,11 @@ static int s5h1411_sleep(struct dvb_frontend *fe, int enable)
return 0; return 0;
} }
static int s5h1411_sleep(struct dvb_frontend *fe)
{
return s5h1411_set_powerstate(fe, 1);
}
static int s5h1411_register_reset(struct dvb_frontend *fe) static int s5h1411_register_reset(struct dvb_frontend *fe)
{ {
struct s5h1411_state *state = fe->demodulator_priv; struct s5h1411_state *state = fe->demodulator_priv;
...@@ -614,7 +619,7 @@ static int s5h1411_init(struct dvb_frontend *fe) ...@@ -614,7 +619,7 @@ static int s5h1411_init(struct dvb_frontend *fe)
dprintk("%s()\n", __func__); dprintk("%s()\n", __func__);
s5h1411_sleep(fe, 0); s5h1411_set_powerstate(fe, 0);
s5h1411_register_reset(fe); s5h1411_register_reset(fe);
for (i = 0; i < ARRAY_SIZE(init_tab); i++) for (i = 0; i < ARRAY_SIZE(init_tab); i++)
...@@ -878,6 +883,7 @@ static struct dvb_frontend_ops s5h1411_ops = { ...@@ -878,6 +883,7 @@ static struct dvb_frontend_ops s5h1411_ops = {
}, },
.init = s5h1411_init, .init = s5h1411_init,
.sleep = s5h1411_sleep,
.i2c_gate_ctrl = s5h1411_i2c_gate_ctrl, .i2c_gate_ctrl = s5h1411_i2c_gate_ctrl,
.set_frontend = s5h1411_set_frontend, .set_frontend = s5h1411_set_frontend,
.get_frontend = s5h1411_get_frontend, .get_frontend = s5h1411_get_frontend,
......
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