1f6bd5952SGrygorii Strashko /* SPDX-License-Identifier: GPL-2.0+ */
2f6bd5952SGrygorii Strashko /* TI K3 AM65 CPTS driver interface
3f6bd5952SGrygorii Strashko  *
4f6bd5952SGrygorii Strashko  * Copyright (C) 2020 Texas Instruments Incorporated - http://www.ti.com
5f6bd5952SGrygorii Strashko  */
6f6bd5952SGrygorii Strashko 
7f6bd5952SGrygorii Strashko #ifndef K3_CPTS_H_
8f6bd5952SGrygorii Strashko #define K3_CPTS_H_
9f6bd5952SGrygorii Strashko 
10f6bd5952SGrygorii Strashko #include <linux/device.h>
11f6bd5952SGrygorii Strashko #include <linux/of.h>
12f6bd5952SGrygorii Strashko 
13f6bd5952SGrygorii Strashko struct am65_cpts;
14f6bd5952SGrygorii Strashko 
15f6bd5952SGrygorii Strashko #if IS_ENABLED(CONFIG_TI_K3_AM65_CPTS)
16f6bd5952SGrygorii Strashko struct am65_cpts *am65_cpts_create(struct device *dev, void __iomem *regs,
17f6bd5952SGrygorii Strashko 				   struct device_node *node);
18f6bd5952SGrygorii Strashko int am65_cpts_phc_index(struct am65_cpts *cpts);
19f6bd5952SGrygorii Strashko void am65_cpts_tx_timestamp(struct am65_cpts *cpts, struct sk_buff *skb);
20f6bd5952SGrygorii Strashko void am65_cpts_prep_tx_timestamp(struct am65_cpts *cpts, struct sk_buff *skb);
21f6bd5952SGrygorii Strashko void am65_cpts_rx_enable(struct am65_cpts *cpts, bool en);
22f6bd5952SGrygorii Strashko #else
23f6bd5952SGrygorii Strashko static inline struct am65_cpts *am65_cpts_create(struct device *dev,
24f6bd5952SGrygorii Strashko 						 void __iomem *regs,
25f6bd5952SGrygorii Strashko 						 struct device_node *node)
26f6bd5952SGrygorii Strashko {
27f6bd5952SGrygorii Strashko 	return ERR_PTR(-EOPNOTSUPP);
28f6bd5952SGrygorii Strashko }
29f6bd5952SGrygorii Strashko 
30f6bd5952SGrygorii Strashko static inline int am65_cpts_phc_index(struct am65_cpts *cpts)
31f6bd5952SGrygorii Strashko {
32f6bd5952SGrygorii Strashko 	return -1;
33f6bd5952SGrygorii Strashko }
34f6bd5952SGrygorii Strashko 
35f6bd5952SGrygorii Strashko static inline void am65_cpts_tx_timestamp(struct am65_cpts *cpts,
36f6bd5952SGrygorii Strashko 					  struct sk_buff *skb)
37f6bd5952SGrygorii Strashko {
38f6bd5952SGrygorii Strashko }
39f6bd5952SGrygorii Strashko 
40f6bd5952SGrygorii Strashko static inline void am65_cpts_prep_tx_timestamp(struct am65_cpts *cpts,
41f6bd5952SGrygorii Strashko 					       struct sk_buff *skb)
42f6bd5952SGrygorii Strashko {
43f6bd5952SGrygorii Strashko }
44f6bd5952SGrygorii Strashko 
45f6bd5952SGrygorii Strashko static inline void am65_cpts_rx_enable(struct am65_cpts *cpts, bool en)
46f6bd5952SGrygorii Strashko {
47f6bd5952SGrygorii Strashko }
48f6bd5952SGrygorii Strashko #endif
49f6bd5952SGrygorii Strashko 
50f6bd5952SGrygorii Strashko #endif /* K3_CPTS_H_ */
51