diff mbox series

[U-Boot] armv8: ls1012a: enable/disable eSDHC1 through hwconfig for RDB

Message ID 20171116022752.40410-1-yangbo.lu@nxp.com
State Superseded
Delegated to: York Sun
Headers show
Series [U-Boot] armv8: ls1012a: enable/disable eSDHC1 through hwconfig for RDB | expand

Commit Message

Yangbo Lu Nov. 16, 2017, 2:27 a.m. UTC
For LS1012ARDB RevD and later versions, the I2C reading for DIP
switch setting had been no longer reliable since the board was
reworked. This patch is to add hwconfig support to enable/disable
eSDHC1 manually.

Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
---
 board/freescale/ls1012ardb/ls1012ardb.c | 29 ++++-------------------------
 1 file changed, 4 insertions(+), 25 deletions(-)

Comments

Yangbo Lu Nov. 16, 2017, 2:48 a.m. UTC | #1
+ York

-----Original Message-----
From: Yangbo Lu [mailto:yangbo.lu@nxp.com] 

Sent: 2017年11月16日 10:28
To: u-boot@lists.denx.de; Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com>; Sumit Garg <sumit.garg@nxp.com>
Cc: Y.b. Lu <yangbo.lu@nxp.com>
Subject: [PATCH] armv8: ls1012a: enable/disable eSDHC1 through hwconfig for RDB

For LS1012ARDB RevD and later versions, the I2C reading for DIP switch setting had been no longer reliable since the board was reworked. This patch is to add hwconfig support to enable/disable
eSDHC1 manually.

Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>

---
 board/freescale/ls1012ardb/ls1012ardb.c | 29 ++++-------------------------
 1 file changed, 4 insertions(+), 25 deletions(-)

diff --git a/board/freescale/ls1012ardb/ls1012ardb.c b/board/freescale/ls1012ardb/ls1012ardb.c
index 41283dba42..19f0c3f941 100644
--- a/board/freescale/ls1012ardb/ls1012ardb.c
+++ b/board/freescale/ls1012ardb/ls1012ardb.c
@@ -128,39 +128,18 @@ int board_init(void)
 
 int esdhc_status_fixup(void *blob, const char *compat)  {
-	char esdhc0_path[] = "/soc/esdhc@1560000";
 	char esdhc1_path[] = "/soc/esdhc@1580000";
-	u8 io = 0;
-	u8 mux_sdhc2;
+	char *env_hwconfig;
 
-	do_fixup_by_path(blob, esdhc0_path, "status", "okay",
-			 sizeof("okay"), 1);
+	env_hwconfig = getenv("hwconfig");
 
-	i2c_set_bus_num(0);
-
-	/*
-	 * The I2C IO-expander for mux select is used to control the muxing
-	 * of various onboard interfaces.
-	 *
-	 * IO1[3:2] indicates SDHC2 interface demultiplexer select lines.
-	 *	00 - SDIO wifi
-	 *	01 - GPIO (to Arduino)
-	 *	10 - eMMC Memory
-	 *	11 - SPI
-	 */
-	if (i2c_read(I2C_MUX_IO1_ADDR, 0, 1, &io, 1) < 0) {
-		printf("Error reading i2c boot information!\n");
-		return 0; /* Don't want to hang() on this error */
-	}
-
-	mux_sdhc2 = (io & 0x0c) >> 2;
-	/* Enable SDHC2 only when use SDIO wifi and eMMC */
-	if (mux_sdhc2 == 2 || mux_sdhc2 == 0)
+	if (hwconfig_f("esdhc1", env_hwconfig))
 		do_fixup_by_path(blob, esdhc1_path, "status", "okay",
 				 sizeof("okay"), 1);
 	else
 		do_fixup_by_path(blob, esdhc1_path, "status", "disabled",
 				 sizeof("disabled"), 1);
+
 	return 0;
 }
 
--
2.14.1
diff mbox series

Patch

diff --git a/board/freescale/ls1012ardb/ls1012ardb.c b/board/freescale/ls1012ardb/ls1012ardb.c
index 41283dba42..19f0c3f941 100644
--- a/board/freescale/ls1012ardb/ls1012ardb.c
+++ b/board/freescale/ls1012ardb/ls1012ardb.c
@@ -128,39 +128,18 @@  int board_init(void)
 
 int esdhc_status_fixup(void *blob, const char *compat)
 {
-	char esdhc0_path[] = "/soc/esdhc@1560000";
 	char esdhc1_path[] = "/soc/esdhc@1580000";
-	u8 io = 0;
-	u8 mux_sdhc2;
+	char *env_hwconfig;
 
-	do_fixup_by_path(blob, esdhc0_path, "status", "okay",
-			 sizeof("okay"), 1);
+	env_hwconfig = getenv("hwconfig");
 
-	i2c_set_bus_num(0);
-
-	/*
-	 * The I2C IO-expander for mux select is used to control the muxing
-	 * of various onboard interfaces.
-	 *
-	 * IO1[3:2] indicates SDHC2 interface demultiplexer select lines.
-	 *	00 - SDIO wifi
-	 *	01 - GPIO (to Arduino)
-	 *	10 - eMMC Memory
-	 *	11 - SPI
-	 */
-	if (i2c_read(I2C_MUX_IO1_ADDR, 0, 1, &io, 1) < 0) {
-		printf("Error reading i2c boot information!\n");
-		return 0; /* Don't want to hang() on this error */
-	}
-
-	mux_sdhc2 = (io & 0x0c) >> 2;
-	/* Enable SDHC2 only when use SDIO wifi and eMMC */
-	if (mux_sdhc2 == 2 || mux_sdhc2 == 0)
+	if (hwconfig_f("esdhc1", env_hwconfig))
 		do_fixup_by_path(blob, esdhc1_path, "status", "okay",
 				 sizeof("okay"), 1);
 	else
 		do_fixup_by_path(blob, esdhc1_path, "status", "disabled",
 				 sizeof("disabled"), 1);
+
 	return 0;
 }