|
@@ -124,6 +124,7 @@
|
|
#define CONFIG_CMD_NAND /* NAND support */
|
|
#define CONFIG_CMD_NAND /* NAND support */
|
|
#define CONFIG_CMD_PING
|
|
#define CONFIG_CMD_PING
|
|
#define CONFIG_CMD_USB
|
|
#define CONFIG_CMD_USB
|
|
|
|
+#define CONFIG_CMD_EEPROM
|
|
|
|
|
|
#undef CONFIG_CMD_FLASH /* only NAND on the SOM */
|
|
#undef CONFIG_CMD_FLASH /* only NAND on the SOM */
|
|
#undef CONFIG_CMD_IMLS
|
|
#undef CONFIG_CMD_IMLS
|
|
@@ -134,6 +135,9 @@
|
|
#define CONFIG_SYS_I2C_SLAVE 1
|
|
#define CONFIG_SYS_I2C_SLAVE 1
|
|
#define CONFIG_SYS_I2C_BUS 0
|
|
#define CONFIG_SYS_I2C_BUS 0
|
|
#define CONFIG_SYS_I2C_BUS_SELECT 1
|
|
#define CONFIG_SYS_I2C_BUS_SELECT 1
|
|
|
|
+#define CONFIG_SYS_I2C_EEPROM_ADDR 0x50 /* base address */
|
|
|
|
+#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1 /* bytes of address */
|
|
|
|
+#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW 0x07
|
|
#define CONFIG_DRIVER_OMAP34XX_I2C
|
|
#define CONFIG_DRIVER_OMAP34XX_I2C
|
|
|
|
|
|
|
|
|
|
@@ -347,4 +351,66 @@
|
|
"fi;" \
|
|
"fi;" \
|
|
"else echo U-Boot not downloaded..exiting;fi\0" \
|
|
"else echo U-Boot not downloaded..exiting;fi\0" \
|
|
|
|
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * this is common code for all TAM3517 boards.
|
|
|
|
+ * MAC address is stored from manufacturer in
|
|
|
|
+ * I2C EEPROM
|
|
|
|
+ */
|
|
|
|
+#if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__))
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * The I2C EEPROM on the TAM3517 contains
|
|
|
|
+ * mac address and production data
|
|
|
|
+ */
|
|
|
|
+struct tam3517_module_info {
|
|
|
|
+ char customer[48];
|
|
|
|
+ char product[48];
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * bit 0~47 : sequence number
|
|
|
|
+ * bit 48~55 : week of year, from 0.
|
|
|
|
+ * bit 56~63 : year
|
|
|
|
+ */
|
|
|
|
+ unsigned long long sequence_number;
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * bit 0~7 : revision fixed
|
|
|
|
+ * bit 8~15 : revision major
|
|
|
|
+ * bit 16~31 : TNxxx
|
|
|
|
+ */
|
|
|
|
+ unsigned int revision;
|
|
|
|
+ unsigned char eth_addr[4][8];
|
|
|
|
+ unsigned char _rev[100];
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+#define TAM3517_READ_MAC_FROM_EEPROM \
|
|
|
|
+do { \
|
|
|
|
+ struct tam3517_module_info info;\
|
|
|
|
+ char buf[80], ethname[20]; \
|
|
|
|
+ int i; \
|
|
|
|
+ i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE); \
|
|
|
|
+ if (eeprom_read(CONFIG_SYS_I2C_EEPROM_ADDR, 0, \
|
|
|
|
+ (void *)&info, sizeof(info))) \
|
|
|
|
+ break; \
|
|
|
|
+ memset(buf, 0, sizeof(buf)); \
|
|
|
|
+ for (i = 0 ; i < ARRAY_SIZE(info.eth_addr); i++) { \
|
|
|
|
+ sprintf(buf, "%02X:%02X:%02X:%02X:%02X:%02X", \
|
|
|
|
+ info.eth_addr[i][5], \
|
|
|
|
+ info.eth_addr[i][4], \
|
|
|
|
+ info.eth_addr[i][3], \
|
|
|
|
+ info.eth_addr[i][2], \
|
|
|
|
+ info.eth_addr[i][1], \
|
|
|
|
+ info.eth_addr[i][0]); \
|
|
|
|
+ \
|
|
|
|
+ if (i) \
|
|
|
|
+ sprintf(ethname, "eth%daddr", i); \
|
|
|
|
+ else \
|
|
|
|
+ sprintf(ethname, "ethaddr"); \
|
|
|
|
+ printf("Setting %s from EEPROM with %s\n", ethname, buf);\
|
|
|
|
+ setenv(ethname, buf); \
|
|
|
|
+ } \
|
|
|
|
+} while (0)
|
|
|
|
+#endif
|
|
|
|
+
|
|
#endif /* __TAM3517_H */
|
|
#endif /* __TAM3517_H */
|