Am Wed, Jun 19, 2024 at 01:19:32AM +0200 schrieb Sebastian Reichel: > Hi, > > On Mon, Jun 17, 2024 at 08:45:04PM GMT, Dimitri Fedrau wrote: > > The MAX17201 monitors a single cell pack. The MAX17205 monitors and > > balances a 2S or 3S pack or monitors a multiple-series cell pack. Both > > devices use a I2C interface. > > > > Signed-off-by: Dimitri Fedrau <dima.fedrau@xxxxxxxxx> > > --- > > [...] > > > +static int max1720x_read_word_data_nvmem(struct i2c_client *ancillary, u8 addr) > > +{ > > + u8 rx[2]; > > + struct i2c_msg msgs[] = { > > + { > > + .addr = ancillary->addr, > > + .flags = 0, > > + .len = 1, > > + .buf = &addr, > > + }, > > + { > > + .addr = ancillary->addr, > > + .flags = I2C_M_RD, > > + .len = 2, > > + .buf = &rx[0], > > + }, > > + }; > > + int ret; > > + > > + ret = i2c_transfer(ancillary->adapter, msgs, ARRAY_SIZE(msgs)); > > + if (ret != ARRAY_SIZE(msgs)) > > + return ret < 0 ? ret : -EIO; > > + > > + return get_unaligned_le16(&rx[0]); > > +} > > Have you tried using i2c_smbus_read_word_data(ancillary, addr) > instead of the above? > Yes, I did and it worked. Used it in V3 and changed it due to review comments by Thomas which make sense to me. I don't have any preference on this. Should I change it back ? > [...] > [...] Dimitri