On Fri, Dec 6, 2013 at 11:37 AM, Stefan Roese <stefan.ro...@gmail.com> wrote: > 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?
It is enabled in arago repository: http://arago-project.org/git/projects/?p=u-boot-omap3.git;a=blob;f=include/configs/am3517_evm.h;h=b37b81e2aa5d635d14db87393e751ac25cb3611e;hb=HEAD, but not in upstream u-boot. I was testing the stuff with my own board, so my am3517_evm.h is a little bit messy for now. That's why I wanted to have this change only in board/logicpd/am3517evm/am3517evm.c. It does no harm so far. I could patch am3517_evm.h later. Yegor _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot