diff options
author | Tom Rini <trini@konsulko.com> | 2023-10-30 16:01:54 -0400 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2023-10-30 16:01:54 -0400 |
commit | cbba1b7766bd93d74e28202c46e69095ac13760b (patch) | |
tree | ba75e840777ea0213e0c97fb72234d1ea4ed7769 /drivers/misc/i2c_eeprom.c | |
parent | c594b430225c36189a8fee2a710264d0458dc3d6 (diff) | |
parent | 5ed1c55fb4c23dc9f14b9c8d1d687f8c0ee703ac (diff) |
Merge branch '2023-10-30-assorted-general-updates'
- Two Kconfig content fixes, fix some issues reported by Coverity,
resync get_maintainer.pl (two small fixees), update i2c_eeprom, and
fix an off by one in addrmap_set_entry
Diffstat (limited to 'drivers/misc/i2c_eeprom.c')
-rw-r--r-- | drivers/misc/i2c_eeprom.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/misc/i2c_eeprom.c b/drivers/misc/i2c_eeprom.c index e1d0b8f918..9111bd724c 100644 --- a/drivers/misc/i2c_eeprom.c +++ b/drivers/misc/i2c_eeprom.c @@ -60,6 +60,17 @@ static int i2c_eeprom_std_read(struct udevice *dev, int offset, uint8_t *buf, return dm_i2c_read(dev, offset, buf, size); } +static int i2c_eeprom_len(int offset, int len, int pagesize) +{ + int page_offset = offset & (pagesize - 1); + int maxlen = pagesize - page_offset; + + if (len > maxlen) + len = maxlen; + + return len; +} + static int i2c_eeprom_std_write(struct udevice *dev, int offset, const uint8_t *buf, int size) { @@ -67,7 +78,7 @@ static int i2c_eeprom_std_write(struct udevice *dev, int offset, int ret; while (size > 0) { - int write_size = min_t(int, size, priv->pagesize); + int write_size = i2c_eeprom_len(offset, size, priv->pagesize); ret = dm_i2c_write(dev, offset, buf, write_size); if (ret) |