The tlv_eeprom command logic checks the static tlv_devices array to
validate the eeprom number. This array will be move to a separate tlv
library.
Hide this access behind a new function exists_tlv_eeprom.

Signed-off-by: Josua Mayer <jo...@solid-run.com>
---
 cmd/tlv_eeprom.c     | 12 ++++++++++--
 include/tlv_eeprom.h |  7 +++++++
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/cmd/tlv_eeprom.c b/cmd/tlv_eeprom.c
index 57468edb1c..f51a9666bf 100644
--- a/cmd/tlv_eeprom.c
+++ b/cmd/tlv_eeprom.c
@@ -44,6 +44,14 @@ static struct udevice *tlv_devices[MAX_TLV_DEVICES];
 #define to_header(p) ((struct tlvinfo_header *)p)
 #define to_entry(p) ((struct tlvinfo_tlv *)p)
 
+/**
+ * Check whether eeprom device exists.
+ */
+bool exists_tlv_eeprom(int dev)
+{
+       return dev < TLV_MAX_DEVICES && tlv_devices[dev] != 0;
+}
+
 static inline bool is_digit(char c)
 {
        return (c >= '0' && c <= '9');
@@ -481,7 +489,7 @@ int do_tlv_eeprom(struct cmd_tbl *cmdtp, int flag, int 
argc, char *const argv[])
                unsigned int devnum;
 
                devnum = simple_strtoul(argv[2], NULL, 0);
-               if (devnum > MAX_TLV_DEVICES || !tlv_devices[devnum]) {
+               if (!exists_tlv_eeprom(devnum)) {
                        printf("Invalid device number\n");
                        return 0;
                }
@@ -866,7 +874,7 @@ static void show_tlv_devices(int current_dev)
        unsigned int dev;
 
        for (dev = 0; dev < MAX_TLV_DEVICES; dev++)
-               if (tlv_devices[dev])
+               if (exists_tlv_eeprom(dev))
                        printf("TLV: %u%s\n", dev,
                               (dev == current_dev) ? " (*)" : "");
 }
diff --git a/include/tlv_eeprom.h b/include/tlv_eeprom.h
index dc7952da6b..c81c58837d 100644
--- a/include/tlv_eeprom.h
+++ b/include/tlv_eeprom.h
@@ -69,6 +69,13 @@ struct __attribute__ ((__packed__)) tlvinfo_tlv {
 /* how many EEPROMs can be used */
 #define TLV_MAX_DEVICES                        2
 
+/**
+ * Check whether eeprom device exists.
+ *
+ * @dev: EEPROM device to check.
+ */
+bool exists_tlv_eeprom(int dev);
+
 /**
  * read_tlv_eeprom - Read the EEPROM binary data from the hardware
  * @eeprom: Pointer to buffer to hold the binary data
-- 
2.34.1

Reply via email to