1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* Renesas R-Car Gen4 gPTP device driver 3 * 4 * Copyright (C) 2022 Renesas Electronics Corporation 5 */ 6 7 #ifndef __RCAR_GEN4_PTP_H__ 8 #define __RCAR_GEN4_PTP_H__ 9 10 #include <linux/ptp_clock_kernel.h> 11 12 #define RCAR_GEN4_GPTP_OFFSET_S4 0x00018000 13 14 /* driver's definitions */ 15 #define RCAR_GEN4_RXTSTAMP_ENABLED BIT(0) 16 #define RCAR_GEN4_RXTSTAMP_TYPE_V2_L2_EVENT BIT(1) 17 #define RCAR_GEN4_RXTSTAMP_TYPE_ALL (RCAR_GEN4_RXTSTAMP_TYPE_V2_L2_EVENT | BIT(2)) 18 #define RCAR_GEN4_RXTSTAMP_TYPE RCAR_GEN4_RXTSTAMP_TYPE_ALL 19 20 #define RCAR_GEN4_TXTSTAMP_ENABLED BIT(0) 21 22 23 struct rcar_gen4_ptp_private { 24 void __iomem *addr; 25 struct ptp_clock *clock; 26 struct ptp_clock_info info; 27 spinlock_t lock; /* For multiple registers access */ 28 u32 tstamp_tx_ctrl; 29 u32 tstamp_rx_ctrl; 30 s64 default_addend; 31 bool initialized; 32 }; 33 34 int rcar_gen4_ptp_register(struct rcar_gen4_ptp_private *ptp_priv, u32 rate); 35 int rcar_gen4_ptp_unregister(struct rcar_gen4_ptp_private *ptp_priv); 36 struct rcar_gen4_ptp_private *rcar_gen4_ptp_alloc(struct platform_device *pdev); 37 38 #endif /* #ifndef __RCAR_GEN4_PTP_H__ */ 39