Hi all,
I am trying to use a USB-to-ETH adapter connected on USB0 Microzed Zynq 7010.
I am using linux-xlnx patched with PREEMPT_RT.
The adapter is based on an Asix AX88279 chip (drivers): www.asix.com.tw/.../AX88279
I have to comment out some function calls in the Asix usb driver in order for petalinux to compile. Apparently, this calls are in places of the code for newer kernel versions.
The board is able to detect the device in the USB bus, with the module divers and as an Ethernet interface:
[ 291.783700] ax_usb_nic: loading out-of-tree module taints kernel.
[ 291.787981] usbcore: registered new interface driver ax_usb_nic
[ 291.807362] ax_usb_nic 1-1:1.0: ASIX AX88279 USB Ethernet Controller 3.4.0 (1.2.0.4_7.1)
root@AvnetMicroZedproj7010:~# lsusb | grep -i -e "Ethernet" -e "Wireless"
Bus 001 Device 002: ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet
The information on the driver module:
root@AvnetMicroZedproj7010:~# modinfo /lib/modules/6.6.40-rt51-xilinx-g2b7f6f70a62a-dirty/home/marcjofre/Scripts/AvnetMicroZedproj7010/build/tmp/work-shared/zynq-generic-7z010/kernel-source/drivers/net/usb/ax_usb_nic.ko
filename: /lib/modules/6.6.40-rt51-xilinx-g2b7f6f70a62a-dirty/home/marcjofre/Scripts/AvnetMicroZedproj7010/build/tmp/work-shared/zynq-generic-7z010/kernel-source/drivers/net/usb/ax_usb_nic.ko
version: 3.4.0
license: GPL
description: ASIX USB Ethernet Controller
author: ASIX
srcversion: 757126603A9CAE69242D9C0
alias: usb:v0B95p1790d0[0-3]*dc*dsc*dp*ic*isc*ip*in*
alias: usb:v0B95p1790d0400dc*dsc*dp*ic*isc*ip*in*
alias: usb:v0B95p1790d0[0-1]*dc*dsc*dp*ic*isc*ip*in*
alias: usb:v0B95p1790d0200dc*dsc*dp*ic*isc*ip*in*
alias: usb:v0B95p1790d0[0-2]*dc*dsc*dp*ic*isc*ip*in*
alias: usb:v0B95p1790d0300dc*dsc*dp*ic*isc*ip*in*
alias: usb:v0711p0179d00*dc*dsc*dp*ic*isc*ip*in*
alias: usb:v0711p0179d0100dc*dsc*dp*ic*isc*ip*in*
alias: usb:v2001p4A00d00*dc*dsc*dp*ic*isc*ip*in*
alias: usb:v2001p4A00d0100dc*dsc*dp*ic*isc*ip*in*
alias: usb:v04E8pA100d00*dc*dsc*dp*ic*isc*ip*in*
alias: usb:v04E8pA100d0100dc*dsc*dp*ic*isc*ip*in*
alias: usb:v0930p0A13d00*dc*dsc*dp*ic*isc*ip*in*
alias: usb:v0930p0A13d0100dc*dsc*dp*ic*isc*ip*in*
alias: usb:v17EFp304Bd00*dc*dsc*dp*ic*isc*ip*in*
alias: usb:v17EFp304Bd0100dc*dsc*dp*ic*isc*ip*in*
alias: usb:v0DF6p0072d00*dc*dsc*dp*ic*isc*ip*in*
alias: usb:v0DF6p0072d0100dc*dsc*dp*ic*isc*ip*in*
alias: usb:v0B95p178Ad00*dc*dsc*dp*ic*isc*ip*in*
alias: usb:v0B95p178Ad0100dc*dsc*dp*ic*isc*ip*in*
alias: usb:v0B95p1790d00*dc*dsc*dp*ic*isc*ip*in*
alias: usb:v0B95p1790d0100dc*dsc*dp*ic*isc*ip*in*
depends:
name: ax_usb_nic
vermagic: 6.6.40-rt51-xilinx-g2b7f6f70a62a-dirty SMP preempt_rt mod_unload modversions ARMv7 p2v8
parm: bctrl:RX Bulk Control (int)
parm: blwt:RX Bulk Timer Low (int)
parm: bhit:RX Bulk Timer High (int)
parm: bsize:RX Bulk Queue Size (int)
parm: bifg:RX Bulk Inter Frame Gap (int)
Some traffic through the interface seems to happen (but only in TX, not in RX):
4: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 6c:6e:07:03:06:18 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped missed mcast
0 0 0 0 0 0
TX: bytes packets errors dropped carrier collsns
656 8 0 0 0 0
Although most things seems to go right, I amb not able to test connectivity through a ping nor have the interface working to use it in linuxptp hardware timestamp (nor with software timestamps; while for the onboard Ethernet eth0 with software timestamps works).
root@AvnetMicroZedproj7010:~# ptp4l -i eth1
Floating point exception
Is the device tree settings correct? Is the driver correct? Is the standard Vivado design enough? Which way could I further investigate and debug the operation of this USB-ETH Device?
I modified system-user.dtsi as:
/include/ "system-conf.dtsi"
/ {
};
/{
usb_phy0:phy0 {
compatible="ulpi-phy";
//compatible = "xlnx,zynq-usb-2.20.a", "chipidea,usb2";
phy_type = "ulpi"; // "ulpi" ?? "mii"
#phy-cells = <0>;
reg = <0xe0002000 0x1000>;
view-port=<0x170>;
drv-vbus;
};
};
&usb0 {
status = "okay";
dr_mode = "host";
usb-phy = <&usb_phy0>;
} ;