xref: /dpdk/drivers/net/dpaa2/mc/fsl_dprtc.h (revision 2cb2abf304fcecc0e2804b8da61760d4f2cb9a7e)
1 /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0)
2  * Copyright 2019-2021 NXP
3  */
4 #ifndef __FSL_DPRTC_H
5 #define __FSL_DPRTC_H
6 
7 /** @addtogroup dprtc Data Path Real Time Counter API
8  * Contains initialization APIs and runtime control APIs for RTC
9  * @{
10  */
11 
12 struct fsl_mc_io;
13 
14 int dprtc_open(struct fsl_mc_io *mc_io,
15 	       uint32_t cmd_flags,
16 	       int dprtc_id,
17 	       uint16_t *token);
18 
19 int dprtc_close(struct fsl_mc_io *mc_io,
20 		uint32_t cmd_flags,
21 		uint16_t token);
22 
23 /**
24  * struct dprtc_cfg - Structure representing DPRTC configuration
25  * @options:	place holder
26  */
27 struct dprtc_cfg {
28 	uint32_t options;
29 };
30 
31 int dprtc_create(struct fsl_mc_io *mc_io,
32 		 uint16_t dprc_token,
33 		 uint32_t cmd_flags,
34 		 const struct dprtc_cfg *cfg,
35 		 uint32_t *obj_id);
36 
37 int dprtc_destroy(struct fsl_mc_io *mc_io,
38 		  uint16_t dprc_token,
39 		  uint32_t cmd_flags,
40 		  uint32_t object_id);
41 
42 int dprtc_enable(struct fsl_mc_io *mc_io,
43 		 uint32_t cmd_flags,
44 		 uint16_t token);
45 
46 int dprtc_disable(struct fsl_mc_io *mc_io,
47 		  uint32_t cmd_flags,
48 		  uint16_t token);
49 
50 int dprtc_is_enabled(struct fsl_mc_io *mc_io,
51 		     uint32_t cmd_flags,
52 		     uint16_t token,
53 		     int *en);
54 
55 int dprtc_reset(struct fsl_mc_io *mc_io,
56 		uint32_t cmd_flags,
57 		uint16_t token);
58 
59 int dprtc_set_clock_offset(struct fsl_mc_io *mc_io,
60 			   uint32_t cmd_flags,
61 			   uint16_t token,
62 			   int64_t offset);
63 
64 int dprtc_set_freq_compensation(struct fsl_mc_io *mc_io,
65 		  uint32_t cmd_flags,
66 		  uint16_t token,
67 		  uint32_t freq_compensation);
68 
69 int dprtc_get_freq_compensation(struct fsl_mc_io *mc_io,
70 		  uint32_t cmd_flags,
71 		  uint16_t token,
72 		  uint32_t *freq_compensation);
73 
74 int dprtc_get_time(struct fsl_mc_io *mc_io,
75 		   uint32_t cmd_flags,
76 		   uint16_t token,
77 		   uint64_t *time);
78 
79 int dprtc_set_time(struct fsl_mc_io *mc_io,
80 		   uint32_t cmd_flags,
81 		   uint16_t token,
82 		   uint64_t time);
83 
84 int dprtc_set_alarm(struct fsl_mc_io *mc_io,
85 		    uint32_t cmd_flags,
86 		    uint16_t token,
87 		    uint64_t time);
88 
89 struct dprtc_ext_trigger_status {
90 			uint64_t timestamp;
91 			uint8_t unread_valid_timestamp;
92 };
93 
94 int dprtc_get_ext_trigger_timestamp(struct fsl_mc_io *mc_io,
95 			uint32_t cmd_flags,
96 			uint16_t token,
97 			uint8_t id,
98 			struct dprtc_ext_trigger_status *status);
99 
100 int dprtc_set_fiper_loopback(struct fsl_mc_io *mc_io,
101 			uint32_t cmd_flags,
102 			uint16_t token,
103 			uint8_t id,
104 			uint8_t fiper_as_input);
105 
106 /**
107  * struct dprtc_attr - Structure representing DPRTC attributes
108  * @id:		DPRTC object ID
109  */
110 struct dprtc_attr {
111 	int id;
112 	int paddr;
113 	int little_endian;
114 };
115 
116 int dprtc_get_attributes(struct fsl_mc_io *mc_io,
117 			 uint32_t cmd_flags,
118 			 uint16_t token,
119 			 struct dprtc_attr *attr);
120 
121 int dprtc_get_api_version(struct fsl_mc_io *mc_io,
122 			  uint32_t cmd_flags,
123 			  uint16_t *major_ver,
124 			  uint16_t *minor_ver);
125 
126 #endif /* __FSL_DPRTC_H */
127