aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/tuners
diff options
context:
space:
mode:
authorAntti Palosaari <crope@iki.fi>2014-08-08 23:15:05 -0400
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>2014-09-21 16:22:11 -0400
commitf69429447ac11edfcbedd11cff62917831141e35 (patch)
treefadae19a878c59b7673651a91d5dc8bf9e0f8037 /drivers/media/tuners
parent15ba8202e6f9417abd1d6831aca4237407e0ff0b (diff)
[media] it913x: fix tuner sleep power leak
IT913x tuner driver disables own clock, provided by demod core, as very a first operation when tuner is put on *sleep*. That likely causes failure of all the rest commands on sleep sequence, which leads situation where tuner is not actually on sleep, but consuming a lot of power. I measured 102mA current consumption from the USB before change and after change it was only 32mA. Used device was single tuner IT9135 BX. Second reason to remove that register from tuner driver is reason it is simply on wrong driver (demod vs. tuner), breaking the principle of correct driver. Clock is now provided more correctly af9033 demod driver as a config option. Cc: Bimow Chen <Bimow.Chen@ite.com.tw> Signed-off-by: Antti Palosaari <crope@iki.fi> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Diffstat (limited to 'drivers/media/tuners')
-rw-r--r--drivers/media/tuners/tuner_it913x.c1
-rw-r--r--drivers/media/tuners/tuner_it913x_priv.h1
2 files changed, 0 insertions, 2 deletions
diff --git a/drivers/media/tuners/tuner_it913x.c b/drivers/media/tuners/tuner_it913x.c
index 3d83c425bccf..3265d9ab3c67 100644
--- a/drivers/media/tuners/tuner_it913x.c
+++ b/drivers/media/tuners/tuner_it913x.c
@@ -202,7 +202,6 @@ static int it913x_init(struct dvb_frontend *fe)
202 202
203 /* Power Up Tuner - common all versions */ 203 /* Power Up Tuner - common all versions */
204 ret = it913x_wr_reg(state, PRO_DMOD, 0xec40, 0x1); 204 ret = it913x_wr_reg(state, PRO_DMOD, 0xec40, 0x1);
205 ret |= it913x_wr_reg(state, PRO_DMOD, 0xfba8, 0x0);
206 ret |= it913x_wr_reg(state, PRO_DMOD, 0xec57, 0x0); 205 ret |= it913x_wr_reg(state, PRO_DMOD, 0xec57, 0x0);
207 ret |= it913x_wr_reg(state, PRO_DMOD, 0xec58, 0x0); 206 ret |= it913x_wr_reg(state, PRO_DMOD, 0xec58, 0x0);
208 207
diff --git a/drivers/media/tuners/tuner_it913x_priv.h b/drivers/media/tuners/tuner_it913x_priv.h
index ce652108aa5d..8e85a61ea5f9 100644
--- a/drivers/media/tuners/tuner_it913x_priv.h
+++ b/drivers/media/tuners/tuner_it913x_priv.h
@@ -38,7 +38,6 @@ struct it913xset { u32 pro;
38 38
39/* Tuner setting scripts (still keeping it9137) */ 39/* Tuner setting scripts (still keeping it9137) */
40static struct it913xset it9137_tuner_off[] = { 40static struct it913xset it9137_tuner_off[] = {
41 {PRO_DMOD, 0xfba8, {0x01}, 0x01}, /* Tuner Clock Off */
42 {PRO_DMOD, 0xec40, {0x00}, 0x01}, /* Power Down Tuner */ 41 {PRO_DMOD, 0xec40, {0x00}, 0x01}, /* Power Down Tuner */
43 {PRO_DMOD, 0xec02, {0x3f, 0x1f, 0x3f, 0x3f}, 0x04}, 42 {PRO_DMOD, 0xec02, {0x3f, 0x1f, 0x3f, 0x3f}, 0x04},
44 {PRO_DMOD, 0xec06, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 43 {PRO_DMOD, 0xec06, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,