1 /******************************************************************************
2   PTP Header file
3 
4   Copyright (C) 2013  Vayavya Labs Pvt Ltd
5 
6   This program is free software; you can redistribute it and/or modify it
7   under the terms and conditions of the GNU General Public License,
8   version 2, as published by the Free Software Foundation.
9 
10   This program is distributed in the hope it will be useful, but WITHOUT
11   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
13   more details.
14 
15   The full GNU General Public License is included in this distribution in
16   the file called "COPYING".
17 
18   Author: Rayagond Kokatanur <rayagond@vayavyalabs.com>
19 ******************************************************************************/
20 
21 #ifndef	__STMMAC_PTP_H__
22 #define	__STMMAC_PTP_H__
23 
24 #define PTP_XGMAC_OFFSET	0xd00
25 #define	PTP_GMAC4_OFFSET	0xb00
26 #define	PTP_GMAC3_X_OFFSET	0x700
27 
28 /* IEEE 1588 PTP register offsets */
29 #define	PTP_TCR		0x00	/* Timestamp Control Reg */
30 #define	PTP_SSIR	0x04	/* Sub-Second Increment Reg */
31 #define	PTP_STSR	0x08	/* System Time – Seconds Regr */
32 #define	PTP_STNSR	0x0c	/* System Time – Nanoseconds Reg */
33 #define	PTP_STSUR	0x10	/* System Time – Seconds Update Reg */
34 #define	PTP_STNSUR	0x14	/* System Time – Nanoseconds Update Reg */
35 #define	PTP_TAR		0x18	/* Timestamp Addend Reg */
36 
37 #define	PTP_STNSUR_ADDSUB_SHIFT	31
38 #define	PTP_DIGITAL_ROLLOVER_MODE	0x3B9ACA00	/* 10e9-1 ns */
39 #define	PTP_BINARY_ROLLOVER_MODE	0x80000000	/* ~0.466 ns */
40 
41 /* PTP Timestamp control register defines */
42 #define	PTP_TCR_TSENA		BIT(0)	/* Timestamp Enable */
43 #define	PTP_TCR_TSCFUPDT	BIT(1)	/* Timestamp Fine/Coarse Update */
44 #define	PTP_TCR_TSINIT		BIT(2)	/* Timestamp Initialize */
45 #define	PTP_TCR_TSUPDT		BIT(3)	/* Timestamp Update */
46 #define	PTP_TCR_TSTRIG		BIT(4)	/* Timestamp Interrupt Trigger Enable */
47 #define	PTP_TCR_TSADDREG	BIT(5)	/* Addend Reg Update */
48 #define	PTP_TCR_TSENALL		BIT(8)	/* Enable Timestamp for All Frames */
49 #define	PTP_TCR_TSCTRLSSR	BIT(9)	/* Digital or Binary Rollover Control */
50 /* Enable PTP packet Processing for Version 2 Format */
51 #define	PTP_TCR_TSVER2ENA	BIT(10)
52 /* Enable Processing of PTP over Ethernet Frames */
53 #define	PTP_TCR_TSIPENA		BIT(11)
54 /* Enable Processing of PTP Frames Sent over IPv6-UDP */
55 #define	PTP_TCR_TSIPV6ENA	BIT(12)
56 /* Enable Processing of PTP Frames Sent over IPv4-UDP */
57 #define	PTP_TCR_TSIPV4ENA	BIT(13)
58 /* Enable Timestamp Snapshot for Event Messages */
59 #define	PTP_TCR_TSEVNTENA	BIT(14)
60 /* Enable Snapshot for Messages Relevant to Master */
61 #define	PTP_TCR_TSMSTRENA	BIT(15)
62 /* Select PTP packets for Taking Snapshots
63  * On gmac4 specifically:
64  * Enable SYNC, Pdelay_Req, Pdelay_Resp when TSEVNTENA is enabled.
65  * or
66  * Enable  SYNC, Follow_Up, Delay_Req, Delay_Resp, Pdelay_Req, Pdelay_Resp,
67  * Pdelay_Resp_Follow_Up if TSEVNTENA is disabled
68  */
69 #define	PTP_TCR_SNAPTYPSEL_1	BIT(16)
70 /* Enable MAC address for PTP Frame Filtering */
71 #define	PTP_TCR_TSENMACADDR	BIT(18)
72 
73 /* SSIR defines */
74 #define	PTP_SSIR_SSINC_MASK		0xff
75 #define	GMAC4_PTP_SSIR_SSINC_SHIFT	16
76 
77 #endif	/* __STMMAC_PTP_H__ */
78