Skip to content

Commit

Permalink
V4L/DVB (4291): Add dvbpll i2c device check.
Browse files Browse the repository at this point in the history
Some cards have multiple possible addresses for their PLLs, with no other
way to tell if a PLL is present or not apart from probing to see if an i2c
device is present. This adds a quick check to see if an i2c device is
present at the given i2c address.

Signed-off-by: Andrew de Quincey <adq_dvb@lidskialf.net>
Acked-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
  • Loading branch information
Andrew de Quincey authored and Mauro Carvalho Chehab committed Jul 29, 2006
1 parent dc710af commit 061b623
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions drivers/media/dvb/frontends/dvb-pll.c
Original file line number Diff line number Diff line change
Expand Up @@ -613,7 +613,20 @@ static struct dvb_tuner_ops dvb_pll_tuner_ops = {

int dvb_pll_attach(struct dvb_frontend *fe, int pll_addr, struct i2c_adapter *i2c, struct dvb_pll_desc *desc)
{
u8 b1 [] = { 0 };
struct i2c_msg msg [] = { { .addr = pll_addr, .flags = 0, .buf = NULL, .len = 0 },
{ .addr = pll_addr, .flags = I2C_M_RD, .buf = b1, .len = 1 } };
struct dvb_pll_priv *priv = NULL;
int ret;

if (fe->ops.i2c_gate_ctrl)
fe->ops.i2c_gate_ctrl(fe, 1);

ret = i2c_transfer (i2c, msg, 2);
if (ret != 2)
return -1;
if (fe->ops.i2c_gate_ctrl)
fe->ops.i2c_gate_ctrl(fe, 0);

priv = kzalloc(sizeof(struct dvb_pll_priv), GFP_KERNEL);
if (priv == NULL)
Expand Down

0 comments on commit 061b623

Please sign in to comment.