Commit 8042e98c authored by Daniel Scheller's avatar Daniel Scheller Committed by Mauro Carvalho Chehab

media: dvb-frontends/stv0910: cleanup I2C access functions

write_reg() and i2c_write_reg16() only act as a proxy to i2c_write(), which
isn't called from anywhere else throughout the driver. Clean this up by
moving the message setup and the i2c_transfer() into write_reg() so it
becomes the only I2C write function. While touching those parts, fix the
error codes from EREMOTEIO to EIO.

The I2C cleanup is picked from the upstream dddvb.

Cc: Ralph Metzler <rjkm@metzlerbros.de>
Signed-off-by: default avatarDaniel Scheller <d.scheller@gmx.net>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent 4b596bd7
...@@ -137,33 +137,21 @@ struct slookup { ...@@ -137,33 +137,21 @@ struct slookup {
u32 reg_value; u32 reg_value;
}; };
static inline int i2c_write(struct i2c_adapter *adap, u8 adr, static int write_reg(struct stv *state, u16 reg, u8 val)
u8 *data, int len)
{ {
struct i2c_msg msg = {.addr = adr, .flags = 0, struct i2c_adapter *adap = state->base->i2c;
.buf = data, .len = len}; u8 data[3] = {reg >> 8, reg & 0xff, val};
struct i2c_msg msg = {.addr = state->base->adr, .flags = 0,
.buf = data, .len = 3};
if (i2c_transfer(adap, &msg, 1) != 1) { if (i2c_transfer(adap, &msg, 1) != 1) {
dev_warn(&adap->dev, "i2c write error ([%02x] %04x: %02x)\n", dev_warn(&adap->dev, "i2c write error ([%02x] %04x: %02x)\n",
adr, (data[0] << 8) | data[1], state->base->adr, reg, val);
(len > 2 ? data[2] : 0)); return -EIO;
return -EREMOTEIO;
} }
return 0; return 0;
} }
static int i2c_write_reg16(struct i2c_adapter *adap, u8 adr, u16 reg, u8 val)
{
u8 msg[3] = {reg >> 8, reg & 0xff, val};
return i2c_write(adap, adr, msg, 3);
}
static int write_reg(struct stv *state, u16 reg, u8 val)
{
return i2c_write_reg16(state->base->i2c, state->base->adr, reg, val);
}
static inline int i2c_read_regs16(struct i2c_adapter *adapter, u8 adr, static inline int i2c_read_regs16(struct i2c_adapter *adapter, u8 adr,
u16 reg, u8 *val, int count) u16 reg, u8 *val, int count)
{ {
...@@ -176,7 +164,7 @@ static inline int i2c_read_regs16(struct i2c_adapter *adapter, u8 adr, ...@@ -176,7 +164,7 @@ static inline int i2c_read_regs16(struct i2c_adapter *adapter, u8 adr,
if (i2c_transfer(adapter, msgs, 2) != 2) { if (i2c_transfer(adapter, msgs, 2) != 2) {
dev_warn(&adapter->dev, "i2c read error ([%02x] %04x)\n", dev_warn(&adapter->dev, "i2c read error ([%02x] %04x)\n",
adr, reg); adr, reg);
return -EREMOTEIO; return -EIO;
} }
return 0; return 0;
} }
......
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