1*78399874SHuisong Li /* SPDX-License-Identifier: BSD-3-Clause 2*78399874SHuisong Li * Copyright(c) 2023 HiSilicon Limited. 3*78399874SHuisong Li */ 4*78399874SHuisong Li 5*78399874SHuisong Li #ifndef HNS3_PTP_H 6*78399874SHuisong Li #define HNS3_PTP_H 7*78399874SHuisong Li 8*78399874SHuisong Li /* Register bit for 1588 event */ 9*78399874SHuisong Li #define HNS3_VECTOR0_1588_INT_B 0 10*78399874SHuisong Li 11*78399874SHuisong Li #define HNS3_PTP_BASE_ADDRESS 0x29000 12*78399874SHuisong Li 13*78399874SHuisong Li #define HNS3_TX_1588_SEQID_BACK (HNS3_PTP_BASE_ADDRESS + 0x0) 14*78399874SHuisong Li #define HNS3_TX_1588_TSP_BACK_0 (HNS3_PTP_BASE_ADDRESS + 0x4) 15*78399874SHuisong Li #define HNS3_TX_1588_TSP_BACK_1 (HNS3_PTP_BASE_ADDRESS + 0x8) 16*78399874SHuisong Li #define HNS3_TX_1588_TSP_BACK_2 (HNS3_PTP_BASE_ADDRESS + 0xc) 17*78399874SHuisong Li 18*78399874SHuisong Li #define HNS3_TX_1588_BACK_TSP_CNT (HNS3_PTP_BASE_ADDRESS + 0x30) 19*78399874SHuisong Li 20*78399874SHuisong Li #define HNS3_CFG_TIME_SYNC_H (HNS3_PTP_BASE_ADDRESS + 0x50) 21*78399874SHuisong Li #define HNS3_CFG_TIME_SYNC_M (HNS3_PTP_BASE_ADDRESS + 0x54) 22*78399874SHuisong Li #define HNS3_CFG_TIME_SYNC_L (HNS3_PTP_BASE_ADDRESS + 0x58) 23*78399874SHuisong Li #define HNS3_CFG_TIME_SYNC_RDY (HNS3_PTP_BASE_ADDRESS + 0x5c) 24*78399874SHuisong Li 25*78399874SHuisong Li #define HNS3_CFG_TIME_CYC_EN (HNS3_PTP_BASE_ADDRESS + 0x70) 26*78399874SHuisong Li 27*78399874SHuisong Li #define HNS3_CURR_TIME_OUT_H (HNS3_PTP_BASE_ADDRESS + 0x74) 28*78399874SHuisong Li #define HNS3_CURR_TIME_OUT_L (HNS3_PTP_BASE_ADDRESS + 0x78) 29*78399874SHuisong Li #define HNS3_CURR_TIME_OUT_NS (HNS3_PTP_BASE_ADDRESS + 0x7c) 30*78399874SHuisong Li 31*78399874SHuisong Li int hns3_restore_ptp(struct hns3_adapter *hns); 32*78399874SHuisong Li int hns3_mbuf_dyn_rx_timestamp_register(struct rte_eth_dev *dev, 33*78399874SHuisong Li struct rte_eth_conf *conf); 34*78399874SHuisong Li int hns3_ptp_init(struct hns3_hw *hw); 35*78399874SHuisong Li void hns3_ptp_uninit(struct hns3_hw *hw); 36*78399874SHuisong Li int hns3_timesync_enable(struct rte_eth_dev *dev); 37*78399874SHuisong Li int hns3_timesync_disable(struct rte_eth_dev *dev); 38*78399874SHuisong Li int hns3_timesync_read_rx_timestamp(struct rte_eth_dev *dev, 39*78399874SHuisong Li struct timespec *timestamp, 40*78399874SHuisong Li uint32_t flags __rte_unused); 41*78399874SHuisong Li int hns3_timesync_read_tx_timestamp(struct rte_eth_dev *dev, 42*78399874SHuisong Li struct timespec *timestamp); 43*78399874SHuisong Li int hns3_timesync_read_time(struct rte_eth_dev *dev, struct timespec *ts); 44*78399874SHuisong Li int hns3_timesync_write_time(struct rte_eth_dev *dev, 45*78399874SHuisong Li const struct timespec *ts); 46*78399874SHuisong Li int hns3_timesync_adjust_time(struct rte_eth_dev *dev, int64_t delta); 47*78399874SHuisong Li 48*78399874SHuisong Li #endif /* HNS3_PTP_H */ 49