| From mkrufky@linuxtv.org Tue Nov 4 14:14:09 2008 |
| From: Devin Heitmueller <devin.heitmueller@gmail.com> |
| Date: Sun, 02 Nov 2008 23:04:50 -0500 |
| Subject: DVB: s5h1411: Power down s5h1411 when not in use |
| To: stable@kernel.org |
| Cc: v4l-dvb maintainer list <v4l-dvb-maintainer@linuxtv.org>, Steven Toth <stoth@linuxtv.org>, Devin Heitmueller <devin.heitmueller@gmail.com>, Mauro Carvalho Chehab <mchehab@redhat.com> |
| Message-ID: <490E7862.2080109@linuxtv.org> |
| |
| |
| From: Devin Heitmueller <devin.heitmueller@gmail.com> |
| |
| cherry picked from commit 11fc9a4a440112b5afc1a99d86ba92d70205a688 |
| |
| 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: Devin Heitmueller <devin.heitmueller@gmail.com> |
| Acked-by: Steven Toth <stoth@linuxtv.org> |
| Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com> |
| Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/media/dvb/frontends/s5h1411.c | 10 ++++++++-- |
| 1 file changed, 8 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/media/dvb/frontends/s5h1411.c |
| +++ b/drivers/media/dvb/frontends/s5h1411.c |
| @@ -549,7 +549,7 @@ static int s5h1411_set_gpio(struct dvb_f |
| 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; |
| |
| @@ -565,6 +565,11 @@ static int s5h1411_sleep(struct dvb_fron |
| 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) |
| { |
| struct s5h1411_state *state = fe->demodulator_priv; |
| @@ -614,7 +619,7 @@ static int s5h1411_init(struct dvb_front |
| |
| dprintk("%s()\n", __func__); |
| |
| - s5h1411_sleep(fe, 0); |
| + s5h1411_set_powerstate(fe, 0); |
| s5h1411_register_reset(fe); |
| |
| for (i = 0; i < ARRAY_SIZE(init_tab); i++) |
| @@ -878,6 +883,7 @@ static struct dvb_frontend_ops s5h1411_o |
| }, |
| |
| .init = s5h1411_init, |
| + .sleep = s5h1411_sleep, |
| .i2c_gate_ctrl = s5h1411_i2c_gate_ctrl, |
| .set_frontend = s5h1411_set_frontend, |
| .get_frontend = s5h1411_get_frontend, |