Hi Stefan, On Fri, Nov 30, 2018 at 2:44 PM Stefan Roese <s...@denx.de> wrote: > > 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 <adi...@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; > >
From here > > + 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; > > + up until this line can be replaced by a single line ret = dm_gpio_lookup_name("A19", &reset); but gpio "A19" does not correlate with any documentation (datasheet, schematic, or device tree). I also got this warning "Device 'gpio@18100': seq 0 is in use by 'gpio-expander@20'" > > + 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. well, I followed minnowmax implementation (board/intel/minnowmax/minnowmax.c) and some other boards. Maybe I should use named gpios in the device tree. Aditya > 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 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot