08-17-2017 12:20 AM
I would like to use the GEM3 on my ZCU102 board. Since I upgraded to Petalinux 2017.2, I could not get linux to use the ethernet on GEM3:
u-boot can use the ethernet fine, pinging works, DHCP works:
U-Boot 2017.01 (Aug 17 2017 - 08:18:24 +0200) Xilinx ZynqMP ZCU102 rev1.0 I2C: Error, wrong i2c adapter 0 max 0 possible Error, wrong i2c adapter 0 max 0 possible ready DRAM: 4 GiB EL Level: EL2 Chip ID: xczu9eg MMC: sdhci@ff170000: 0 (SD) SF: Detected n25q512a with page size 512 Bytes, erase size 128 KiB, total 128 MiB *** Warning - bad CRC, using default environment Error, wrong i2c adapter 0 max 0 possible Error, wrong i2c adapter 0 max 0 possible In: serial Out: serial Err: serial Bootmode: LVL_SHFT_SD_MODE1 Net: ZYNQ GEM: ff0e0000, phyaddr c, interface rgmii-id eth0: ethernet@ff0e0000 U-BOOT for xfft17 ethernet@ff0e0000 Waiting for PHY auto negotiation to complete....... done BOOTP broadcast 1 BOOTP broadcast 2 BOOTP broadcast 3 BOOTP broadcast 4 BOOTP broadcast 5 DHCP client bound to address 192.168.4.32 (3769 ms)
U-boot says the phy address is 0xC and that's exactly what I put in `system-user.dtsi`, resulting in the following plnxaarch64_system.dts
ethernet@ff0e0000 { compatible = "cdns,zynqmp-gem"; status = "okay"; interrupt-parent = <0x4>; interrupts = <0x0 0x3f 0x4 0x0 0x3f 0x4>; reg = <0x0 0xff0e0000 0x0 0x1000>; clock-names = "pclk", "hclk", "tx_clk", "rx_clk"; #address-cells = <0x1>; #size-cells = <0x0>; #stream-id-cells = <0x1>; iommus = <0x7 0x877>; power-domains = <0xf>; clocks = <0x3 0x1f 0x3 0x34 0x3 0x30 0x3 0x34>; phy-mode = "rgmii-id"; xlnx,ptp-enet-clock = <0x0>; phy-handle = <0x10>; phy@c { compatible = "88e1118r"; device_type = "ethernet-phy"; reg = <0xc>; ti,rx-internal-delay = <0x8>; ti,tx-internal-delay = <0xa>; ti,fifo-depth = <0x1>; linux,phandle = <0x10>; phandle = <0x10>; }; };
Still, during kernel boot, kernel says it can't find the phy:
[ 0.218081] iommu: Adding device fd500000.dma to group 0 [ 0.218233] iommu: Adding device fd510000.dma to group 1 [ 0.218378] iommu: Adding device fd520000.dma to group 2 [ 0.218520] iommu: Adding device fd530000.dma to group 3 [ 0.218665] iommu: Adding device fd540000.dma to group 4 [ 0.218809] iommu: Adding device fd550000.dma to group 5 [ 0.218950] iommu: Adding device fd560000.dma to group 6 [ 0.219092] iommu: Adding device fd570000.dma to group 7 [ 0.219381] iommu: Adding device ffa80000.dma to group 8 [ 0.219523] iommu: Adding device ffa90000.dma to group 9 [ 0.219666] iommu: Adding device ffaa0000.dma to group 10 [ 0.219809] iommu: Adding device ffab0000.dma to group 11 [ 0.219954] iommu: Adding device ffac0000.dma to group 12 [ 0.220099] iommu: Adding device ffad0000.dma to group 13 [ 0.220242] iommu: Adding device ffae0000.dma to group 14 [ 0.220387] iommu: Adding device ffaf0000.dma to group 15 [ 0.220639] iommu: Adding device ff0e0000.ethernet to group 16 [ 0.221210] iommu: Adding device ff0f0000.spi to group 17 [ 0.221663] iommu: Adding device ff170000.sdhci to group 18 ... [ 2.807643] libphy: MACB_mii_bus: probed [ 2.811508] mdio_bus ff0e0000.etherne:0c: mdio_device_register [ 2.821245] macb ff0e0000.ethernet eth0: no PHY found
Any ideas how to fix this?
08-17-2017 12:31 AM
This seems fine. But I believe the phy-mode needs to be "sgmii" instead? Have you tried this?
08-17-2017 02:35 AM
The phy-mode is set to `rgmii-id` automatically by Petalinux and it also matches the mode that u-boot uses.
I have tried changing it to sgmii by overwriting it in system-user.dtsi, but I did not succeed.
08-17-2017 05:02 AM
Can you share the system-user.dtsi file of yours?
08-17-2017 05:05 AM
08-17-2017 05:20 AM
When trying to set the phy-mode to sgmii:
&gem3 { phy-handle = <&phy0>; phy-mode = "sgmii"; phy0: phy@c { compatible = "88e1118r"; device_type = "ethernet-phy"; reg = <0xc>; ti,rx-internal-delay = <0x8>; ti,tx-internal-delay = <0xa>; ti,fifo-depth = <0x1>; }; }; &smmu { status = "okay"; };
08-17-2017 10:49 AM
08-18-2017 02:13 AM
The BSP works, I can use ethernet with that image.
I have now adopted the changes to the device tree, it now looks like this:
ethernet@ff0e0000 { compatible = "cdns,zynqmp-gem"; status = "okay"; interrupt-parent = <0x4>; interrupts = <0x0 0x3f 0x4 0x0 0x3f 0x4>; reg = <0x0 0xff0e0000 0x0 0x1000>; clock-names = "pclk", "hclk", "tx_clk", "rx_clk"; #address-cells = <0x1>; #size-cells = <0x0>; #stream-id-cells = <0x1>; iommus = <0x7 0x877>; power-domains = <0xf>; clocks = <0x3 0x1f 0x3 0x34 0x3 0x30 0x3 0x34>; phy-mode = "rgmii-id"; xlnx,ptp-enet-clock = <0x0>; phy-handle = <0x10>; pinctrl-names = "default"; local-mac-address = [00 0a 35 00 13 77]; phy@c { reg = <0xc>; ti,rx-internal-delay = <0x8>; ti,tx-internal-delay = <0xa>; ti,fifo-depth = <0x1>; ti,rxctrl-strap-worka; linux,phandle = <0x10>; phandle = <0x10>; }; };
The PHY seems to work now, but here's the next error message...
INIT: Entering runlevel: 5 Configuring network interfaces... [ 4.285131] macb ff0e0000.ethernet eth0: Unable to allocate DMA memory (error -12) ifconfig: SIOCSIFFLAGS: Cannot allocate memory
Any ideas?