We apply below patch as suggestion and run test again. We found Dbg0x11[0] can't set to 1. Is this correct? BTW the test still fail in the end.
diff --git a/sdk/drivers/enet/src/enet_drv.c b/sdk/drivers/enet/src/enet_drv.c
index 7d8c0b2..c6aa718 100755
--- a/sdk/drivers/enet/src/enet_drv.c
+++ b/sdk/drivers/enet/src/enet_drv.c
@@ -273,6 +273,26 @@ void enet_phy_rework_ar8031(imx_enet_priv_t * dev)
imx_enet_mii_read(dev->enet_reg, dev->phy_addr, 0x1e, &val);
val |= 0x0100;
imx_enet_mii_write(dev->enet_reg, dev->phy_addr, 0x1e, val);
+
+ /* https://community.freescale.com/message/504404#504404 */
+ /* Dbg0xb means debug register whose offset address is 0xb. */
+ /* Preg0 means basic register 0. */
+ /* Config Dbg0xb[15]=0 disable hibernate(power saving mode) */
+ imx_enet_mii_read(dev->enet_reg, dev->phy_addr, 0xb, &val);
+ printf("!!!!!! val=%04x\n", val);
+ val &= 0x7fff;
+ printf("!!!!!! val=%04x\n", val);
+ imx_enet_mii_write(dev->enet_reg, dev->phy_addr, 0xb, val);
+ imx_enet_mii_read(dev->enet_reg, dev->phy_addr, 0xb, &val);
+ printf("!!!!!! Dbg0xb=%04x\n", val);
+ /* Dbg0x11[0]=1 enable external loopback */
+ imx_enet_mii_read(dev->enet_reg, dev->phy_addr, 0x11, &val);
+ printf("!!!!!! val=%04x\n", val);
+ val |= 0x1;
+ printf("!!!!!! val=%04x\n", val);
+ imx_enet_mii_write(dev->enet_reg, dev->phy_addr, 0x11, val);
+ imx_enet_mii_read(dev->enet_reg, dev->phy_addr, 0x11, &val);
+ printf("!!!!!! Dbg0x11=%04x\n", val);
#endif
ENET AR8031 PHY: ID=4dd070
!!!!!! val=0000
!!!!!! val=0000
!!!!!! Dbg0xb=0000
!!!!!! val=0010
!!!!!! val=0011
!!!!!! Dbg0x11=0010
enet phy status 1: 7949
AR8031 reg 0x11 = 0010
ENET link status check failed.