On 06.12.2013 11:17, yegorsli...@googlemail.com wrote: > From: Yegor Yefremov <yegorsli...@googlemail.com> > > Pin 30 is connected to PHY's RESET# signal, so it must be > put to high. Otherwise PHY won't be found via MDIO interface. > > Signed-off-by: Yegor Yefremov <yegorsli...@googlemail.com>
Looks good. One questions below though: > --- > Changes: > v3: use "__maybe_unused", instead of #if defined statement (Stefan > Roese) > v2: put ctr and reset under #if defined statement, to avoid compiler > warnings, when EMAC is not selected > > board/logicpd/am3517evm/am3517evm.c | 34 ++++++++++++++++++++++++++++++++++ > board/logicpd/am3517evm/am3517evm.h | 2 +- > 2 files changed, 35 insertions(+), 1 deletions(-) > > diff --git a/board/logicpd/am3517evm/am3517evm.c > b/board/logicpd/am3517evm/am3517evm.c > index 1569905..3b1dfd1 100644 > --- a/board/logicpd/am3517evm/am3517evm.c > +++ b/board/logicpd/am3517evm/am3517evm.c > @@ -22,6 +22,7 @@ > #include <asm/arch/musb.h> > #include <asm/mach-types.h> > #include <asm/errno.h> > +#include <asm/gpio.h> > #include <linux/usb/ch9.h> > #include <linux/usb/gadget.h> > #include <linux/usb/musb.h> > @@ -31,6 +32,9 @@ > > DECLARE_GLOBAL_DATA_PTR; > > +#define AM3517_IP_SW_RESET 0x48002598 > +#define CPGMACSS_SW_RST (1 << 1) > + > /* > * Routine: board_init > * Description: Early hardware init. > @@ -98,6 +102,9 @@ static void am3517_evm_musb_init(void) > */ > int misc_init_r(void) > { > + __maybe_unused volatile unsigned int ctr; > + __maybe_unused u32 reset; > + > #ifdef CONFIG_SYS_I2C_OMAP34XX > i2c_init(CONFIG_SYS_OMAP24_I2C_SPEED, CONFIG_SYS_OMAP24_I2C_SLAVE); > #endif > @@ -106,6 +113,33 @@ int misc_init_r(void) > > am3517_evm_musb_init(); > > +#if defined(CONFIG_DRIVER_TI_EMAC) > + /* activate PHY reset */ > + gpio_direction_output(30, 0); > + gpio_set_value(30, 0); > + > + ctr = 0; > + do { > + udelay(1000); > + ctr++; > + } while (ctr < 300); > + > + /* deactivate PHY reset */ > + gpio_set_value(30, 1); > + > + /* allow the PHY to stabilize and settle down */ > + ctr = 0; > + do { > + udelay(1000); > + ctr++; > + } while (ctr < 300); > + > + /* ensure that the module is out of reset */ > + reset = readl(AM3517_IP_SW_RESET); > + reset &= (~CPGMACSS_SW_RST); > + writel(reset,AM3517_IP_SW_RESET); > +#endif Why do you need to put this "#if defined(CONFIG_DRIVER_TI_EMAC)" here at all? Isn't CONFIG_DRIVER_TI_EMAC enabled for this board always? Thanks, Stefan _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot