This patchset introduces PTP feature support in Aquantia AQC atlantic driver.
This implementation is a joined effort of aquantia developers: Egor is the main designer and driver/firmware architect on PTP, Sergey and Dmitry are included as co-developers. Dmitry also helped me in the overall patchset preparations. Feature was verified on AQC hardware with testptp tool, linuxptp, gptp and with Motu hardware unit. version2 updates: - Fixing issues from Andrew's review: replacing self with ptp var name, making ptp_clk_offset a field in the ptp instance. devm_kzalloc advice is actually non applicable, because ptp object gets created/destroyed on each network device close/open and it should not be linked with dev lifecycle. - Rearranging commit authorship, adding Egor as a ptp module main maintainer - Fixing kbuild 32bit division issues Dmitry Bezrukov (5): net: aquantia: unify styling of bit enums net: aquantia: styling fixes on ptp related functions net: aquantia: rx filters for ptp net: aquantia: add support for Phy access net: aquantia: add support for PIN funcs Egor Pomozov (6): net: aquantia: PTP skeleton declarations and callbacks net: aquantia: add basic ptp_clock callbacks net: aquantia: add PTP rings infrastructure net: aquantia: implement data PTP datapath net: aquantia: add support for ptp ioctls net: aquantia: implement get_ts_info ethtool Igor Russkikh (1): net: aquantia: adding atlantic ptp maintainer MAINTAINERS | 7 + .../net/ethernet/aquantia/atlantic/Makefile | 2 + .../net/ethernet/aquantia/atlantic/aq_cfg.h | 4 +- .../ethernet/aquantia/atlantic/aq_ethtool.c | 35 +- .../ethernet/aquantia/atlantic/aq_filters.c | 17 +- .../net/ethernet/aquantia/atlantic/aq_hw.h | 48 +- .../net/ethernet/aquantia/atlantic/aq_main.c | 105 +- .../net/ethernet/aquantia/atlantic/aq_nic.c | 96 +- .../net/ethernet/aquantia/atlantic/aq_nic.h | 16 +- .../ethernet/aquantia/atlantic/aq_pci_func.c | 5 +- .../net/ethernet/aquantia/atlantic/aq_phy.c | 147 ++ .../net/ethernet/aquantia/atlantic/aq_phy.h | 32 + .../net/ethernet/aquantia/atlantic/aq_ptp.c | 1397 +++++++++++++++++ .../net/ethernet/aquantia/atlantic/aq_ptp.h | 57 + .../net/ethernet/aquantia/atlantic/aq_ring.c | 64 +- .../net/ethernet/aquantia/atlantic/aq_ring.h | 7 +- .../aquantia/atlantic/hw_atl/hw_atl_b0.c | 328 +++- .../atlantic/hw_atl/hw_atl_b0_internal.h | 9 +- .../aquantia/atlantic/hw_atl/hw_atl_llh.c | 96 +- .../aquantia/atlantic/hw_atl/hw_atl_llh.h | 58 +- .../atlantic/hw_atl/hw_atl_llh_internal.h | 223 ++- .../aquantia/atlantic/hw_atl/hw_atl_utils.c | 7 +- .../aquantia/atlantic/hw_atl/hw_atl_utils.h | 172 +- .../atlantic/hw_atl/hw_atl_utils_fw2x.c | 97 +- 24 files changed, 2895 insertions(+), 134 deletions(-) create mode 100644 drivers/net/ethernet/aquantia/atlantic/aq_phy.c create mode 100644 drivers/net/ethernet/aquantia/atlantic/aq_phy.h create mode 100644 drivers/net/ethernet/aquantia/atlantic/aq_ptp.c create mode 100644 drivers/net/ethernet/aquantia/atlantic/aq_ptp.h -- 2.17.1