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