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   You should have received a copy of the GNU General Public License along with
16   this program; if not, write to the Free Software Foundation, Inc.,
17   51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
18 
19   The full GNU General Public License is included in this distribution in
20   the file called "COPYING".
21 
22   Author: Rayagond Kokatanur <rayagond@vayavyalabs.com>
23 ******************************************************************************/
24 
25 #ifndef	__STMMAC_PTP_H__
26 #define	__STMMAC_PTP_H__
27 
28 #define	PTP_GMAC4_OFFSET	0xb00
29 #define	PTP_GMAC3_X_OFFSET	0x700
30 
31 /* IEEE 1588 PTP register offsets */
32 #define	PTP_TCR		0x00	/* Timestamp Control Reg */
33 #define	PTP_SSIR	0x04	/* Sub-Second Increment Reg */
34 #define	PTP_STSR	0x08	/* System Time – Seconds Regr */
35 #define	PTP_STNSR	0x0c	/* System Time – Nanoseconds Reg */
36 #define	PTP_STSUR	0x10	/* System Time – Seconds Update Reg */
37 #define	PTP_STNSUR	0x14	/* System Time – Nanoseconds Update Reg */
38 #define	PTP_TAR		0x18	/* Timestamp Addend Reg */
39 
40 #define	PTP_STNSUR_ADDSUB_SHIFT	31
41 #define	PTP_DIGITAL_ROLLOVER_MODE	0x3B9ACA00	/* 10e9-1 ns */
42 #define	PTP_BINARY_ROLLOVER_MODE	0x80000000	/* ~0.466 ns */
43 
44 /* PTP Timestamp control register defines */
45 #define	PTP_TCR_TSENA		BIT(0)	/* Timestamp Enable */
46 #define	PTP_TCR_TSCFUPDT	BIT(1)	/* Timestamp Fine/Coarse Update */
47 #define	PTP_TCR_TSINIT		BIT(2)	/* Timestamp Initialize */
48 #define	PTP_TCR_TSUPDT		BIT(3)	/* Timestamp Update */
49 #define	PTP_TCR_TSTRIG		BIT(4)	/* Timestamp Interrupt Trigger Enable */
50 #define	PTP_TCR_TSADDREG	BIT(5)	/* Addend Reg Update */
51 #define	PTP_TCR_TSENALL		BIT(8)	/* Enable Timestamp for All Frames */
52 #define	PTP_TCR_TSCTRLSSR	BIT(9)	/* Digital or Binary Rollover Control */
53 /* Enable PTP packet Processing for Version 2 Format */
54 #define	PTP_TCR_TSVER2ENA	BIT(10)
55 /* Enable Processing of PTP over Ethernet Frames */
56 #define	PTP_TCR_TSIPENA		BIT(11)
57 /* Enable Processing of PTP Frames Sent over IPv6-UDP */
58 #define	PTP_TCR_TSIPV6ENA	BIT(12)
59 /* Enable Processing of PTP Frames Sent over IPv4-UDP */
60 #define	PTP_TCR_TSIPV4ENA	BIT(13)
61 /* Enable Timestamp Snapshot for Event Messages */
62 #define	PTP_TCR_TSEVNTENA	BIT(14)
63 /* Enable Snapshot for Messages Relevant to Master */
64 #define	PTP_TCR_TSMSTRENA	BIT(15)
65 /* Select PTP packets for Taking Snapshots */
66 #define	PTP_TCR_SNAPTYPSEL_1	GENMASK(17, 16)
67 /* Enable MAC address for PTP Frame Filtering */
68 #define	PTP_TCR_TSENMACADDR	BIT(18)
69 
70 /* SSIR defines */
71 #define	PTP_SSIR_SSINC_MASK		0xff
72 #define	GMAC4_PTP_SSIR_SSINC_SHIFT	16
73 
74 #endif	/* __STMMAC_PTP_H__ */
75