[U-Boot] [PATCH v2 6/6] arm: mvebu: helios4: Reset uSOM onboard phy during board init

Aditya Prayoga aditya at kobol.io
Fri Nov 30 02:54:59 UTC 2018


Similar to Clearfog rev 2.1, GPIO 19 also used to reset onboard ethernet
PHY.

Signed-off-by: Aditya Prayoga <aditya at kobol.io>
---
v2:
* Use generic gpio_* API (Baruch Siach)
---
 board/kobol/helios4/helios4.c | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/board/kobol/helios4/helios4.c b/board/kobol/helios4/helios4.c
index 37c46a5..e535d7b 100644
--- a/board/kobol/helios4/helios4.c
+++ b/board/kobol/helios4/helios4.c
@@ -8,6 +8,7 @@
 #include <i2c.h>
 #include <miiphy.h>
 #include <netdev.h>
+#include <asm/gpio.h>
 #include <asm/io.h>
 #include <asm/arch/cpu.h>
 #include <asm/arch/soc.h>
@@ -111,9 +112,39 @@ int board_early_init_f(void)
 
 int board_init(void)
 {
+	struct udevice *gpio0;
+	struct gpio_desc phy_reset;
+	int ret;
+
 	/* Address of boot parameters */
 	gd->bd->bi_boot_params = mvebu_sdram_bar(0) + 0x100;
 
+	ret = uclass_get_device_by_name(UCLASS_GPIO,
+					"gpio at 18100",
+					&gpio0);
+	if (ret < 0) {
+		printf("Failed to find gpio at 18100 node.\n");
+		return ret;
+	}
+
+	phy_reset.dev = gpio0;
+
+	/* MPP19 controls the uSOM onboard phy reset */
+	phy_reset.offset = 19;
+
+	ret = dm_gpio_request(&phy_reset, "phy-reset");
+	if (ret)
+		return ret;
+
+	dm_gpio_set_dir_flags(&phy_reset,
+			      GPIOD_IS_OUT |
+			      GPIOD_ACTIVE_LOW |
+			      GPIOD_IS_OUT_ACTIVE);
+
+	mdelay(10);
+	dm_gpio_set_value(&phy_reset, 0);
+	mdelay(10);
+
 	return 0;
 }
 
-- 
2.7.4



More information about the U-Boot mailing list