[U-Boot] [PATCH v3] am3517_evm: activate Ethernet PHY
Stefan Roese
stefan.roese at gmail.com
Fri Dec 6 11:37:04 CET 2013
On 06.12.2013 11:17, yegorslists at googlemail.com wrote:
> From: Yegor Yefremov <yegorslists at 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 <yegorslists at 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
More information about the U-Boot
mailing list