From: Marek BehĂșn <kabel@kernel.org>
Date: Tue, 21 May 2024 07:13:34 +0000 (+0200)
Subject: cmd: eeprom: Don't read/write whole EEPROM if not necessary
X-Git-Tag: v2025.01-rc5-pxa1908~398^2~78^2~1
X-Git-Url: http://git.dujemihanovic.xyz/img/html/static/%7B%7B?a=commitdiff_plain;h=e5dbc80fe0e87d8a6e5226c4b3329d648fd89386;p=u-boot.git

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>
---

diff --git a/cmd/eeprom.c b/cmd/eeprom.c
index c76cf43157..9c4af88738 100644
--- a/cmd/eeprom.c
+++ b/cmd/eeprom.c
@@ -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