cmd: eeprom: Don't read/write whole EEPROM if not necessary

Don't read/write whole EEPROM if not necessary when printing / updating
EEPROM layout fields. Only read/write layout.data_size bytes.

Signed-off-by: Marek Behún <kabel@kernel.org>
This commit is contained in:
Marek Behún 2024-05-21 09:13:34 +02:00 committed by Tom Rini
parent e9774afedd
commit e5dbc80fe0

View File

@ -311,16 +311,10 @@ static int do_eeprom_rw(struct eeprom_dev_spec *dev, bool read,
static int do_eeprom_layout(struct eeprom_dev_spec *dev, int layout_ver,
struct eeprom_layout *layout)
{
int ret;
ret = eeprom_read(dev->i2c_addr, 0, eeprom_buf, CONFIG_SYS_EEPROM_SIZE);
if (ret)
return ret;
eeprom_layout_setup(layout, eeprom_buf, CONFIG_SYS_EEPROM_SIZE,
layout_ver);
return 0;
return eeprom_read(dev->i2c_addr, 0, eeprom_buf, layout->data_size);
}
static int do_eeprom_print(struct eeprom_dev_spec *dev, int layout_ver)
@ -351,8 +345,7 @@ static int do_eeprom_update(struct eeprom_dev_spec *dev, int layout_ver,
if (ret)
return CMD_RET_FAILURE;
return eeprom_write(dev->i2c_addr, 0, layout.data,
CONFIG_SYS_EEPROM_SIZE);
return eeprom_write(dev->i2c_addr, 0, layout.data, layout.data_size);
}
#endif