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
13 struct am65_cpts;
14
15 struct am65_cpts_estf_cfg {
16 u64 ns_period;
17 u64 ns_start;
18 };
19
20 #if IS_ENABLED(CONFIG_TI_K3_AM65_CPTS)
21 struct am65_cpts *am65_cpts_create(struct device *dev, void __iomem *regs,
22 struct device_node *node);
23 int am65_cpts_phc_index(struct am65_cpts *cpts);
24 void am65_cpts_tx_timestamp(struct am65_cpts *cpts, struct sk_buff *skb);
25 void am65_cpts_prep_tx_timestamp(struct am65_cpts *cpts, struct sk_buff *skb);
26 void am65_cpts_rx_enable(struct am65_cpts *cpts, bool en);
27 u64 am65_cpts_ns_gettime(struct am65_cpts *cpts);
28 int am65_cpts_estf_enable(struct am65_cpts *cpts, int idx,
29 struct am65_cpts_estf_cfg *cfg);
30 void am65_cpts_estf_disable(struct am65_cpts *cpts, int idx);
31 #else
am65_cpts_create(struct device * dev,void __iomem * regs,struct device_node * node)32 static inline struct am65_cpts *am65_cpts_create(struct device *dev,
33 void __iomem *regs,
34 struct device_node *node)
35 {
36 return ERR_PTR(-EOPNOTSUPP);
37 }
38
am65_cpts_phc_index(struct am65_cpts * cpts)39 static inline int am65_cpts_phc_index(struct am65_cpts *cpts)
40 {
41 return -1;
42 }
43
am65_cpts_tx_timestamp(struct am65_cpts * cpts,struct sk_buff * skb)44 static inline void am65_cpts_tx_timestamp(struct am65_cpts *cpts,
45 struct sk_buff *skb)
46 {
47 }
48
am65_cpts_prep_tx_timestamp(struct am65_cpts * cpts,struct sk_buff * skb)49 static inline void am65_cpts_prep_tx_timestamp(struct am65_cpts *cpts,
50 struct sk_buff *skb)
51 {
52 }
53
am65_cpts_rx_enable(struct am65_cpts * cpts,bool en)54 static inline void am65_cpts_rx_enable(struct am65_cpts *cpts, bool en)
55 {
56 }
57
am65_cpts_ns_gettime(struct am65_cpts * cpts)58 static inline s64 am65_cpts_ns_gettime(struct am65_cpts *cpts)
59 {
60 return 0;
61 }
62
am65_cpts_estf_enable(struct am65_cpts * cpts,int idx,struct am65_cpts_estf_cfg * cfg)63 static inline int am65_cpts_estf_enable(struct am65_cpts *cpts, int idx,
64 struct am65_cpts_estf_cfg *cfg)
65 {
66 return 0;
67 }
68
am65_cpts_estf_disable(struct am65_cpts * cpts,int idx)69 static inline void am65_cpts_estf_disable(struct am65_cpts *cpts, int idx)
70 {
71 }
72 #endif
73
74 #endif /* K3_CPTS_H_ */
75