xref: /dpdk/drivers/net/dpaa2/mc/fsl_dprtc.h (revision 2cb2abf304fcecc0e2804b8da61760d4f2cb9a7e)
1184c39d1SPriyanka Jain /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0)
2*2cb2abf3SHemant Agrawal  * Copyright 2019-2021 NXP
3184c39d1SPriyanka Jain  */
4184c39d1SPriyanka Jain #ifndef __FSL_DPRTC_H
5184c39d1SPriyanka Jain #define __FSL_DPRTC_H
6184c39d1SPriyanka Jain 
7184c39d1SPriyanka Jain /** @addtogroup dprtc Data Path Real Time Counter API
8184c39d1SPriyanka Jain  * Contains initialization APIs and runtime control APIs for RTC
9184c39d1SPriyanka Jain  * @{
10184c39d1SPriyanka Jain  */
11184c39d1SPriyanka Jain 
12184c39d1SPriyanka Jain struct fsl_mc_io;
13184c39d1SPriyanka Jain 
14184c39d1SPriyanka Jain int dprtc_open(struct fsl_mc_io *mc_io,
15184c39d1SPriyanka Jain 	       uint32_t cmd_flags,
16184c39d1SPriyanka Jain 	       int dprtc_id,
17184c39d1SPriyanka Jain 	       uint16_t *token);
18184c39d1SPriyanka Jain 
19184c39d1SPriyanka Jain int dprtc_close(struct fsl_mc_io *mc_io,
20184c39d1SPriyanka Jain 		uint32_t cmd_flags,
21184c39d1SPriyanka Jain 		uint16_t token);
22184c39d1SPriyanka Jain 
23184c39d1SPriyanka Jain /**
24184c39d1SPriyanka Jain  * struct dprtc_cfg - Structure representing DPRTC configuration
25184c39d1SPriyanka Jain  * @options:	place holder
26184c39d1SPriyanka Jain  */
27184c39d1SPriyanka Jain struct dprtc_cfg {
28184c39d1SPriyanka Jain 	uint32_t options;
29184c39d1SPriyanka Jain };
30184c39d1SPriyanka Jain 
31184c39d1SPriyanka Jain int dprtc_create(struct fsl_mc_io *mc_io,
32184c39d1SPriyanka Jain 		 uint16_t dprc_token,
33184c39d1SPriyanka Jain 		 uint32_t cmd_flags,
34184c39d1SPriyanka Jain 		 const struct dprtc_cfg *cfg,
35184c39d1SPriyanka Jain 		 uint32_t *obj_id);
36184c39d1SPriyanka Jain 
37184c39d1SPriyanka Jain int dprtc_destroy(struct fsl_mc_io *mc_io,
38184c39d1SPriyanka Jain 		  uint16_t dprc_token,
39184c39d1SPriyanka Jain 		  uint32_t cmd_flags,
40184c39d1SPriyanka Jain 		  uint32_t object_id);
41184c39d1SPriyanka Jain 
42184c39d1SPriyanka Jain int dprtc_enable(struct fsl_mc_io *mc_io,
43184c39d1SPriyanka Jain 		 uint32_t cmd_flags,
44184c39d1SPriyanka Jain 		 uint16_t token);
45184c39d1SPriyanka Jain 
46184c39d1SPriyanka Jain int dprtc_disable(struct fsl_mc_io *mc_io,
47184c39d1SPriyanka Jain 		  uint32_t cmd_flags,
48184c39d1SPriyanka Jain 		  uint16_t token);
49184c39d1SPriyanka Jain 
50184c39d1SPriyanka Jain int dprtc_is_enabled(struct fsl_mc_io *mc_io,
51184c39d1SPriyanka Jain 		     uint32_t cmd_flags,
52184c39d1SPriyanka Jain 		     uint16_t token,
53184c39d1SPriyanka Jain 		     int *en);
54184c39d1SPriyanka Jain 
55184c39d1SPriyanka Jain int dprtc_reset(struct fsl_mc_io *mc_io,
56184c39d1SPriyanka Jain 		uint32_t cmd_flags,
57184c39d1SPriyanka Jain 		uint16_t token);
58184c39d1SPriyanka Jain 
59184c39d1SPriyanka Jain int dprtc_set_clock_offset(struct fsl_mc_io *mc_io,
60184c39d1SPriyanka Jain 			   uint32_t cmd_flags,
61184c39d1SPriyanka Jain 			   uint16_t token,
62184c39d1SPriyanka Jain 			   int64_t offset);
63184c39d1SPriyanka Jain 
64184c39d1SPriyanka Jain int dprtc_set_freq_compensation(struct fsl_mc_io *mc_io,
65184c39d1SPriyanka Jain 		  uint32_t cmd_flags,
66184c39d1SPriyanka Jain 		  uint16_t token,
67184c39d1SPriyanka Jain 		  uint32_t freq_compensation);
68184c39d1SPriyanka Jain 
69184c39d1SPriyanka Jain int dprtc_get_freq_compensation(struct fsl_mc_io *mc_io,
70184c39d1SPriyanka Jain 		  uint32_t cmd_flags,
71184c39d1SPriyanka Jain 		  uint16_t token,
72184c39d1SPriyanka Jain 		  uint32_t *freq_compensation);
73184c39d1SPriyanka Jain 
74184c39d1SPriyanka Jain int dprtc_get_time(struct fsl_mc_io *mc_io,
75184c39d1SPriyanka Jain 		   uint32_t cmd_flags,
76184c39d1SPriyanka Jain 		   uint16_t token,
77184c39d1SPriyanka Jain 		   uint64_t *time);
78184c39d1SPriyanka Jain 
79184c39d1SPriyanka Jain int dprtc_set_time(struct fsl_mc_io *mc_io,
80184c39d1SPriyanka Jain 		   uint32_t cmd_flags,
81184c39d1SPriyanka Jain 		   uint16_t token,
82184c39d1SPriyanka Jain 		   uint64_t time);
83184c39d1SPriyanka Jain 
84184c39d1SPriyanka Jain int dprtc_set_alarm(struct fsl_mc_io *mc_io,
85184c39d1SPriyanka Jain 		    uint32_t cmd_flags,
86184c39d1SPriyanka Jain 		    uint16_t token,
87184c39d1SPriyanka Jain 		    uint64_t time);
88184c39d1SPriyanka Jain 
89*2cb2abf3SHemant Agrawal struct dprtc_ext_trigger_status {
90*2cb2abf3SHemant Agrawal 			uint64_t timestamp;
91*2cb2abf3SHemant Agrawal 			uint8_t unread_valid_timestamp;
92*2cb2abf3SHemant Agrawal };
93*2cb2abf3SHemant Agrawal 
94*2cb2abf3SHemant Agrawal int dprtc_get_ext_trigger_timestamp(struct fsl_mc_io *mc_io,
95*2cb2abf3SHemant Agrawal 			uint32_t cmd_flags,
96*2cb2abf3SHemant Agrawal 			uint16_t token,
97*2cb2abf3SHemant Agrawal 			uint8_t id,
98*2cb2abf3SHemant Agrawal 			struct dprtc_ext_trigger_status *status);
99*2cb2abf3SHemant Agrawal 
100*2cb2abf3SHemant Agrawal int dprtc_set_fiper_loopback(struct fsl_mc_io *mc_io,
101*2cb2abf3SHemant Agrawal 			uint32_t cmd_flags,
102*2cb2abf3SHemant Agrawal 			uint16_t token,
103*2cb2abf3SHemant Agrawal 			uint8_t id,
104*2cb2abf3SHemant Agrawal 			uint8_t fiper_as_input);
105*2cb2abf3SHemant Agrawal 
106184c39d1SPriyanka Jain /**
107184c39d1SPriyanka Jain  * struct dprtc_attr - Structure representing DPRTC attributes
108184c39d1SPriyanka Jain  * @id:		DPRTC object ID
109184c39d1SPriyanka Jain  */
110184c39d1SPriyanka Jain struct dprtc_attr {
111184c39d1SPriyanka Jain 	int id;
112184c39d1SPriyanka Jain 	int paddr;
113184c39d1SPriyanka Jain 	int little_endian;
114184c39d1SPriyanka Jain };
115184c39d1SPriyanka Jain 
116184c39d1SPriyanka Jain int dprtc_get_attributes(struct fsl_mc_io *mc_io,
117184c39d1SPriyanka Jain 			 uint32_t cmd_flags,
118184c39d1SPriyanka Jain 			 uint16_t token,
119184c39d1SPriyanka Jain 			 struct dprtc_attr *attr);
120184c39d1SPriyanka Jain 
121184c39d1SPriyanka Jain int dprtc_get_api_version(struct fsl_mc_io *mc_io,
122184c39d1SPriyanka Jain 			  uint32_t cmd_flags,
123184c39d1SPriyanka Jain 			  uint16_t *major_ver,
124184c39d1SPriyanka Jain 			  uint16_t *minor_ver);
125184c39d1SPriyanka Jain 
126184c39d1SPriyanka Jain #endif /* __FSL_DPRTC_H */
127