xref: /dpdk/drivers/net/hns3/hns3_ptp.h (revision 78399874af509e129c13c6771aafa8f27c456c95)
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