On 06.06.2023 13:21:48, Sascha Hauer wrote: > On Tue, Jun 06, 2023 at 12:50:02PM +0200, Marc Kleine-Budde wrote: > > Add a small helper to read a single page of EEPROM data. > > > > Signed-off-by: Marc Kleine-Budde > > --- > > include/pbl/eeprom.h | 34 ++++++++++++++++++++++++++++++++++ > > 1 file changed, 34 insertions(+) > > > > diff --git a/include/pbl/eeprom.h b/include/pbl/eeprom.h > > new file mode 100644 > > index 000000000000..b713cf154c99 > > --- /dev/null > > +++ b/include/pbl/eeprom.h > > @@ -0,0 +1,34 @@ > > +/* SPDX-License-Identifier: GPL-2.0 */ > > +#ifndef __PBL_EEPROM_H_ > > +#define __PBL_EEPROM_H_ > > + > > +#include > > +#include > > + > > +static inline void eeprom_read(struct pbl_i2c *i2c, u16 client_addr, u32 addr, void *buf, u16 count) > > +{ > > + u8 msgbuf[2]; > > + struct i2c_msg msg[] = { > > + { > > + .addr = client_addr, > > + .buf = msgbuf, > > + }, { > > + .addr = client_addr, > > + .flags = I2C_M_RD, > > + .buf = buf, > > + .len = count, > > + }, > > + }; > > + int ret, i = 0; > > + > > + if (addr & I2C_ADDR_16_BIT) > > + msgbuf[i++] = addr >> 8; > > + msgbuf[i++] = addr; > > + msg->len = i; > > I wasn't aware that an array can be accessed as a pointer. It's C, that's all just syntactic sugar :) > I would prefer msg[0].len = i here. That's copied from i2c_read_reg(), will change, though. Marc -- Pengutronix e.K. | Marc Kleine-Budde | Embedded Linux | https://www.pengutronix.de | Vertretung Nürnberg | Phone: +49-5121-206917-129 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-9 |