Arthur,
Last year I was trying to get ptp working in an Arria10 SoC – and I eventually got it all working pretty well. Eventually I went on to get it working with an Intel FPGA 10GbE MAC for the A10 as well. The Cyclone V SoC is very similar in that the HPS EMAC is actually the ST Micro MAC (stmmac), which is supported by the Linux kernel and LinuxPTP for HW timestamping (see table below). I made a post for exactly all the steps to make it work in my A10. I was helped greatly by Ian Thompson and Hunter Olson, and they were using the Cyclone V SoC. My A10 setup with clocking was a little different in the Qsys editor and in the device tree, than for the Cyclone V. You can check out my summary here: https://sourceforge.net/p/linuxptp/mailman/message/35861379/ Hope this helps, John Lemonovich From: Arthur Dent <arthurd...@cyberdude.com> Sent: Wednesday, October 17, 2018 3:31 PM To: linuxptp-users@lists.sourceforge.net Subject: [Linuxptp-users] LinuxPTP on Cyclone V SoC Hello I am trying to add PTP support on a Cyclone V SoC using the HPS EMAC1, but have some problems making it work. The problems seem to be related to a wrong clock source to the PTP engine and/or device tree issues. I am using: - Linux kernel 4.1.22 ltsi RT (real time) w/patches - LinuxPTP 2.0 Steps taken: 1: Compiling and installing linuxptp 2.0 2: In Quartus Qsys: The “Enable EMAC1 precision Time Protocol (PTP) FPGA interface” box has been ticked, and this enables three PTP related signals: - emac_ptp_ref_clock: This clock has been routed through the FPGA to an IO pin on the development board, and is connected to an external clock source. - ptp_pps_o: Routed through the FPGA to an IO pin on the development board and is connected to a scope. - the trig signal is unused (connected to GND) 3: Updating the device tree: gmac1: ethernet@ff702000 { ........ clocks = <&emac1_clk &ext_clk_ptp_ref> ; clock-names = "stmmaceth", "clk_ptp_ref"; ..... } Defining my external ptp clock source: ext_clk_ptp_ref: ext_clk_ptp_ref{ compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <25000000>; /* 25.00 MHz */ clock-output-names = "ext_clk_ptp_ref"; }; 4: Running a Yocto Krogoth distribution with various version of the linux kernel (4.18, 4.17, 4.9 ltsi-RT, and 4.1.22-ltsi-RT w/wo patches). None of these kernel versions work as expected in my system. Kernel versions 4.17 and 4.18 do not seem to work at all, and I have ended up using version 4.1.22.ltsi-RT (real time) kernel with the patches recommended by "Hunter": <https://github.com/torvalds/linux/commit/19d857c9038e5c07db8f8cc02b5ad0cd0098714f> https://github.com/torvalds/linux/commit/19d857c9038e5c07db8f8cc02b5ad0cd0098714f ref "Adding LinuxPTP to Arria 10 SoC" email. Output when running the "hwstamp_ctl -i eth0 -r 0 -t 1 " command: Device driver does not have support for non-destructive SIOCGHWTSTAMP. new settings: tx_type 1 rx_filter 0 With the 4.1.22.ltsi-RT kernel and the command above I do get a 1PPS pulse each sec as long as my ext_clk_ptp_ref in the device tree is specified to be 25MHz. However, the actual frequency of this signal can be anything so the PTP engine does not seem to use my ext_clk_ptp_ref. The "ptp4l -m -q -i eth0 ptp4l" command is not working: ptp4l[193.348]: selected /dev/ptp0 as PTP clock ptp4l[193.388]: port 1: INITIALIZING to LISTENING on INIT_COMPLETE ptp4l[193.389]: port 0: INITIALIZING to LISTENING on INIT_COMPLETE ptp4l[200.843]: port 1: LISTENING to MASTER on ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES ptp4l[200.843]: selected local clock 70b3d5.fffe.761bc5 as best master ptp4l[200.843]: assuming the grand master role ptp4l[201.844]: timed out while polling for tx timestamp ptp4l[201.845]: increasing tx_timestamp_timeout may correct this issue, but it is likely caused by a driver bug ptp4l[201.845]: port 1: send sync failed ptp4l[201.845]: port 1: MASTER to FAULTY on FAULT_DETECTED (FT_UNSPECIFIED) I have tried with various clocks sources (external and from the HPS) and longer tx timestamp timeout setting, but without success. Is there anyone who has managed to get this working on a Cyclone V SoC platform and can share some insight into how to connect the PTP signal in Qsys and necessary device tree mappings? Thanks, AD
_______________________________________________ Linuxptp-users mailing list Linuxptp-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxptp-users