Skip to content

Commit

Permalink
V4L/DVB (5319): Set tda827x to sleep mode after attach
Browse files Browse the repository at this point in the history
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: Hartmut Hackmann <hartmut.hackmann@t-online.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
  • Loading branch information
Hartmut Hackmann authored and Mauro Carvalho Chehab committed Apr 27, 2007
1 parent 06be303 commit 6871758
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 1 deletion.
2 changes: 2 additions & 0 deletions drivers/media/dvb/frontends/tda1004x.c
Original file line number Diff line number Diff line change
Expand Up @@ -503,6 +503,7 @@ static int tda10046_fwupload(struct dvb_frontend* fe)

/* The PLLs need to be reprogrammed after sleep */
tda10046_init_plls(fe);
tda1004x_write_mask(state, TDA1004X_CONFADC2, 0xc0, 0);

/* don't re-upload unless necessary */
if (tda1004x_check_upload_ok(state) == 0)
Expand Down Expand Up @@ -1170,6 +1171,7 @@ static int tda1004x_sleep(struct dvb_frontend* fe)
tda1004x_write_mask(state, TDA10046H_CONF_POLARITY, 0x0f,
(gpio_conf & 0x0f) ^ 0x0a);

tda1004x_write_mask(state, TDA1004X_CONFADC2, 0xc0, 0xc0);
tda1004x_write_mask(state, TDA1004X_CONFC4, 1, 1);
break;
}
Expand Down
9 changes: 8 additions & 1 deletion drivers/media/dvb/frontends/tda827x.c
Original file line number Diff line number Diff line change
Expand Up @@ -426,6 +426,7 @@ struct dvb_frontend *tda827x_attach(struct dvb_frontend *fe, int addr,
{
struct tda827x_priv *priv = NULL;
u8 data;
u8 sb_msg[] = { 0x30, 0xd0 };
struct i2c_msg msg = { .addr = addr, .flags = I2C_M_RD,
.buf = &data, .len = 1 };
dprintk("%s:\n", __FUNCTION__);
Expand All @@ -446,15 +447,21 @@ struct dvb_frontend *tda827x_attach(struct dvb_frontend *fe, int addr,
priv->i2c_addr = addr;
priv->i2c_adap = i2c;
priv->cfg = cfg;

msg.flags = 0;
msg.buf = sb_msg;
msg.len = sizeof(sb_msg);

if ((data & 0x3c) == 0) {
dprintk("tda827x tuner found\n");
memcpy(&fe->ops.tuner_ops, &tda827xo_tuner_ops, sizeof(struct dvb_tuner_ops));
} else {
dprintk("tda827xa tuner found\n");
memcpy(&fe->ops.tuner_ops, &tda827xa_tuner_ops, sizeof(struct dvb_tuner_ops));
sb_msg[1] = 0x90;
}
fe->tuner_priv = priv;

i2c_transfer(i2c, &msg, 1);
return fe;
}
EXPORT_SYMBOL(tda827x_attach);
Expand Down

0 comments on commit 6871758

Please sign in to comment.