Showing results for 
Show  only  | Search instead for 
Did you mean: 
Registered: ‎05-10-2019

External PHY without MDIO Zynq z7030

Hi there,


I have a custom board using a Zynq 7030, and I am trying to set up ethernet using an external phy located on an external ethernet card. The ethernet card ( uses a TI DP83867 PHY, and I have enabled the MIO pins on the Zynq for the ENET0 interface, and those pins have been brought out on the custom board and are connected to the ethernet card accordingly.

However, we did not bring out the MDIO pins on the custom board and we will not be able to. So we are trying to configure the external PHY to work without any configuration over the MDIO. My understanding is that we can use a fixed-link directive in our device-tree in Petalinux. After referencing some forum posts such as ( ), we have tried a number of variations of the following device-tree block, which is added to system-user.dtsi to append to the entire device-tree:


#address-cells = <0x1>;

#size-cells = <0x0>;

phy-mode = "moca";

status = "okay";

fixed-link {

speed = <1000>;





When we use this device-tree, Linux boots and we can see the generic PHY driver attach (you can see all this in boot18_dt2_linux.log):

libphy: MACB_mii_bus: probed

Generic PHY fixed-0:00: attached PHY driver [Generic PHY] (mii_bus:phy_addr=fixed-0:00, irq=POLL)

macb e000b000.ethernet eth0: Cadence GEM rev 0x00020118 at 0xe000b000 irq 26 (00:0a:35:00:22:01)


But then, we see "eth0: unable to generate target frequency: 125000000 Hz"

Configuring network interfaces... macb e000b000.ethernet eth0: unable to generate target frequency: 125000000 Hz

macb e000b000.ethernet eth0: link up (1000/Full)

IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready


In the other attached file 'boot18_dt2_eth.log", I'm playing around with ethtool to change the PHY settings. It seems like when we turn autoneg off, and lower the speed we can get the link to come up without showing the clock frequency error:

root@picozed:~# ifdown eth0

root@picozed:~# ethtool -s eth0 autoneg off

root@picozed:~# ifup eth0

macb e000b000.ethernet eth0: link up (10/Half)

IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready


However, even after we do this, we cannot see any lights on the ethernet port (we have it connected to a switch, so we should at least see an indication for "link up"). So, even though Linux seems to attach the generic PHY driver, it still appears that the PHY is not working.

I am looking for any ideas for what to do differently in the device-tree. I'm not sure if using "moca" as the phy-mode is relevant. The ethernet card uses RGMII, however, when I set phy-mode="rgmii-id", U-boot hangs in initialization, presumably when it is initializing the ethernet driver. I believe it parses that directive in the device-tree and attempts to initialize the PHY over MDIO, but I’m not certain.


Any ideas?

0 Replies