diff mbox

[U-Boot,17/31] ks2_evm: Add EEPROM based board detection

Message ID 20170302190435.23212-18-fcooper@ti.com
State Changes Requested
Delegated to: Tom Rini
Headers show

Commit Message

Franklin S Cooper Jr March 2, 2017, 7:04 p.m. UTC
Some K2G evms have their EEPROM programming while most do not. Therefore,
add EEPROM board detection to be used as the default method and fall back
to the alternative board detection when needed.

Also reorder board configuration. Perform bare minimal configuration
initially since board detection hasn't ran. Finish board configuration
once the board has been identified.

Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
---
 board/ti/ks2_evm/board.h     |  1 +
 board/ti/ks2_evm/board_k2g.c | 44 +++++++++++++++++++++++---------------------
 2 files changed, 24 insertions(+), 21 deletions(-)

Comments

Tom Rini March 9, 2017, 1:08 p.m. UTC | #1
On Thu, Mar 02, 2017 at 01:04:21PM -0600, Franklin S Cooper Jr wrote:

> Some K2G evms have their EEPROM programming while most do not. Therefore,
> add EEPROM board detection to be used as the default method and fall back
> to the alternative board detection when needed.
> 
> Also reorder board configuration. Perform bare minimal configuration
> initially since board detection hasn't ran. Finish board configuration
> once the board has been identified.
> 
> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>

Reviewed-by: Tom Rini <trini@konsulko.com>
diff mbox

Patch

diff --git a/board/ti/ks2_evm/board.h b/board/ti/ks2_evm/board.h
index 2bbd792..0698921 100644
--- a/board/ti/ks2_evm/board.h
+++ b/board/ti/ks2_evm/board.h
@@ -11,6 +11,7 @@ 
 #define _KS2_BOARD
 
 #include <asm/ti-common/keystone_net.h>
+#include "../common/board_detect.h"
 
 extern struct eth_priv_t eth_priv_cfg[];
 
diff --git a/board/ti/ks2_evm/board_k2g.c b/board/ti/ks2_evm/board_k2g.c
index d47b43d..64b1f6b 100644
--- a/board/ti/ks2_evm/board_k2g.c
+++ b/board/ti/ks2_evm/board_k2g.c
@@ -152,24 +152,6 @@  static int k2g_alt_board_detect(void)
 	return 0;
 }
 
-int embedded_dtb_select(void)
-{
-	int rc;
-
-	rc = k2g_alt_board_detect();
-	if (rc) {
-		printf("Unable to do board detection\n");
-		return -1;
-	}
-
-	fdtdec_setup();
-
-	return 0;
-}
-#endif
-
-#ifdef CONFIG_BOARD_EARLY_INIT_F
-
 static void k2g_reset_mux_config(void)
 {
 	/* Unlock the reset mux register */
@@ -183,11 +165,20 @@  static void k2g_reset_mux_config(void)
 	setbits_le32(KS2_RSTMUX8, RSTMUX_LOCK8_MASK);
 }
 
-int board_early_init_f(void)
+int embedded_dtb_select(void)
 {
-	init_plls();
+	int rc;
+	rc = ti_i2c_eeprom_am_get(CONFIG_EEPROM_BUS_ADDRESS,
+			CONFIG_EEPROM_CHIP_ADDRESS);
+	if (rc) {
+		rc = k2g_alt_board_detect();
+		if (rc) {
+			printf("Unable to do board detection\n");
+			return -1;
+		}
+	}
 
-	k2g_mux_config();
+	fdtdec_setup();
 
 	k2g_reset_mux_config();
 
@@ -201,6 +192,17 @@  int board_early_init_f(void)
 }
 #endif
 
+#ifdef CONFIG_BOARD_EARLY_INIT_F
+int board_early_init_f(void)
+{
+	init_plls();
+
+	k2g_mux_config();
+
+	return 0;
+}
+#endif
+
 #ifdef CONFIG_SPL_BUILD
 void spl_init_keystone_plls(void)
 {