xref: /linux/drivers/net/ethernet/ti/icssm/icssm_prueth_ptp.h (revision 4f38da1f027ea2c9f01bb71daa7a299c191b6940)
1*1853367bSParvathi Pudi /* SPDX-License-Identifier: GPL-2.0 */
2*1853367bSParvathi Pudi /*
3*1853367bSParvathi Pudi  * Copyright (C) 2020-2021 Texas Instruments Incorporated - https://www.ti.com
4*1853367bSParvathi Pudi  */
5*1853367bSParvathi Pudi #ifndef PRUETH_PTP_H
6*1853367bSParvathi Pudi #define PRUETH_PTP_H
7*1853367bSParvathi Pudi 
8*1853367bSParvathi Pudi #define RX_SYNC_TIMESTAMP_OFFSET_P1		0x8    /* 8 bytes */
9*1853367bSParvathi Pudi #define RX_PDELAY_REQ_TIMESTAMP_OFFSET_P1	0x14   /* 12 bytes */
10*1853367bSParvathi Pudi 
11*1853367bSParvathi Pudi #define DISABLE_PTP_FRAME_FORWARDING_CTRL_OFFSET 0x14	/* 1 byte */
12*1853367bSParvathi Pudi 
13*1853367bSParvathi Pudi #define RX_PDELAY_RESP_TIMESTAMP_OFFSET_P1	0x20   /* 12 bytes */
14*1853367bSParvathi Pudi #define RX_SYNC_TIMESTAMP_OFFSET_P2		0x2c   /* 12 bytes */
15*1853367bSParvathi Pudi #define RX_PDELAY_REQ_TIMESTAMP_OFFSET_P2	0x38   /* 12 bytes */
16*1853367bSParvathi Pudi #define RX_PDELAY_RESP_TIMESTAMP_OFFSET_P2	0x44   /* 12 bytes */
17*1853367bSParvathi Pudi #define TIMESYNC_DOMAIN_NUMBER_LIST		0x50   /* 2 bytes */
18*1853367bSParvathi Pudi #define P1_SMA_LINE_DELAY_OFFSET		0x52   /* 4 bytes */
19*1853367bSParvathi Pudi #define P2_SMA_LINE_DELAY_OFFSET		0x56   /* 4 bytes */
20*1853367bSParvathi Pudi #define TIMESYNC_SECONDS_COUNT_OFFSET		0x5a   /* 6 bytes */
21*1853367bSParvathi Pudi #define TIMESYNC_TC_RCF_OFFSET			0x60   /* 4 bytes */
22*1853367bSParvathi Pudi #define DUT_IS_MASTER_OFFSET			0x64   /* 1 byte */
23*1853367bSParvathi Pudi #define MASTER_PORT_NUM_OFFSET			0x65   /* 1 byte */
24*1853367bSParvathi Pudi #define SYNC_MASTER_MAC_OFFSET			0x66   /* 6 bytes */
25*1853367bSParvathi Pudi #define TX_TS_NOTIFICATION_OFFSET_SYNC_P1	0x6c   /* 1 byte */
26*1853367bSParvathi Pudi #define TX_TS_NOTIFICATION_OFFSET_PDEL_REQ_P1	0x6d   /* 1 byte */
27*1853367bSParvathi Pudi #define TX_TS_NOTIFICATION_OFFSET_PDEL_RES_P1	0x6e   /* 1 byte */
28*1853367bSParvathi Pudi #define TX_TS_NOTIFICATION_OFFSET_SYNC_P2	0x6f   /* 1 byte */
29*1853367bSParvathi Pudi #define TX_TS_NOTIFICATION_OFFSET_PDEL_REQ_P2	0x70   /* 1 byte */
30*1853367bSParvathi Pudi #define TX_TS_NOTIFICATION_OFFSET_PDEL_RES_P2	0x71   /* 1 byte */
31*1853367bSParvathi Pudi #define TX_SYNC_TIMESTAMP_OFFSET_P1		0x72   /* 12 bytes */
32*1853367bSParvathi Pudi #define TX_PDELAY_REQ_TIMESTAMP_OFFSET_P1	0x7e   /* 12 bytes */
33*1853367bSParvathi Pudi #define TX_PDELAY_RESP_TIMESTAMP_OFFSET_P1	0x8a   /* 12 bytes */
34*1853367bSParvathi Pudi #define TX_SYNC_TIMESTAMP_OFFSET_P2		0x96   /* 12 bytes */
35*1853367bSParvathi Pudi #define TX_PDELAY_REQ_TIMESTAMP_OFFSET_P2	0xa2   /* 12 bytes */
36*1853367bSParvathi Pudi #define TX_PDELAY_RESP_TIMESTAMP_OFFSET_P2	0xae   /* 12 bytes */
37*1853367bSParvathi Pudi #define TIMESYNC_CTRL_VAR_OFFSET		0xba   /* 1 byte */
38*1853367bSParvathi Pudi #define DISABLE_SWITCH_SYNC_RELAY_OFFSET	0xbb   /* 1 byte */
39*1853367bSParvathi Pudi #define MII_RX_CORRECTION_OFFSET		0xbc   /* 2 bytes */
40*1853367bSParvathi Pudi #define MII_TX_CORRECTION_OFFSET		0xbe   /* 2 bytes */
41*1853367bSParvathi Pudi #define TIMESYNC_CMP1_CMP_OFFSET		0xc0   /* 8 bytes */
42*1853367bSParvathi Pudi #define TIMESYNC_SYNC0_CMP_OFFSET		0xc8   /* 8 bytes */
43*1853367bSParvathi Pudi #define TIMESYNC_CMP1_PERIOD_OFFSET		0xd0   /* 4 bytes */
44*1853367bSParvathi Pudi #define TIMESYNC_SYNC0_WIDTH_OFFSET		0xd4   /* 4 bytes */
45*1853367bSParvathi Pudi #define SINGLE_STEP_IEP_OFFSET_P1		0xd8   /* 8 bytes */
46*1853367bSParvathi Pudi #define SINGLE_STEP_SECONDS_OFFSET_P1		0xe0   /* 8 bytes */
47*1853367bSParvathi Pudi #define SINGLE_STEP_IEP_OFFSET_P2		0xe8   /* 8 bytes */
48*1853367bSParvathi Pudi #define SINGLE_STEP_SECONDS_OFFSET_P2		0xf0   /* 8 bytes */
49*1853367bSParvathi Pudi #define LINK_LOCAL_FRAME_HAS_HSR_TAG		0xf8   /* 1 bytes */
50*1853367bSParvathi Pudi #define PTP_PREV_TX_TIMESTAMP_P1		0xf9  /* 8 bytes */
51*1853367bSParvathi Pudi #define PTP_PREV_TX_TIMESTAMP_P2		0x101  /* 8 bytes */
52*1853367bSParvathi Pudi #define PTP_CLK_IDENTITY_OFFSET			0x109  /* 8 bytes */
53*1853367bSParvathi Pudi #define PTP_SCRATCH_MEM				0x111  /* 16 byte */
54*1853367bSParvathi Pudi #define PTP_IPV4_UDP_E2E_ENABLE			0x121  /* 1 byte */
55*1853367bSParvathi Pudi 
56*1853367bSParvathi Pudi enum {
57*1853367bSParvathi Pudi 	PRUETH_PTP_SYNC,
58*1853367bSParvathi Pudi 	PRUETH_PTP_DLY_REQ,
59*1853367bSParvathi Pudi 	PRUETH_PTP_DLY_RESP,
60*1853367bSParvathi Pudi 	PRUETH_PTP_TS_EVENTS,
61*1853367bSParvathi Pudi };
62*1853367bSParvathi Pudi 
63*1853367bSParvathi Pudi #define PRUETH_PTP_TS_SIZE		12
64*1853367bSParvathi Pudi #define PRUETH_PTP_TS_NOTIFY_SIZE	1
65*1853367bSParvathi Pudi #define PRUETH_PTP_TS_NOTIFY_MASK	0xff
66*1853367bSParvathi Pudi 
67*1853367bSParvathi Pudi /* Bit definitions for TIMESYNC_CTRL */
68*1853367bSParvathi Pudi #define TIMESYNC_CTRL_BG_ENABLE    BIT(0)
69*1853367bSParvathi Pudi #define TIMESYNC_CTRL_FORCED_2STEP BIT(1)
70*1853367bSParvathi Pudi 
71*1853367bSParvathi Pudi static inline u32 icssm_prueth_tx_ts_offs_get(u8 port, u8 event)
72*1853367bSParvathi Pudi {
73*1853367bSParvathi Pudi 	return TX_SYNC_TIMESTAMP_OFFSET_P1 + port *
74*1853367bSParvathi Pudi 		PRUETH_PTP_TS_EVENTS * PRUETH_PTP_TS_SIZE +
75*1853367bSParvathi Pudi 		event * PRUETH_PTP_TS_SIZE;
76*1853367bSParvathi Pudi }
77*1853367bSParvathi Pudi 
78*1853367bSParvathi Pudi static inline u32 icssm_prueth_tx_ts_notify_offs_get(u8 port, u8 event)
79*1853367bSParvathi Pudi {
80*1853367bSParvathi Pudi 	return TX_TS_NOTIFICATION_OFFSET_SYNC_P1 +
81*1853367bSParvathi Pudi 		PRUETH_PTP_TS_EVENTS * PRUETH_PTP_TS_NOTIFY_SIZE * port +
82*1853367bSParvathi Pudi 		event * PRUETH_PTP_TS_NOTIFY_SIZE;
83*1853367bSParvathi Pudi }
84*1853367bSParvathi Pudi 
85*1853367bSParvathi Pudi #endif /* PRUETH_PTP_H */
86