From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Lunn Subject: [RFC PATCH 00/10] PTP support for DSA and mv88e6xxx driver. Date: Sat, 3 Feb 2018 22:40:04 +0100 Message-ID: <1517694016-6692-1-git-send-email-andrew@lunn.ch> Cc: Florian Fainelli , Vivien Didelot , sean.wang@mediatek.com, Woojung.Huh@microchip.com, john@phrozen.org, jbe@pengutronix.de, richardcochran@gmail.com, Andrew Lunn To: netdev Return-path: Received: from vps0.lunn.ch ([185.16.172.187]:45309 "EHLO vps0.lunn.ch" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754146AbeBCVmY (ORCPT ); Sat, 3 Feb 2018 16:42:24 -0500 Sender: netdev-owner@vger.kernel.org List-ID: This patchset adds support for using the PTP hardware in switches supported by the mv88e6xxx driver. The code was produces in collaboration with Brandon Streiff doing the initial implementation, and then Richard Cochran and Andrew Lunn making further changes and cleanups. The code is sufficient to use ptp4l on a single DSA interface, either as a master or a slave. Due to the use of an MDIO bus to access the switch, reading hardware timestamps is slower than what ptp4l expects. Thus it is necessary to use the option --tx_timestamp_timeout=32. Heavy use of ethtool -S, or bridge fdb show can also upset ptp4l. Patches to address this will follow. Further work is requires to support bridges using Boundary Clock or Transparent Clock mode. Since netdev is closed at the moment, i'm seeking comments from other DSA driver writers if the common infrastructure added here will work for other switches which DSA support. Thanks Andrew Andrew Lunn (1): net: ptp: Add stub for ptp_classify_raw() Brandon Streiff (9): net: dsa: mv88e6xxx: export g2 register accessors net: dsa: mv88e6xxx: add accessors for PTP/TAI registers net: dsa: mv88e6xxx: expose switch time as a PTP hardware clock net: dsa: mv88e6xxx: add support for GPIO configuration net: dsa: mv88e6xxx: add support for event capture net: dsa: forward hardware timestamping ioctls to switch driver net: dsa: forward timestamping callbacks to switch drivers net: dsa: mv88e6xxx: add rx/tx timestamping support net: dsa: mv88e6xxx: add workaround for 6341 timestamping drivers/net/dsa/mv88e6xxx/Kconfig | 10 + drivers/net/dsa/mv88e6xxx/Makefile | 4 + drivers/net/dsa/mv88e6xxx/chip.c | 67 ++++ drivers/net/dsa/mv88e6xxx/chip.h | 103 +++++ drivers/net/dsa/mv88e6xxx/global2.c | 9 +- drivers/net/dsa/mv88e6xxx/global2.h | 85 +++- drivers/net/dsa/mv88e6xxx/global2_avb.c | 193 +++++++++ drivers/net/dsa/mv88e6xxx/global2_scratch.c | 240 ++++++++++++ drivers/net/dsa/mv88e6xxx/hwtstamp.c | 584 ++++++++++++++++++++++++++++ drivers/net/dsa/mv88e6xxx/hwtstamp.h | 172 ++++++++ drivers/net/dsa/mv88e6xxx/ptp.c | 380 ++++++++++++++++++ drivers/net/dsa/mv88e6xxx/ptp.h | 108 +++++ include/linux/ptp_classify.h | 4 + include/net/dsa.h | 20 + net/dsa/dsa.c | 36 ++ net/dsa/slave.c | 59 +++ 16 files changed, 2069 insertions(+), 5 deletions(-) create mode 100644 drivers/net/dsa/mv88e6xxx/global2_avb.c create mode 100644 drivers/net/dsa/mv88e6xxx/global2_scratch.c create mode 100644 drivers/net/dsa/mv88e6xxx/hwtstamp.c create mode 100644 drivers/net/dsa/mv88e6xxx/hwtstamp.h create mode 100644 drivers/net/dsa/mv88e6xxx/ptp.c create mode 100644 drivers/net/dsa/mv88e6xxx/ptp.h -- 2.15.1