mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2025-09-25 07:41:40 +02:00
Merge tag '20211220-fixes-for-2022.01' of https://source.denx.de/u-boot/custodians/u-boot-i2c
i2c changes for 20211220-fixes-for-2022.01 - mvtwsi: Swab the register address if its size is > 1
This commit is contained in:
commit
1cd75ceae5
@ -860,6 +860,9 @@ static int mvtwsi_i2c_xfer(struct udevice *bus, struct i2c_msg *msg, int nmsgs)
|
|||||||
{
|
{
|
||||||
struct mvtwsi_i2c_dev *dev = dev_get_priv(bus);
|
struct mvtwsi_i2c_dev *dev = dev_get_priv(bus);
|
||||||
struct i2c_msg *dmsg, *omsg, dummy;
|
struct i2c_msg *dmsg, *omsg, dummy;
|
||||||
|
u8 *addr_buf_ptr;
|
||||||
|
u8 addr_buf[4];
|
||||||
|
int i;
|
||||||
|
|
||||||
memset(&dummy, 0, sizeof(struct i2c_msg));
|
memset(&dummy, 0, sizeof(struct i2c_msg));
|
||||||
|
|
||||||
@ -873,12 +876,17 @@ static int mvtwsi_i2c_xfer(struct udevice *bus, struct i2c_msg *msg, int nmsgs)
|
|||||||
omsg = nmsgs == 1 ? &dummy : msg;
|
omsg = nmsgs == 1 ? &dummy : msg;
|
||||||
dmsg = nmsgs == 1 ? msg : msg + 1;
|
dmsg = nmsgs == 1 ? msg : msg + 1;
|
||||||
|
|
||||||
|
/* We need to swap the register address if its size is > 1 */
|
||||||
|
addr_buf_ptr = &addr_buf[0];
|
||||||
|
for (i = omsg->len; i > 0; i--)
|
||||||
|
*addr_buf_ptr++ = omsg->buf[i - 1];
|
||||||
|
|
||||||
if (dmsg->flags & I2C_M_RD)
|
if (dmsg->flags & I2C_M_RD)
|
||||||
return __twsi_i2c_read(dev->base, dmsg->addr, omsg->buf,
|
return __twsi_i2c_read(dev->base, dmsg->addr, addr_buf,
|
||||||
omsg->len, dmsg->buf, dmsg->len,
|
omsg->len, dmsg->buf, dmsg->len,
|
||||||
dev->tick);
|
dev->tick);
|
||||||
else
|
else
|
||||||
return __twsi_i2c_write(dev->base, dmsg->addr, omsg->buf,
|
return __twsi_i2c_write(dev->base, dmsg->addr, addr_buf,
|
||||||
omsg->len, dmsg->buf, dmsg->len,
|
omsg->len, dmsg->buf, dmsg->len,
|
||||||
dev->tick);
|
dev->tick);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user