Commit 0d2d6031 authored by Antti Palosaari's avatar Antti Palosaari Committed by Mauro Carvalho Chehab

[media] ec100: improve I2C routines

Signed-off-by: default avatarAntti Palosaari <crope@iki.fi>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 20399b3b
...@@ -33,24 +33,33 @@ struct ec100_state { ...@@ -33,24 +33,33 @@ struct ec100_state {
/* write single register */ /* write single register */
static int ec100_write_reg(struct ec100_state *state, u8 reg, u8 val) static int ec100_write_reg(struct ec100_state *state, u8 reg, u8 val)
{ {
int ret;
u8 buf[2] = {reg, val}; u8 buf[2] = {reg, val};
struct i2c_msg msg = { struct i2c_msg msg[1] = {
.addr = state->config.demod_address, {
.flags = 0, .addr = state->config.demod_address,
.len = 2, .flags = 0,
.buf = buf}; .len = sizeof(buf),
.buf = buf,
if (i2c_transfer(state->i2c, &msg, 1) != 1) { }
dev_warn(&state->i2c->dev, "%s: i2c wr failed reg=%02x\n", };
KBUILD_MODNAME, reg);
return -EREMOTEIO; ret = i2c_transfer(state->i2c, msg, 1);
if (ret == 1) {
ret = 0;
} else {
dev_warn(&state->i2c->dev, "%s: i2c wr failed=%d reg=%02x\n",
KBUILD_MODNAME, ret, reg);
ret = -EREMOTEIO;
} }
return 0;
return ret;
} }
/* read single register */ /* read single register */
static int ec100_read_reg(struct ec100_state *state, u8 reg, u8 *val) static int ec100_read_reg(struct ec100_state *state, u8 reg, u8 *val)
{ {
int ret;
struct i2c_msg msg[2] = { struct i2c_msg msg[2] = {
{ {
.addr = state->config.demod_address, .addr = state->config.demod_address,
...@@ -65,12 +74,16 @@ static int ec100_read_reg(struct ec100_state *state, u8 reg, u8 *val) ...@@ -65,12 +74,16 @@ static int ec100_read_reg(struct ec100_state *state, u8 reg, u8 *val)
} }
}; };
if (i2c_transfer(state->i2c, msg, 2) != 2) { ret = i2c_transfer(state->i2c, msg, 2);
dev_warn(&state->i2c->dev, "%s: i2c rd failed reg=%02x\n", if (ret == 2) {
KBUILD_MODNAME, reg); ret = 0;
return -EREMOTEIO; } else {
dev_warn(&state->i2c->dev, "%s: i2c rd failed=%d reg=%02x\n",
KBUILD_MODNAME, ret, reg);
ret = -EREMOTEIO;
} }
return 0;
return ret;
} }
static int ec100_set_frontend(struct dvb_frontend *fe) static int ec100_set_frontend(struct dvb_frontend *fe)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment