diff options
author | Tim Harvey <tharvey@gateworks.com> | 2017-03-17 07:30:38 -0700 |
---|---|---|
committer | Stefano Babic <sbabic@denx.de> | 2017-03-20 19:10:22 +0100 |
commit | 8d1a6ff825a42d28fc4031d4f111b05b6898d7e8 (patch) | |
tree | d616f14aae815d08b7080ceeaa8fc7af534e0349 /board/gateworks/gw_ventana/gw_ventana.c | |
parent | b4f4b0f54bcc4e2c6a97e0bc9b3a3a1aea3cb41c (diff) | |
download | u-boot-midas-8d1a6ff825a42d28fc4031d4f111b05b6898d7e8.tar.gz u-boot-midas-8d1a6ff825a42d28fc4031d4f111b05b6898d7e8.tar.bz2 u-boot-midas-8d1a6ff825a42d28fc4031d4f111b05b6898d7e8.zip |
imx: ventana: add GW5904 support
Signed-off-by: Tim Harvey <tharvey@gateworks.com>
Diffstat (limited to 'board/gateworks/gw_ventana/gw_ventana.c')
-rw-r--r-- | board/gateworks/gw_ventana/gw_ventana.c | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/board/gateworks/gw_ventana/gw_ventana.c b/board/gateworks/gw_ventana/gw_ventana.c index 3f9d2f7010..0768799457 100644 --- a/board/gateworks/gw_ventana/gw_ventana.c +++ b/board/gateworks/gw_ventana/gw_ventana.c @@ -132,8 +132,9 @@ static void setup_iomux_enet(int gpio) /* toggle PHY_RST# */ gpio_request(gpio, "phy_rst#"); gpio_direction_output(gpio, 0); - mdelay(2); + mdelay(10); gpio_set_value(gpio, 1); + mdelay(100); } #ifdef CONFIG_USB_EHCI_MX6 @@ -232,6 +233,38 @@ int board_phy_config(struct phy_device *phydev) return 0; } +#ifdef CONFIG_MV88E61XX_SWITCH +int mv88e61xx_hw_reset(struct phy_device *phydev) +{ + struct mii_dev *bus = phydev->bus; + + /* GPIO[0] output, CLK125 */ + debug("enabling RGMII_REFCLK\n"); + bus->write(bus, 0x1c /*MV_GLOBAL2*/, 0, + 0x1a /*MV_SCRATCH_MISC*/, + (1 << 15) | (0x62 /*MV_GPIO_DIR*/ << 8) | 0xfe); + bus->write(bus, 0x1c /*MV_GLOBAL2*/, 0, + 0x1a /*MV_SCRATCH_MISC*/, + (1 << 15) | (0x68 /*MV_GPIO01_CNTL*/ << 8) | 7); + + /* RGMII delay - Physical Control register bit[15:14] */ + debug("setting port%d RGMII rx/tx delay\n", CONFIG_MV88E61XX_CPU_PORT); + /* forced 1000mbps full-duplex link */ + bus->write(bus, 0x10 + CONFIG_MV88E61XX_CPU_PORT, 0, 1, 0xc0fe); + phydev->autoneg = AUTONEG_DISABLE; + phydev->speed = SPEED_1000; + phydev->duplex = DUPLEX_FULL; + + /* LED configuration: 7:4-green (8=Activity) 3:0 amber (9=10Link) */ + bus->write(bus, 0x10, 0, 0x16, 0x8089); + bus->write(bus, 0x11, 0, 0x16, 0x8089); + bus->write(bus, 0x12, 0, 0x16, 0x8089); + bus->write(bus, 0x13, 0, 0x16, 0x8089); + + return 0; +} +#endif // CONFIG_MV88E61XX_SWITCH + int board_eth_init(bd_t *bis) { #ifdef CONFIG_FEC_MXC |