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 15ec008fa2SIvan Khoronzhuk struct am65_cpts_estf_cfg { 16ec008fa2SIvan Khoronzhuk u64 ns_period; 17ec008fa2SIvan Khoronzhuk u64 ns_start; 18ec008fa2SIvan Khoronzhuk }; 19ec008fa2SIvan Khoronzhuk 20f6bd5952SGrygorii Strashko #if IS_ENABLED(CONFIG_TI_K3_AM65_CPTS) 21f6bd5952SGrygorii Strashko struct am65_cpts *am65_cpts_create(struct device *dev, void __iomem *regs, 22f6bd5952SGrygorii Strashko struct device_node *node); 23f6bd5952SGrygorii Strashko int am65_cpts_phc_index(struct am65_cpts *cpts); 24f6bd5952SGrygorii Strashko void am65_cpts_tx_timestamp(struct am65_cpts *cpts, struct sk_buff *skb); 25f6bd5952SGrygorii Strashko void am65_cpts_prep_tx_timestamp(struct am65_cpts *cpts, struct sk_buff *skb); 26f6bd5952SGrygorii Strashko void am65_cpts_rx_enable(struct am65_cpts *cpts, bool en); 27ec008fa2SIvan Khoronzhuk u64 am65_cpts_ns_gettime(struct am65_cpts *cpts); 28ec008fa2SIvan Khoronzhuk int am65_cpts_estf_enable(struct am65_cpts *cpts, int idx, 29ec008fa2SIvan Khoronzhuk struct am65_cpts_estf_cfg *cfg); 30ec008fa2SIvan Khoronzhuk void am65_cpts_estf_disable(struct am65_cpts *cpts, int idx); 31*cef122d4SRoger Quadros void am65_cpts_suspend(struct am65_cpts *cpts); 32*cef122d4SRoger Quadros void am65_cpts_resume(struct am65_cpts *cpts); 33f6bd5952SGrygorii Strashko #else 34f6bd5952SGrygorii Strashko static inline struct am65_cpts *am65_cpts_create(struct device *dev, 35f6bd5952SGrygorii Strashko void __iomem *regs, 36f6bd5952SGrygorii Strashko struct device_node *node) 37f6bd5952SGrygorii Strashko { 38f6bd5952SGrygorii Strashko return ERR_PTR(-EOPNOTSUPP); 39f6bd5952SGrygorii Strashko } 40f6bd5952SGrygorii Strashko 41f6bd5952SGrygorii Strashko static inline int am65_cpts_phc_index(struct am65_cpts *cpts) 42f6bd5952SGrygorii Strashko { 43f6bd5952SGrygorii Strashko return -1; 44f6bd5952SGrygorii Strashko } 45f6bd5952SGrygorii Strashko 46f6bd5952SGrygorii Strashko static inline void am65_cpts_tx_timestamp(struct am65_cpts *cpts, 47f6bd5952SGrygorii Strashko struct sk_buff *skb) 48f6bd5952SGrygorii Strashko { 49f6bd5952SGrygorii Strashko } 50f6bd5952SGrygorii Strashko 51f6bd5952SGrygorii Strashko static inline void am65_cpts_prep_tx_timestamp(struct am65_cpts *cpts, 52f6bd5952SGrygorii Strashko struct sk_buff *skb) 53f6bd5952SGrygorii Strashko { 54f6bd5952SGrygorii Strashko } 55f6bd5952SGrygorii Strashko 56f6bd5952SGrygorii Strashko static inline void am65_cpts_rx_enable(struct am65_cpts *cpts, bool en) 57f6bd5952SGrygorii Strashko { 58f6bd5952SGrygorii Strashko } 59ec008fa2SIvan Khoronzhuk 602ea46dc6SNathan Chancellor static inline s64 am65_cpts_ns_gettime(struct am65_cpts *cpts) 61ec008fa2SIvan Khoronzhuk { 62ec008fa2SIvan Khoronzhuk return 0; 63ec008fa2SIvan Khoronzhuk } 64ec008fa2SIvan Khoronzhuk 652ea46dc6SNathan Chancellor static inline int am65_cpts_estf_enable(struct am65_cpts *cpts, int idx, 662ea46dc6SNathan Chancellor struct am65_cpts_estf_cfg *cfg) 67ec008fa2SIvan Khoronzhuk { 68ec008fa2SIvan Khoronzhuk return 0; 69ec008fa2SIvan Khoronzhuk } 70ec008fa2SIvan Khoronzhuk 712ea46dc6SNathan Chancellor static inline void am65_cpts_estf_disable(struct am65_cpts *cpts, int idx) 72ec008fa2SIvan Khoronzhuk { 73ec008fa2SIvan Khoronzhuk } 74*cef122d4SRoger Quadros 75*cef122d4SRoger Quadros static inline void am65_cpts_suspend(struct am65_cpts *cpts) 76*cef122d4SRoger Quadros { 77*cef122d4SRoger Quadros } 78*cef122d4SRoger Quadros 79*cef122d4SRoger Quadros static inline void am65_cpts_resume(struct am65_cpts *cpts) 80*cef122d4SRoger Quadros { 81*cef122d4SRoger Quadros } 82f6bd5952SGrygorii Strashko #endif 83f6bd5952SGrygorii Strashko 84f6bd5952SGrygorii Strashko #endif /* K3_CPTS_H_ */ 85