1/* SPDX-License-Identifier: GPL-2.0+ */ 2/* TI K3 AM65 CPTS driver interface 3 * 4 * Copyright (C) 2020 Texas Instruments Incorporated - http://www.ti.com 5 */ 6 7#ifndef K3_CPTS_H_ 8#define K3_CPTS_H_ 9 10#include <linux/device.h> 11#include <linux/of.h> 12 13struct am65_cpts; 14 15struct am65_cpts_estf_cfg { 16 u64 ns_period; 17 u64 ns_start; 18}; 19 20#if IS_ENABLED(CONFIG_TI_K3_AM65_CPTS) 21void am65_cpts_release(struct am65_cpts *cpts); 22struct am65_cpts *am65_cpts_create(struct device *dev, void __iomem *regs, 23 struct device_node *node); 24int am65_cpts_phc_index(struct am65_cpts *cpts); 25void am65_cpts_tx_timestamp(struct am65_cpts *cpts, struct sk_buff *skb); 26void am65_cpts_prep_tx_timestamp(struct am65_cpts *cpts, struct sk_buff *skb); 27void am65_cpts_rx_enable(struct am65_cpts *cpts, bool en); 28u64 am65_cpts_ns_gettime(struct am65_cpts *cpts); 29int am65_cpts_estf_enable(struct am65_cpts *cpts, int idx, 30 struct am65_cpts_estf_cfg *cfg); 31void am65_cpts_estf_disable(struct am65_cpts *cpts, int idx); 32void am65_cpts_suspend(struct am65_cpts *cpts); 33void am65_cpts_resume(struct am65_cpts *cpts); 34#else 35static inline void am65_cpts_release(struct am65_cpts *cpts) 36{ 37} 38 39static inline struct am65_cpts *am65_cpts_create(struct device *dev, 40 void __iomem *regs, 41 struct device_node *node) 42{ 43 return ERR_PTR(-EOPNOTSUPP); 44} 45 46static inline int am65_cpts_phc_index(struct am65_cpts *cpts) 47{ 48 return -1; 49} 50 51static inline void am65_cpts_tx_timestamp(struct am65_cpts *cpts, 52 struct sk_buff *skb) 53{ 54} 55 56static inline void am65_cpts_prep_tx_timestamp(struct am65_cpts *cpts, 57 struct sk_buff *skb) 58{ 59} 60 61static inline void am65_cpts_rx_enable(struct am65_cpts *cpts, bool en) 62{ 63} 64 65static inline s64 am65_cpts_ns_gettime(struct am65_cpts *cpts) 66{ 67 return 0; 68} 69 70static inline int am65_cpts_estf_enable(struct am65_cpts *cpts, int idx, 71 struct am65_cpts_estf_cfg *cfg) 72{ 73 return 0; 74} 75 76static inline void am65_cpts_estf_disable(struct am65_cpts *cpts, int idx) 77{ 78} 79 80static inline void am65_cpts_suspend(struct am65_cpts *cpts) 81{ 82} 83 84static inline void am65_cpts_resume(struct am65_cpts *cpts) 85{ 86} 87#endif 88 89#endif /* K3_CPTS_H_ */ 90