ARM: DRA7: Enable EEPROM support
authorLokesh Vutla <lokeshvutla@ti.com>
Tue, 8 Mar 2016 03:48:05 +0000 (09:18 +0530)
committerTom Rini <trini@konsulko.com>
Mon, 14 Mar 2016 23:18:50 +0000 (19:18 -0400)
Enable EEPROM support for DRA74-evm.

Acked-by: Nishanth Menon <nm@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
arch/arm/cpu/armv7/omap5/Kconfig
board/ti/dra7xx/Kconfig
board/ti/dra7xx/evm.c
include/configs/dra7xx_evm.h

index f265b34..026bf24 100644 (file)
@@ -12,6 +12,7 @@ config TARGET_OMAP5_UEVM
 
 config TARGET_DRA7XX_EVM
        bool "TI DRA7XX"
+       select TI_I2C_BOARD_DETECT
 
 config TARGET_BEAGLE_X15
        bool "BeagleBoard X15"
index 80341d9..b642113 100644 (file)
@@ -17,4 +17,7 @@ config CONS_INDEX
          The DRA7xx (and AM57x) SoC has a total of 6 UARTs available to it.
          Depending on your specific board you may want something other than UART1
          here.
+
+source "board/ti/common/Kconfig"
+
 endif
index eebec88..a47122b 100644 (file)
@@ -13,6 +13,7 @@
 #include <common.h>
 #include <palmas.h>
 #include <sata.h>
+#include <linux/string.h>
 #include <asm/gpio.h>
 #include <usb.h>
 #include <linux/usb/gadget.h>
 #include <ti-usb-phy-uboot.h>
 
 #include "mux_data.h"
+#include "../common/board_detect.h"
+
+#define board_is_dra74x_evm()          board_ti_is("5777xCPU")
+#define board_is_dra74x_revh_or_later() board_is_dra74x_evm() &&       \
+                               (strncmp("H", board_ti_get_rev(), 1) <= 0)
 
 #ifdef CONFIG_DRIVER_TI_CPSW
 #include <cpsw.h>
@@ -37,8 +43,10 @@ DECLARE_GLOBAL_DATA_PTR;
 /* GPIO 7_11 */
 #define GPIO_DDR_VTT_EN 203
 
+#define SYSINFO_BOARD_NAME_MAX_LEN     37
+
 const struct omap_sysinfo sysinfo = {
-       "Board: DRA7xx\n"
+       "Board: UNKNOWN(DRA7 EVM) REV UNKNOWN\n"
 };
 
 /**
@@ -57,16 +65,59 @@ int board_init(void)
 int board_late_init(void)
 {
 #ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
-       if (omap_revision() == DRA722_ES1_0)
-               setenv("board_name", "dra72x");
+       char *name = "unknown";
+
+       if (is_dra72x())
+               name = "dra72x";
        else
-               setenv("board_name", "dra7xx");
+               name = "dra7xx";
+
+       set_board_info_env(name);
 
        omap_die_id_serial();
 #endif
        return 0;
 }
 
+#ifdef CONFIG_SPL_BUILD
+void do_board_detect(void)
+{
+       int rc;
+
+       rc = ti_i2c_eeprom_dra7_get(CONFIG_EEPROM_BUS_ADDRESS,
+                                   CONFIG_EEPROM_CHIP_ADDRESS);
+       if (rc)
+               printf("ti_i2c_eeprom_init failed %d\n", rc);
+}
+
+#else
+
+void do_board_detect(void)
+{
+       char *bname = NULL;
+       int rc;
+
+       rc = ti_i2c_eeprom_dra7_get(CONFIG_EEPROM_BUS_ADDRESS,
+                                   CONFIG_EEPROM_CHIP_ADDRESS);
+       if (rc)
+               printf("ti_i2c_eeprom_init failed %d\n", rc);
+
+       if (board_is_dra74x_evm()) {
+               bname = "DRA74x EVM";
+       /* If EEPROM is not populated */
+       } else {
+               if (is_dra72x())
+                       bname = "DRA72x EVM";
+               else
+                       bname = "DRA74x EVM";
+       }
+
+       if (bname)
+               snprintf(sysinfo.board_string, SYSINFO_BOARD_NAME_MAX_LEN,
+                        "Board: %s REV %s\n", bname, board_ti_get_rev());
+}
+#endif /* CONFIG_SPL_BUILD */
+
 void set_muxconf_regs_essential(void)
 {
        do_set_mux32((*ctrl)->control_padconf_core_base,
index 0196280..e79250b 100644 (file)
 #endif
 #endif  /* NOR support */
 
+/* EEPROM */
+#define CONFIG_EEPROM_CHIP_ADDRESS 0x50
+#define CONFIG_EEPROM_BUS_ADDRESS 0
+
 #endif /* __CONFIG_DRA7XX_EVM_H */