[U-Boot] [PATCH v2 6/6] arm: mvebu: helios4: Reset uSOM onboard phy during board init
Stefan Roese
sr at denx.de
Fri Nov 30 07:44:24 UTC 2018
On 30.11.18 03:54, Aditya Prayoga wrote:
> 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);
> +
Hmm, this is a pretty complex and unusual way to use the GPIO.
Please use the DT to describe the PHY reset GPIO instead. And since
it seems to be a common issue to have such a PHY reset GPIO, it
would be better to integrate this into the ethernet driver instead.
Here an example from the mvpp2 driver:
https://patchwork.ozlabs.org/patch/799654/
Could you try to integrate something similar into the mvneta
driver?
Thanks,
Stefan
More information about the U-Boot
mailing list