armv8: ls2080aqds: fix SGMII repeater settings
authorShaohui Xie <Shaohui.Xie@nxp.com>
Mon, 17 Oct 2016 08:20:48 +0000 (16:20 +0800)
committerYork Sun <york.sun@nxp.com>
Mon, 21 Nov 2016 17:20:32 +0000 (09:20 -0800)
The current value to check whether the PHY was configured has dependency
on MC, it expects MC to start PCS AN, this is not true during boot up,
so it should be changed to remove the dependency.

The PHY's register space should be restore to default after accessing
extended space.

Signed-off-by: Shaohui Xie <Shaohui.Xie@nxp.com>
Reviewed-by: York Sun <york.sun@nxp.com>
board/freescale/ls2080aqds/eth.c

index 8618506b8b6f0b7757759f960e09629de3dcd7f9..59361e9111f5382b528911a97319a712c8b65bed 100644 (file)
@@ -144,8 +144,10 @@ static void sgmii_configure_repeater(int serdes_port)
 
                mdelay(10);
 
-               if ((value & 0xfff) == 0x40f) {
+               if ((value & 0xfff) == 0x401) {
                        printf("DPMAC %d:PHY is ..... Configured\n", dpmac_id);
+                       miiphy_write(dev[mii_bus], riser_phy_addr[dpmac],
+                                    0x1f, 0);
                        continue;
                }
 
@@ -181,28 +183,29 @@ static void sgmii_configure_repeater(int serdes_port)
                                if (ret > 0)
                                        goto error;
 
-                               mdelay(1);
+                               mdelay(100);
                                ret = miiphy_read(dev[mii_bus],
                                                  riser_phy_addr[dpmac],
                                                  0x11, &value);
                                if (ret > 0)
                                        goto error;
-                               mdelay(10);
 
-                               if ((value & 0xfff) == 0x40f) {
+                               if ((value & 0xfff) == 0x401) {
                                        printf("DPMAC %d :PHY is configured ",
                                               dpmac_id);
                                        printf("after setting repeater 0x%x\n",
                                               value);
                                        i = 5;
                                        j = 5;
-                               } else
+                               } else {
                                        printf("DPMAC %d :PHY is failed to ",
                                               dpmac_id);
                                        printf("configure the repeater 0x%x\n",
                                               value);
                                }
+                       }
                }
+               miiphy_write(dev[mii_bus], riser_phy_addr[dpmac], 0x1f, 0);
        }
 error:
        if (ret)