Just an update to my earlier question: I found that the utility mii-tool
can be used to read/write registers of the PHY through the MII
interface. This is independent of LinuxPTP and can be used to program
the DP83640 to output PTP synchronized clocks or issue triggers at a
user specified PTP time on its GPIO pins. One form of a "periodic
trigger" is a PPS signal. I used the output clock successfully to clock
an FPGA that in turn clocks a 250 MHz ADC and captured its data.
A version of mii-tool modified to suit my purposes has been posted at
http://support.xia.com/default.asp?W801
The utility can be called from the Linux shell at any time by the user;
I suppose on could integrate it into a program if necessary. As is it's
good enough for my purposes to synchronize the snippets of the ADC
stream from multiple devices.
Regards,
Wolfgang
Wolfgang Hennig wrote:
Richard Cochran wrote:
On Tue, Apr 18, 2017 at 12:54:23PM -0700, Wolfgang Hennig wrote:
I'm working on a project where a Xilinx Zynq uses a DP83640 (eval
board) as
the Ethernet PHY. I'm running Ubuntu/Linaro 15 on the Zynq's ARM
processor
and successfully modified kernel options and compiled/installed
LinuxPTP to
synchronize time over the network. Now I would like to use the
DP83640's
configurable reference clock (output on a GPIO pin) to clock logic
in the
FPGA section of the Zynq. To do that I would need to read/write the
DP83640's internal registers, but I don't know how.
It seems that there is some functionality in setting the registers in
dp83640.c. In an earlier post in this list:
We don't have any support for enabling the clock output. You can hack
this in using something like this:
ext_write(0, phydev, PAGE6, PTP_COC, coc);
That worked pretty well.
I put it in dp838640_config_init (as a first test).
I should add that I did not (yet) find where/how to modify the xemacps
driver per https://lwn.net/Articles/392150/
1. Before mdio_register, add
bus->locktype = MDIOBUS_ATOMIC_RW;
2. In the .ndo_start_xmit function, add
skb_tx_timestamp()
3. In the NAPI poll function, add
skb_rx_timestamp()
That info is obsolete. All you need is a MAC driver that uses phylib
and calls skb_tx_timestamp().
and so the HW timestamping might have been provided by the Zynq's
build in
TSU instead of the DP83640. How would you tell?
If your Zynq driver implements time stamping or PHC, then you should
disable or remove that code.
There was definitely an issue there. Three changes in/for the xemacps
driver were required:
1) turn off option CONFIG_XILINX_PS_EMAC_HWTSTAMP for the kernel compile
2) in ~line 2800 of xilinx_emacps.c, function xemacps_ioctl, add the
#else section below so that it responds with the PHY's HW timestamping
capabilities when queried by ptp4l. (Interestingly, ethtool -T always
reports the PHY's capabilities)
switch (cmd) {
case SIOCGMIIPHY:
case SIOCGMIIREG:
case SIOCSMIIREG:
return phy_mii_ioctl(phydev, rq, cmd);
#ifdef CONFIG_XILINX_PS_EMAC_HWTSTAMP
case SIOCSHWTSTAMP:
return xemacps_hwtstamp_ioctl(ndev, rq, cmd);
#else
case SIOCSHWTSTAMP:
return phy_mii_ioctl(phydev, rq, cmd);
#endif
3) I added skb_tx_timestamp(skb) in line 2256 of xilinx_emacps.c,
before the for loop over nr_frags. Seems to work, didn't experiment
with other locations.
I now get offsets from master of about 100ns through our local network
and <10ns when connecting 2 boards back to back. The DP83640's CLK_OUT
signals are pretty well synchronized (looking at an oscilloscope I see
the edges drifting by about 10ns relative to each other).
Thank you very much for the hints, Richard, that was very helpful.
Wolfgang
BTW you can check sysfs to see the PHC device names:
What: /sys/class/ptp/ptpN/clock_name
Description:
This file contains the name of the PTP hardware clock
as a human readable string. The purpose of this
attribute is to provide the user with a "friendly
name" and to help distinguish PHY based devices from
MAC based ones. The string does not necessarily have
to be any kind of unique id.
Does it matter where in the
function one adds skb_tx_timestamp()?
See the comment in include/linux/skbuff.h.
Thanks,
Richard
--
Wolfgang Hennig, Ph.D.
XIA LLC
31057 Genstar Rd.
Hayward CA 94544
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Linuxptp-users mailing list
Linuxptp-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-users