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

Reply via email to