|
@@ -44,6 +44,37 @@ struct ti_am_eeprom {
|
|
|
char mac_addr[TI_EEPROM_HDR_NO_OF_MAC_ADDR][TI_EEPROM_HDR_ETH_ALEN];
|
|
|
} __attribute__ ((__packed__));
|
|
|
|
|
|
+/* DRA7 EEPROM MAGIC Header identifier */
|
|
|
+#define DRA7_EEPROM_HEADER_MAGIC 0xAA5533EE
|
|
|
+#define DRA7_EEPROM_HDR_NAME_LEN 16
|
|
|
+#define DRA7_EEPROM_HDR_CONFIG_LEN 4
|
|
|
+
|
|
|
+/**
|
|
|
+ * struct dra7_eeprom - This structure holds data read in from the DRA7 EVM
|
|
|
+ * EEPROMs.
|
|
|
+ * @header: This holds the magic number
|
|
|
+ * @name: The name of the board
|
|
|
+ * @version_major: Board major version
|
|
|
+ * @version_minor: Board minor version
|
|
|
+ * @config: Board specific config options
|
|
|
+ * @emif1_size: Size of DDR attached to EMIF1
|
|
|
+ * @emif2_size: Size of DDR attached to EMIF2
|
|
|
+ *
|
|
|
+ * The data is this structure is read from the EEPROM on the board.
|
|
|
+ * It is used for board detection which is based on name. It is used
|
|
|
+ * to configure specific DRA7 boards. This allows booting of multiple
|
|
|
+ * DRA7 boards with a single MLO and u-boot.
|
|
|
+ */
|
|
|
+struct dra7_eeprom {
|
|
|
+ u32 header;
|
|
|
+ char name[DRA7_EEPROM_HDR_NAME_LEN];
|
|
|
+ u16 version_major;
|
|
|
+ u16 version_minor;
|
|
|
+ char config[DRA7_EEPROM_HDR_CONFIG_LEN];
|
|
|
+ u32 emif1_size;
|
|
|
+ u32 emif2_size;
|
|
|
+} __attribute__ ((__packed__));
|
|
|
+
|
|
|
/**
|
|
|
* struct ti_common_eeprom - Null terminated, usable EEPROM contents.
|
|
|
* header: Magic number
|
|
@@ -52,6 +83,8 @@ struct ti_am_eeprom {
|
|
|
* @serial: NULL terminated serial number
|
|
|
* @config: NULL terminated Board specific config options
|
|
|
* @mac_addr: MAC addresses
|
|
|
+ * @emif1_size: Size of the ddr available on emif1
|
|
|
+ * @emif2_size: Size of the ddr available on emif2
|
|
|
*/
|
|
|
struct ti_common_eeprom {
|
|
|
u32 header;
|
|
@@ -60,6 +93,8 @@ struct ti_common_eeprom {
|
|
|
char serial[TI_EEPROM_HDR_SERIAL_LEN + 1];
|
|
|
char config[TI_EEPROM_HDR_CONFIG_LEN + 1];
|
|
|
char mac_addr[TI_EEPROM_HDR_NO_OF_MAC_ADDR][TI_EEPROM_HDR_ETH_ALEN];
|
|
|
+ u64 emif1_size;
|
|
|
+ u64 emif2_size;
|
|
|
};
|
|
|
|
|
|
#define TI_EEPROM_DATA ((struct ti_common_eeprom *)\
|
|
@@ -75,6 +110,13 @@ struct ti_common_eeprom {
|
|
|
*/
|
|
|
int ti_i2c_eeprom_am_get(int bus_addr, int dev_addr);
|
|
|
|
|
|
+/**
|
|
|
+ * ti_i2c_eeprom_dra7_get() - Consolidated eeprom data for DRA7 TI EVMs
|
|
|
+ * @bus_addr: I2C bus address
|
|
|
+ * @dev_addr: I2C slave address
|
|
|
+ */
|
|
|
+int ti_i2c_eeprom_dra7_get(int bus_addr, int dev_addr);
|
|
|
+
|
|
|
/**
|
|
|
* board_ti_is() - Board detection logic for TI EVMs
|
|
|
* @name_tag: Tag used in eeprom for the board
|
|
@@ -129,6 +171,20 @@ char *board_ti_get_name(void);
|
|
|
*/
|
|
|
void board_ti_get_eth_mac_addr(int index, u8 mac_addr[TI_EEPROM_HDR_ETH_ALEN]);
|
|
|
|
|
|
+/**
|
|
|
+ * board_ti_get_emif1_size() - Get size of the DDR on emif1 for TI EVMs
|
|
|
+ *
|
|
|
+ * Return: NULL if eeprom was'nt read or emif1_size is not available.
|
|
|
+ */
|
|
|
+u64 board_ti_get_emif1_size(void);
|
|
|
+
|
|
|
+/**
|
|
|
+ * board_ti_get_emif2_size() - Get size of the DDR on emif2 for TI EVMs
|
|
|
+ *
|
|
|
+ * Return: NULL if eeprom was'nt read or emif2_size is not available.
|
|
|
+ */
|
|
|
+u64 board_ti_get_emif2_size(void);
|
|
|
+
|
|
|
/**
|
|
|
* set_board_info_env() - Setup commonly used board information environment vars
|
|
|
* @name: Name of the board
|