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 void am65_cpts_suspend(struct am65_cpts *cpts);
32 void am65_cpts_resume(struct am65_cpts *cpts);
33 #else
34 static inline struct am65_cpts *am65_cpts_create(struct device *dev,
35 						 void __iomem *regs,
36 						 struct device_node *node)
37 {
38 	return ERR_PTR(-EOPNOTSUPP);
39 }
40 
41 static inline int am65_cpts_phc_index(struct am65_cpts *cpts)
42 {
43 	return -1;
44 }
45 
46 static inline void am65_cpts_tx_timestamp(struct am65_cpts *cpts,
47 					  struct sk_buff *skb)
48 {
49 }
50 
51 static inline void am65_cpts_prep_tx_timestamp(struct am65_cpts *cpts,
52 					       struct sk_buff *skb)
53 {
54 }
55 
56 static inline void am65_cpts_rx_enable(struct am65_cpts *cpts, bool en)
57 {
58 }
59 
60 static inline s64 am65_cpts_ns_gettime(struct am65_cpts *cpts)
61 {
62 	return 0;
63 }
64 
65 static inline int am65_cpts_estf_enable(struct am65_cpts *cpts, int idx,
66 					struct am65_cpts_estf_cfg *cfg)
67 {
68 	return 0;
69 }
70 
71 static inline void am65_cpts_estf_disable(struct am65_cpts *cpts, int idx)
72 {
73 }
74 
75 static inline void am65_cpts_suspend(struct am65_cpts *cpts)
76 {
77 }
78 
79 static inline void am65_cpts_resume(struct am65_cpts *cpts)
80 {
81 }
82 #endif
83 
84 #endif /* K3_CPTS_H_ */
85