|
@@ -9,6 +9,7 @@
|
|
|
|
|
|
#include <common.h>
|
|
|
#include <i2c.h>
|
|
|
+#include "eeprom.h"
|
|
|
|
|
|
#ifndef CONFIG_SYS_I2C_EEPROM_ADDR
|
|
|
# define CONFIG_SYS_I2C_EEPROM_ADDR 0x50
|
|
@@ -25,6 +26,8 @@
|
|
|
#define BOARD_REV_OFFSET 0
|
|
|
#define BOARD_REV_OFFSET_LEGACY 6
|
|
|
#define BOARD_REV_SIZE 2
|
|
|
+#define PRODUCT_NAME_OFFSET 128
|
|
|
+#define PRODUCT_NAME_SIZE 16
|
|
|
#define MAC_ADDR_OFFSET 4
|
|
|
#define MAC_ADDR_OFFSET_LEGACY 0
|
|
|
|
|
@@ -151,3 +154,30 @@ u32 cl_eeprom_get_board_rev(uint eeprom_bus)
|
|
|
|
|
|
return board_rev;
|
|
|
};
|
|
|
+
|
|
|
+/*
|
|
|
+ * Routine: cl_eeprom_get_board_rev
|
|
|
+ * Description: read system revision from eeprom
|
|
|
+ *
|
|
|
+ * @buf: buffer to store the product name
|
|
|
+ * @eeprom_bus: i2c bus num of the eeprom
|
|
|
+ *
|
|
|
+ * @return: 0 on success, < 0 on failure
|
|
|
+ */
|
|
|
+int cl_eeprom_get_product_name(uchar *buf, uint eeprom_bus)
|
|
|
+{
|
|
|
+ int err;
|
|
|
+
|
|
|
+ if (buf == NULL)
|
|
|
+ return -EINVAL;
|
|
|
+
|
|
|
+ err = cl_eeprom_setup(eeprom_bus);
|
|
|
+ if (err)
|
|
|
+ return err;
|
|
|
+
|
|
|
+ err = cl_eeprom_read(PRODUCT_NAME_OFFSET, buf, PRODUCT_NAME_SIZE);
|
|
|
+ if (!err) /* Protect ourselves from invalid data (unterminated str) */
|
|
|
+ buf[PRODUCT_NAME_SIZE - 1] = '\0';
|
|
|
+
|
|
|
+ return err;
|
|
|
+}
|