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 | void am65_cpts_release(struct am65_cpts *cpts); |
22 | struct am65_cpts *am65_cpts_create(struct device *dev, void __iomem *regs, |
23 | struct device_node *node); |
24 | int am65_cpts_phc_index(struct am65_cpts *cpts); |
25 | void am65_cpts_tx_timestamp(struct am65_cpts *cpts, struct sk_buff *skb); |
26 | void am65_cpts_prep_tx_timestamp(struct am65_cpts *cpts, struct sk_buff *skb); |
27 | void am65_cpts_rx_enable(struct am65_cpts *cpts, bool en); |
28 | u64 am65_cpts_ns_gettime(struct am65_cpts *cpts); |
29 | int am65_cpts_estf_enable(struct am65_cpts *cpts, int idx, |
30 | struct am65_cpts_estf_cfg *cfg); |
31 | void am65_cpts_estf_disable(struct am65_cpts *cpts, int idx); |
32 | void am65_cpts_suspend(struct am65_cpts *cpts); |
33 | void am65_cpts_resume(struct am65_cpts *cpts); |
34 | #else |
35 | static inline void am65_cpts_release(struct am65_cpts *cpts) |
36 | { |
37 | } |
38 | |
39 | static 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 | |
46 | static inline int am65_cpts_phc_index(struct am65_cpts *cpts) |
47 | { |
48 | return -1; |
49 | } |
50 | |
51 | static inline void am65_cpts_tx_timestamp(struct am65_cpts *cpts, |
52 | struct sk_buff *skb) |
53 | { |
54 | } |
55 | |
56 | static inline void am65_cpts_prep_tx_timestamp(struct am65_cpts *cpts, |
57 | struct sk_buff *skb) |
58 | { |
59 | } |
60 | |
61 | static inline void am65_cpts_rx_enable(struct am65_cpts *cpts, bool en) |
62 | { |
63 | } |
64 | |
65 | static inline s64 am65_cpts_ns_gettime(struct am65_cpts *cpts) |
66 | { |
67 | return 0; |
68 | } |
69 | |
70 | static 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 | |
76 | static inline void am65_cpts_estf_disable(struct am65_cpts *cpts, int idx) |
77 | { |
78 | } |
79 | |
80 | static inline void am65_cpts_suspend(struct am65_cpts *cpts) |
81 | { |
82 | } |
83 | |
84 | static inline void am65_cpts_resume(struct am65_cpts *cpts) |
85 | { |
86 | } |
87 | #endif |
88 | |
89 | #endif /* K3_CPTS_H_ */ |
90 | |