Hello, I am currently trying to bring up a custom linux image for the Pismasher using the petalinux toolchain. I’m running into an issue were only one of my ethernet interfaces (gem1/eth1) are functioning correctly. on boot I see some network related logs like this:
xgmiitorgmii e000b000.ethernet-ffffffff:09: Couldn’t find phydev
hwmon hwmon0: temp1_input not attached to any thermal zone
macb e000b000.ethernet eth0: Cadence GEM rev 0x00020118 at 0xe000b000 irq 41 (00:0a:35:00:1e:53)
xgmiitorgmii e000c000.ethernet-ffffffff:09: Couldn’t find phydev
[Firmware Warn]: /axi/ethernet@e000c000/mdio/ethernet-phy@1: Whitelisted compatible string. Please remove
hwmon hwmon1: temp1_input not attached to any thermal zone
macb e000c000.ethernet eth1: Cadence GEM rev 0x00020118 at 0xe000c000 irq 42 (00:0a:35:00:c0:13)
e1000e: Intel(R) PRO/1000 Network Driver
e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
#####cut#####
[ OK ] Started systemd-networkd.service - Network Configuration.
macb e000c000.ethernet eth1: PHY [e000c000.ethernet-ffffffff:00] driver [Marvell 88E1510] (irq=POLL)
random: crng init done
macb e000c000.ethernet eth1: configuring for phy/rgmii-id link mode
[ OK ] Found device dev-mmcblk0p1.device - /dev/mmcblk0p1.
macb e000b000.ethernet eth0: PHY [e000b000.ethernet-ffffffff:00] driver [Marvell 88E1510] (irq=POLL)
macb e000b000.ethernet eth0: configuring for phy/rgmii-id link mode
####cut####
eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 00:0a:35:00:1e:53 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 41 base 0xb000
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.124 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 2600:8801:d523:e500:20a:35ff:fe00:c013 prefixlen 64 scopeid 0x0<global>
inet6 fe80::20a:35ff:fe00:c013 prefixlen 64 scopeid 0x20<link>
inet6 2600:8801:d523:e500::b7be prefixlen 128 scopeid 0x0<global>
ether 00:0a:35:00:c0:13 txqueuelen 1000 (Ethernet)
RX packets 260 bytes 79045 (77.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 233 bytes 23586 (23.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 42 base 0xc000
For the build, the system-user.dtsi needs to be modified to override some default in the generated file pcw.dtsi
###system-user.dtsi ###
&gem0 {
phy-handle = <&phy0>;
phy-mode = “rgmii-id”;
reset-gpios = <&gpio0 19 1>;
gmii2rgmii-phy-handle = <&gmii_to_rgmii_0>;
ps7_ethernet_0_mdio: mdio {
#address-cells = <1>;
#size-cells = <0>;
phy0: ethernet-phy@0 {
compatible = “marvell,88e1510”;
reg = <0x0>;
device_type = “ethernet-phy”;
};
gmii_to_rgmii_0: gmii_to_rgmii_0@9 {
compatible = “xlnx,gmii-to-rgmii-1.0”;
reg = <9>;
phy-handle = <&phy0>;
};
};
};
&gem1 {
local-mac-address = [00 0a 35 00 c0 13];
phy-handle = <&phy1>;
phy-mode = “rgmii-id”;
reset-gpios = <&gpio0 17 1>;
gmii2rgmii-phy-handle = <&gmii_to_rgmii_1>;
ps7_ethernet_1_mdio: mdio {
#address-cells = <1>;
#size-cells = <0>;
phy1: ethernet-phy@1 {
compatible = “marvell,88e1510”;
reg = <0x0>;
device_type = “ethernet-phy”;
};
gmii_to_rgmii_1: gmii_to_rgmii_1@9 {
compatible = “xlnx,gmii-to-rgmii-1.0”;
reg = <9>;
phy-handle = <&phy1>;
};
};
};
####pcw.dtsi####
&gem0 {
phy-handle = <&phy1>;
phy-mode = “gmii”;
status = “okay”;
xlnx,ptp-enet-clock = <0x89c0b91>;
ps7_ethernet_0_mdio: mdio {
#address-cells = <1>;
#size-cells = <0>;
gmii_to_rgmii_0: gmii_to_rgmii_0@9 {
compatible = “xlnx,gmii-to-rgmii-1.0”;
phy-handle = <&phy1>;
reg = <9>;
};
};
};
&gem1 {
phy-handle = <&phy1>;
phy-mode = “gmii”;
status = “okay”;
xlnx,ptp-enet-clock = <0x89c0b91>;
ps7_ethernet_1_mdio: mdio {
#address-cells = <1>;
#size-cells = <0>;
gmii_to_rgmii_1: gmii_to_rgmii_1@9 {
compatible = “xlnx,gmii-to-rgmii-1.0”;
phy-handle = <&phy1>;
reg = <9>;
};
};
};
Im not sure if im configuring gem0 incorrectly but gem1 is functioning fine. when i boot up using a prebuilt image both Ethernet ports work correctly tho.
