GNU Linux-libre 4.19.264-gnu1
[releases.git] / drivers / staging / fsl-dpaa2 / rtc / dprtc.h
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Copyright 2013-2016 Freescale Semiconductor Inc.
4  * Copyright 2016-2018 NXP
5  */
6
7 #ifndef __FSL_DPRTC_H
8 #define __FSL_DPRTC_H
9
10 /* Data Path Real Time Counter API
11  * Contains initialization APIs and runtime control APIs for RTC
12  */
13
14 struct fsl_mc_io;
15
16 /**
17  * Number of irq's
18  */
19 #define DPRTC_MAX_IRQ_NUM                       1
20 #define DPRTC_IRQ_INDEX                         0
21
22 /**
23  * Interrupt event masks:
24  */
25
26 /**
27  * Interrupt event mask indicating alarm event had occurred
28  */
29 #define DPRTC_EVENT_ALARM                       0x40000000
30 /**
31  * Interrupt event mask indicating periodic pulse event had occurred
32  */
33 #define DPRTC_EVENT_PPS                         0x08000000
34
35 int dprtc_open(struct fsl_mc_io *mc_io,
36                u32 cmd_flags,
37                int dprtc_id,
38                u16 *token);
39
40 int dprtc_close(struct fsl_mc_io *mc_io,
41                 u32 cmd_flags,
42                 u16 token);
43
44 /**
45  * struct dprtc_cfg - Structure representing DPRTC configuration
46  * @options:    place holder
47  */
48 struct dprtc_cfg {
49         u32 options;
50 };
51
52 int dprtc_create(struct fsl_mc_io *mc_io,
53                  u16 dprc_token,
54                  u32 cmd_flags,
55                  const struct dprtc_cfg *cfg,
56                  u32 *obj_id);
57
58 int dprtc_destroy(struct fsl_mc_io *mc_io,
59                   u16 dprc_token,
60                   u32 cmd_flags,
61                   u32 object_id);
62
63 int dprtc_enable(struct fsl_mc_io *mc_io,
64                  u32 cmd_flags,
65                  u16 token);
66
67 int dprtc_disable(struct fsl_mc_io *mc_io,
68                   u32 cmd_flags,
69                   u16 token);
70
71 int dprtc_is_enabled(struct fsl_mc_io *mc_io,
72                      u32 cmd_flags,
73                      u16 token,
74                      int *en);
75
76 int dprtc_reset(struct fsl_mc_io *mc_io,
77                 u32 cmd_flags,
78                 u16 token);
79
80 int dprtc_set_clock_offset(struct fsl_mc_io *mc_io,
81                            u32 cmd_flags,
82                            u16 token,
83                            int64_t offset);
84
85 int dprtc_set_freq_compensation(struct fsl_mc_io *mc_io,
86                                 u32 cmd_flags,
87                                 u16 token,
88                                 u32 freq_compensation);
89
90 int dprtc_get_freq_compensation(struct fsl_mc_io *mc_io,
91                                 u32 cmd_flags,
92                                 u16 token,
93                                 u32 *freq_compensation);
94
95 int dprtc_get_time(struct fsl_mc_io *mc_io,
96                    u32 cmd_flags,
97                    u16 token,
98                    uint64_t *time);
99
100 int dprtc_set_time(struct fsl_mc_io *mc_io,
101                    u32 cmd_flags,
102                    u16 token,
103                    uint64_t time);
104
105 int dprtc_set_alarm(struct fsl_mc_io *mc_io,
106                     u32 cmd_flags,
107                     u16 token,
108                     uint64_t time);
109
110 int dprtc_set_irq_enable(struct fsl_mc_io *mc_io,
111                          u32 cmd_flags,
112                          u16 token,
113                          u8 irq_index,
114                          u8 en);
115
116 int dprtc_get_irq_enable(struct fsl_mc_io *mc_io,
117                          u32 cmd_flags,
118                          u16 token,
119                          u8 irq_index,
120                          u8 *en);
121
122 int dprtc_set_irq_mask(struct fsl_mc_io *mc_io,
123                        u32 cmd_flags,
124                        u16 token,
125                        u8 irq_index,
126                        u32 mask);
127
128 int dprtc_get_irq_mask(struct fsl_mc_io *mc_io,
129                        u32 cmd_flags,
130                        u16 token,
131                        u8 irq_index,
132                        u32 *mask);
133
134 int dprtc_get_irq_status(struct fsl_mc_io *mc_io,
135                          u32 cmd_flags,
136                          u16 token,
137                          u8 irq_index,
138                          u32 *status);
139
140 int dprtc_clear_irq_status(struct fsl_mc_io *mc_io,
141                            u32 cmd_flags,
142                            u16 token,
143                            u8 irq_index,
144                            u32 status);
145
146 /**
147  * struct dprtc_attr - Structure representing DPRTC attributes
148  * @id:         DPRTC object ID
149  */
150 struct dprtc_attr {
151         int id;
152 };
153
154 int dprtc_get_attributes(struct fsl_mc_io *mc_io,
155                          u32 cmd_flags,
156                          u16 token,
157                          struct dprtc_attr *attr);
158
159 int dprtc_get_api_version(struct fsl_mc_io *mc_io,
160                           u32 cmd_flags,
161                           u16 *major_ver,
162                           u16 *minor_ver);
163
164 #endif /* __FSL_DPRTC_H */