Linux-libre 4.19.20-gnu
[librecmc/linux-libre.git] / drivers / net / ethernet / stmicro / stmmac / stmmac_ptp.h
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 #define PTP_TCR_SNAPTYPSEL_1    BIT(16)
64 #define PTP_GMAC4_TCR_SNAPTYPSEL_1      GENMASK(17, 16)
65 /* Enable MAC address for PTP Frame Filtering */
66 #define PTP_TCR_TSENMACADDR     BIT(18)
67
68 /* SSIR defines */
69 #define PTP_SSIR_SSINC_MASK             0xff
70 #define GMAC4_PTP_SSIR_SSINC_SHIFT      16
71
72 #endif  /* __STMMAC_PTP_H__ */