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(error: -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

source code of linux/drivers/net/ethernet/ti/am65-cpts.h