提交 68717583 编写于 作者: H Hartmut Hackmann 提交者: Mauro Carvalho Chehab

V4L/DVB (5319): Set tda827x to sleep mode after attach

This change sets the tda827x to sleep mode right after attach in dvb
mode. It is just to save power. For the same reason, the ADC of the
tda10046 gets turned off in sleep mode.
Signed-off-by: NHartmut Hackmann <hartmut.hackmann@t-online.de>
Signed-off-by: NMauro Carvalho Chehab <mchehab@infradead.org>
上级 06be3035
...@@ -503,6 +503,7 @@ static int tda10046_fwupload(struct dvb_frontend* fe) ...@@ -503,6 +503,7 @@ static int tda10046_fwupload(struct dvb_frontend* fe)
/* The PLLs need to be reprogrammed after sleep */ /* The PLLs need to be reprogrammed after sleep */
tda10046_init_plls(fe); tda10046_init_plls(fe);
tda1004x_write_mask(state, TDA1004X_CONFADC2, 0xc0, 0);
/* don't re-upload unless necessary */ /* don't re-upload unless necessary */
if (tda1004x_check_upload_ok(state) == 0) if (tda1004x_check_upload_ok(state) == 0)
...@@ -1170,6 +1171,7 @@ static int tda1004x_sleep(struct dvb_frontend* fe) ...@@ -1170,6 +1171,7 @@ static int tda1004x_sleep(struct dvb_frontend* fe)
tda1004x_write_mask(state, TDA10046H_CONF_POLARITY, 0x0f, tda1004x_write_mask(state, TDA10046H_CONF_POLARITY, 0x0f,
(gpio_conf & 0x0f) ^ 0x0a); (gpio_conf & 0x0f) ^ 0x0a);
tda1004x_write_mask(state, TDA1004X_CONFADC2, 0xc0, 0xc0);
tda1004x_write_mask(state, TDA1004X_CONFC4, 1, 1); tda1004x_write_mask(state, TDA1004X_CONFC4, 1, 1);
break; break;
} }
......
...@@ -426,6 +426,7 @@ struct dvb_frontend *tda827x_attach(struct dvb_frontend *fe, int addr, ...@@ -426,6 +426,7 @@ struct dvb_frontend *tda827x_attach(struct dvb_frontend *fe, int addr,
{ {
struct tda827x_priv *priv = NULL; struct tda827x_priv *priv = NULL;
u8 data; u8 data;
u8 sb_msg[] = { 0x30, 0xd0 };
struct i2c_msg msg = { .addr = addr, .flags = I2C_M_RD, struct i2c_msg msg = { .addr = addr, .flags = I2C_M_RD,
.buf = &data, .len = 1 }; .buf = &data, .len = 1 };
dprintk("%s:\n", __FUNCTION__); dprintk("%s:\n", __FUNCTION__);
...@@ -446,15 +447,21 @@ struct dvb_frontend *tda827x_attach(struct dvb_frontend *fe, int addr, ...@@ -446,15 +447,21 @@ struct dvb_frontend *tda827x_attach(struct dvb_frontend *fe, int addr,
priv->i2c_addr = addr; priv->i2c_addr = addr;
priv->i2c_adap = i2c; priv->i2c_adap = i2c;
priv->cfg = cfg; priv->cfg = cfg;
msg.flags = 0;
msg.buf = sb_msg;
msg.len = sizeof(sb_msg);
if ((data & 0x3c) == 0) { if ((data & 0x3c) == 0) {
dprintk("tda827x tuner found\n"); dprintk("tda827x tuner found\n");
memcpy(&fe->ops.tuner_ops, &tda827xo_tuner_ops, sizeof(struct dvb_tuner_ops)); memcpy(&fe->ops.tuner_ops, &tda827xo_tuner_ops, sizeof(struct dvb_tuner_ops));
} else { } else {
dprintk("tda827xa tuner found\n"); dprintk("tda827xa tuner found\n");
memcpy(&fe->ops.tuner_ops, &tda827xa_tuner_ops, sizeof(struct dvb_tuner_ops)); memcpy(&fe->ops.tuner_ops, &tda827xa_tuner_ops, sizeof(struct dvb_tuner_ops));
sb_msg[1] = 0x90;
} }
fe->tuner_priv = priv; fe->tuner_priv = priv;
i2c_transfer(i2c, &msg, 1);
return fe; return fe;
} }
EXPORT_SYMBOL(tda827x_attach); EXPORT_SYMBOL(tda827x_attach);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册