xref: /dpdk/drivers/net/dpaa2/mc/fsl_dprtc.h (revision 68a03efeed657e6e05f281479b33b51102797e15)
1 /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0)
2  * Copyright 2019 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 /**
90  * struct dprtc_attr - Structure representing DPRTC attributes
91  * @id:		DPRTC object ID
92  */
93 struct dprtc_attr {
94 	int id;
95 	int paddr;
96 	int little_endian;
97 };
98 
99 int dprtc_get_attributes(struct fsl_mc_io *mc_io,
100 			 uint32_t cmd_flags,
101 			 uint16_t token,
102 			 struct dprtc_attr *attr);
103 
104 int dprtc_get_api_version(struct fsl_mc_io *mc_io,
105 			  uint32_t cmd_flags,
106 			  uint16_t *major_ver,
107 			  uint16_t *minor_ver);
108 
109 #endif /* __FSL_DPRTC_H */
110