Home > OS >  Zc706 find PHY PHY is not detected the GEM PHY init failed
Zc706 find PHY PHY is not detected the GEM PHY init failed

Time:11-17

We are homemade boards, want to use 1000 base communication, platform is xilnx zc706, phy mode for RGMII,

Uboot start times wrong:
PHY address is not setup correctly 7
PHY is not detected
GEM PHY init failed
No Ethernet found
Do you have done, how to solve this problem?

CodePudding user response:

PHY ID right

CodePudding user response:

reference 1st floor melo_fang response:
PHY ID right?

& Gem0 {
The status="okay";
Phy - mode="rgmii - id";
Phy - handle=& lt; & Ethernet_phy & gt;;
Pinctrl - names="default";
Pinctrl - 0=& lt; & Pinctrl_gem0_default & gt;;

Ethernet_phy: Ethernet - phy @ 7 {
Reg=& lt; 7 & gt;;
Device_type="Ethernet - phy";
XLNX, phy -type=& lt; 0 x 5 & gt;;

};
};
The id should be no problem,
The problem on the RGMII mode, in the mode of the phy network register number have problems

CodePudding user response:

Reading a phy register go management MDIO mouth, and in the RGMII mode it doesn't matter, can now normal access phy register?

CodePudding user response:

reference 3 floor actually don't want to understand response:
read the management of the phy register go MDIO mouth, and in the RGMII mode it doesn't matter, can now normal access phy register?

Hello, I put the fault-tolerant block error, is to be able to access the phy register, and register states also have change, can visit phy registers,
Uboot error source location:
/* the Enable only MDIO bus */
Writel (ZYNQ_GEM_NWCTRL_MDEN_MASK, & amp; Regs - & gt; NWCTRL);

If (priv - & gt; Interface!={PHY_INTERFACE_MODE_SGMII)
Ret=phy_detection (dev);
If (ret) {
Printf (" the GEM PHY init failed \ n ");
return ret;
}
}
My shield is the judgment,

CodePudding user response:

reference 3 floor actually don't want to understand response:
read the management of the phy register go MDIO mouth, and in the RGMII mode it doesn't matter, can now normal access phy register?

Phy_detection this function:
Phyread (priv, priv - & gt; Phyaddr PHY_DETECT_REG, & amp; Phyreg);
If ((phyreg!=0 XFFFF) & amp; &
((phyreg & amp; PHY_DETECT_MASK)==PHY_DETECT_MASK)) {
/* Found a valid PHY address */
The debug (" Default phy address % d is valid \ n ",
Priv - & gt; Phyaddr);
return 0;
}
PHY_DETECT_MASK: this macro is 1808, I don't know why is 1808.
  • Related