This patch moves phy initialization for VSC8601 ethernet phys that are used on early board revisions into a separate setup function.
Signed-off-by: Matthias Fuchs <matthias.fu...@esd.eu> --- board/esd/pmc440/pmc440.c | 45 ++++++++++++++++++++++----------------------- 1 files changed, 22 insertions(+), 23 deletions(-) diff --git a/board/esd/pmc440/pmc440.c b/board/esd/pmc440/pmc440.c index 7aee8e4..3165486 100644 --- a/board/esd/pmc440/pmc440.c +++ b/board/esd/pmc440/pmc440.c @@ -643,6 +643,23 @@ int is_pci_host(struct pci_controller *hose) #endif /* defined(CONFIG_PCI) */ #ifdef CONFIG_RESET_PHY_R +int pmc440_setup_vsc8601(char *devname, int phy_addr, + unsigned short behavior, unsigned short method) +{ + /* adjust LED behavior */ + if (miiphy_write(devname, phy_addr, 0x1f, 0x0001) != 0) { + printf("Phy%d: register write access failed\n", phy_addr); + return -1; + } + + miiphy_write(devname, phy_addr, 0x11, 0x0010); + miiphy_write(devname, phy_addr, 0x11, behavior); + miiphy_write(devname, phy_addr, 0x10, method); + miiphy_write(devname, phy_addr, 0x1f, 0x0000); + + return 0; +} + int pmc440_setup_ksz9031(char *devname, int phy_addr) { unsigned short id1, id2; @@ -683,29 +700,11 @@ void reset_phy(void) val_behavior = 0x0cf0; } - if (miiphy_write("ppc_4xx_eth0", - CONFIG_PHY_ADDR, 0x1f, 0x0001) == 0) { - miiphy_write("ppc_4xx_eth0", - CONFIG_PHY_ADDR, 0x11, 0x0010); - miiphy_write("ppc_4xx_eth0", - CONFIG_PHY_ADDR, 0x11, val_behavior); - miiphy_write("ppc_4xx_eth0", - CONFIG_PHY_ADDR, 0x10, val_method); - miiphy_write("ppc_4xx_eth0", - CONFIG_PHY_ADDR, 0x1f, 0x0000); - } - - if (miiphy_write("ppc_4xx_eth1", - CONFIG_PHY1_ADDR, 0x1f, 0x0001) == 0) { - miiphy_write("ppc_4xx_eth1", - CONFIG_PHY1_ADDR, 0x11, 0x0010); - miiphy_write("ppc_4xx_eth1", - CONFIG_PHY1_ADDR, 0x11, val_behavior); - miiphy_write("ppc_4xx_eth1", - CONFIG_PHY1_ADDR, 0x10, val_method); - miiphy_write("ppc_4xx_eth1", - CONFIG_PHY1_ADDR, 0x1f, 0x0000); - } + /* boards up to rev. 1.3 use Vitesse VSC8601 phys */ + pmc440_setup_vsc8601("ppc_4xx_eth0", CONFIG_PHY_ADDR, + val_method, val_behavior); + pmc440_setup_vsc8601("ppc_4xx_eth1", CONFIG_PHY1_ADDR, + val_method, val_behavior); } else { /* rev. 1.4 uses a Micrel KSZ9031 */ pmc440_setup_ksz9031("ppc_4xx_eth0", CONFIG_PHY_ADDR); -- 1.6.1 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot