Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 202061
b: refs/heads/master
c: 4743319
h: refs/heads/master
i:
  202059: abd6928
v: v3
  • Loading branch information
Dmitri Belimov authored and Mauro Carvalho Chehab committed Aug 2, 2010
1 parent dd4f046 commit fd3122a
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 32 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: e252984c5279dde24fbd6d3efe7fe13dc642e714
refs/heads/master: 4743319fb0d2a808a5e3eeb778a9666daf9da51d
57 changes: 26 additions & 31 deletions trunk/drivers/media/common/tuners/xc5000.c
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,26 @@ static int xc_read_i2c_data(struct xc5000_priv *priv, u8 *buf, int len)
return 0;
}

static int xc5000_readreg(struct xc5000_priv *priv, u16 reg, u16 *val)
{
u8 buf[2] = { reg >> 8, reg & 0xff };
u8 bval[2] = { 0, 0 };
struct i2c_msg msg[2] = {
{ .addr = priv->i2c_props.addr,
.flags = 0, .buf = &buf[0], .len = 2 },
{ .addr = priv->i2c_props.addr,
.flags = I2C_M_RD, .buf = &bval[0], .len = 2 },
};

if (i2c_transfer(priv->i2c_props.adap, msg, 2) != 2) {
printk(KERN_WARNING "xc5000: I2C read failed\n");
return -EREMOTEIO;
}

*val = (bval[0] << 8) | bval[1];
return XC_RESULT_SUCCESS;
}

static void xc_wait(int wait_ms)
{
msleep(wait_ms);
Expand Down Expand Up @@ -275,20 +295,14 @@ static int xc_write_reg(struct xc5000_priv *priv, u16 regAddr, u16 i2cData)
if (result == XC_RESULT_SUCCESS) {
/* wait for busy flag to clear */
while ((WatchDogTimer > 0) && (result == XC_RESULT_SUCCESS)) {
buf[0] = 0;
buf[1] = XREG_BUSY;

result = xc_send_i2c_data(priv, buf, 2);
result = xc5000_readreg(priv, XREG_BUSY, buf);
if (result == XC_RESULT_SUCCESS) {
result = xc_read_i2c_data(priv, buf, 2);
if (result == XC_RESULT_SUCCESS) {
if ((buf[0] == 0) && (buf[1] == 0)) {
/* busy flag cleared */
if ((buf[0] == 0) && (buf[1] == 0)) {
/* busy flag cleared */
break;
} else {
xc_wait(5); /* wait 5 ms */
WatchDogTimer--;
}
} else {
xc_wait(5); /* wait 5 ms */
WatchDogTimer--;
}
}
}
Expand Down Expand Up @@ -526,25 +540,6 @@ static int xc_tune_channel(struct xc5000_priv *priv, u32 freq_hz, int mode)
return found;
}

static int xc5000_readreg(struct xc5000_priv *priv, u16 reg, u16 *val)
{
u8 buf[2] = { reg >> 8, reg & 0xff };
u8 bval[2] = { 0, 0 };
struct i2c_msg msg[2] = {
{ .addr = priv->i2c_props.addr,
.flags = 0, .buf = &buf[0], .len = 2 },
{ .addr = priv->i2c_props.addr,
.flags = I2C_M_RD, .buf = &bval[0], .len = 2 },
};

if (i2c_transfer(priv->i2c_props.adap, msg, 2) != 2) {
printk(KERN_WARNING "xc5000: I2C read failed\n");
return -EREMOTEIO;
}

*val = (bval[0] << 8) | bval[1];
return XC_RESULT_SUCCESS;
}

static int xc5000_fwupload(struct dvb_frontend *fe)
{
Expand Down

0 comments on commit fd3122a

Please sign in to comment.