On 09.08.23 09:26, Marc Kleine-Budde wrote: > Add a small helper to read a single page of EEPROM data. > > Signed-off-by: Marc Kleine-Budde <mkl@xxxxxxxxxxxxxx> Reviewed-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> > --- > 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..df868b1a37fb > --- /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 <common.h> > +#include <pbl/i2c.h> > + > +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[0].len = i; > + > + ret = pbl_i2c_xfer(i2c, msg, ARRAY_SIZE(msg)); > + if (ret != ARRAY_SIZE(msg)) > + pr_err("Failed to read from eeprom@%x: %d\n", client_addr, ret); > +} > + > +#endif > -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |