
Similar to Clearfog rev 2.1, GPIO 19 also used to reset onboard ethernet PHY.
Signed-off-by: Aditya Prayoga aditya@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@18100", + &gpio0); + if (ret < 0) { + printf("Failed to find gpio@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; }