49edb5a050d3c62c585830c5693644debbfc3ea3
[dpdk.git] / fsl_dprtc.h
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 */