xref: /utopia/UTPA2-700.0.x/mxlib/include/drvRTC.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1 //<MStar Software>
2 //******************************************************************************
3 // MStar Software
4 // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved.
5 // All software, firmware and related documentation herein ("MStar Software") are
6 // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by
7 // law, including, but not limited to, copyright law and international treaties.
8 // Any use, modification, reproduction, retransmission, or republication of all
9 // or part of MStar Software is expressly prohibited, unless prior written
10 // permission has been granted by MStar.
11 //
12 // By accessing, browsing and/or using MStar Software, you acknowledge that you
13 // have read, understood, and agree, to be bound by below terms ("Terms") and to
14 // comply with all applicable laws and regulations:
15 //
16 // 1. MStar shall retain any and all right, ownership and interest to MStar
17 //    Software and any modification/derivatives thereof.
18 //    No right, ownership, or interest to MStar Software and any
19 //    modification/derivatives thereof is transferred to you under Terms.
20 //
21 // 2. You understand that MStar Software might include, incorporate or be
22 //    supplied together with third party`s software and the use of MStar
23 //    Software may require additional licenses from third parties.
24 //    Therefore, you hereby agree it is your sole responsibility to separately
25 //    obtain any and all third party right and license necessary for your use of
26 //    such third party`s software.
27 //
28 // 3. MStar Software and any modification/derivatives thereof shall be deemed as
29 //    MStar`s confidential information and you agree to keep MStar`s
30 //    confidential information in strictest confidence and not disclose to any
31 //    third party.
32 //
33 // 4. MStar Software is provided on an "AS IS" basis without warranties of any
34 //    kind. Any warranties are hereby expressly disclaimed by MStar, including
35 //    without limitation, any warranties of merchantability, non-infringement of
36 //    intellectual property rights, fitness for a particular purpose, error free
37 //    and in conformity with any international standard.  You agree to waive any
38 //    claim against MStar for any loss, damage, cost or expense that you may
39 //    incur related to your use of MStar Software.
40 //    In no event shall MStar be liable for any direct, indirect, incidental or
41 //    consequential damages, including without limitation, lost of profit or
42 //    revenues, lost or damage of data, and unauthorized system use.
43 //    You agree that this Section 4 shall still apply without being affected
44 //    even if MStar Software has been modified by MStar in accordance with your
45 //    request or instruction for your use, except otherwise agreed by both
46 //    parties in writing.
47 //
48 // 5. If requested, MStar may from time to time provide technical supports or
49 //    services in relation with MStar Software to you for your use of
50 //    MStar Software in conjunction with your or your customer`s product
51 //    ("Services").
52 //    You understand and agree that, except otherwise agreed by both parties in
53 //    writing, Services are provided on an "AS IS" basis and the warranty
54 //    disclaimer set forth in Section 4 above shall apply.
55 //
56 // 6. Nothing contained herein shall be construed as by implication, estoppels
57 //    or otherwise:
58 //    (a) conferring any license or right to use MStar name, trademark, service
59 //        mark, symbol or any other identification;
60 //    (b) obligating MStar or any of its affiliates to furnish any person,
61 //        including without limitation, you and your customers, any assistance
62 //        of any kind whatsoever, or any information; or
63 //    (c) conferring any license or right under any intellectual property right.
64 //
65 // 7. These terms shall be governed by and construed in accordance with the laws
66 //    of Taiwan, R.O.C., excluding its conflict of law rules.
67 //    Any and all dispute arising out hereof or related hereto shall be finally
68 //    settled by arbitration referred to the Chinese Arbitration Association,
69 //    Taipei in accordance with the ROC Arbitration Law and the Arbitration
70 //    Rules of the Association by three (3) arbitrators appointed in accordance
71 //    with the said Rules.
72 //    The place of arbitration shall be in Taipei, Taiwan and the language shall
73 //    be English.
74 //    The arbitration award shall be final and binding to both parties.
75 //
76 //******************************************************************************
77 //<MStar Software>
78 ////////////////////////////////////////////////////////////////////////////////
79 //
80 // Copyright (c) 2008-2009 MStar Semiconductor, Inc.
81 // All rights reserved.
82 //
83 // Unless otherwise stipulated in writing, any and all information contained
84 // herein regardless in any format shall remain the sole proprietary of
85 // MStar Semiconductor Inc. and be kept in strict confidence
86 // ("MStar Confidential Information") by the recipient.
87 // Any unauthorized act including without limitation unauthorized disclosure,
88 // copying, use, reproduction, sale, distribution, modification, disassembling,
89 // reverse engineering and compiling of the contents of MStar Confidential
90 // Information is unlawful and strictly prohibited. MStar hereby reserves the
91 // rights to any and all damages, losses, costs and expenses resulting therefrom.
92 //
93 ////////////////////////////////////////////////////////////////////////////////
94 
95 ///////////////////////////////////////////////////////////////////////////////////////////////////
96 ///
97 /// @file   drvRTC.h
98 /// @brief  Piu Watch Dog Timer Driver Interface
99 /// @author MStar Semiconductor Inc.
100 ///////////////////////////////////////////////////////////////////////////////////////////////////
101 
102 /*!
103 	\defgroup G_RTC RTC interface
104     \ingroup  G_PERIPHERAL
105 
106 	\brief
107 	A real-time clock (RTC) is a computer clock (most often in the form of an integrated circuit)
108 	that keeps track of the current time. Although the term often refers to the devices in personal computers,
109 	servers and embedded systems, RTCs are present in almost any electronic device which needs to keep accurate time.
110 
111 	<b> Operation Flow </b>
112 	-# Initialize RTC
113 	-# Set RTC counter
114 	-# Get RTC counter
115 	-# Set RTC match counter
116 	-# Get RTC match counter
117 	-# Enable PM IRQ for the event to wake up
118 	-# Disable PM IRQ for the event to wake up
119 
120 	<b> Architecture </b>
121 	\image html RTC.png
122 
123 
124     \defgroup G_RTC_INIT Initialization Task relative
125     \ingroup  G_RTC
126     \defgroup G_RTC_COMMON Common Task relative
127     \ingroup  G_RTC
128     \defgroup G_RTC_CONTROL Control relative
129     \ingroup  G_RTC
130     \defgroup G_RTC_OTHER  other relative
131     \ingroup  G_RTC
132     \defgroup G_RTC_ToBeModified RTC api to be modified
133     \ingroup  G_RTC
134     \defgroup G_RTC_ToBeRemove RTC api to be removed
135     \ingroup  G_RTC
136 */
137 
138 #ifndef _DRV_RTC_H_
139 #define _DRV_RTC_H_
140 
141 
142 
143 #ifdef __cplusplus
144 extern "C"
145 {
146 #endif
147 
148 #include "MsTypes.h"
149 
150 ////////////////////////////////////////////////////////////////////////////////
151 //  Type and Structure
152 ////////////////////////////////////////////////////////////////////////////////
153 #define RTC_DRV_VERSION                 /* Character String for DRV/API version  */  \
154     MSIF_TAG,                           /* 'MSIF'                                           */  \
155     MSIF_CLASS,                         /* '00'                                              */  \
156     MSIF_CUS,                           /* 0x0000                                         */  \
157     MSIF_MOD,                           /* 0x0000                                         */  \
158     MSIF_CHIP,                                                                                  \
159     MSIF_CPU,                                                                                   \
160     {'R','T','C',},                     /* IP__                                             */  \
161     {'0','0'},                          /* 0.0 ~ Z.Z                                      */  \
162     {'0','0'},                          /* 00 ~ 99                                         */  \
163     {'0','0','0','0','0','0','0','0'},  /* CL#                                              */  \
164     MSIF_OS
165 
166 #define RTC_VERSION            0x00000001
167 
168 typedef enum _RTC_DbgLv
169 {
170     E_RTC_DBGLV_NONE,          /* no debug message */
171     E_RTC_DBGLV_ERR_ONLY,      /* show error only */
172     E_RTC_DBGLV_INFO,          /* show error & informaiton */
173     E_RTC_DBGLV_ALL            /* show error, information & funciton name */
174 }RTC_DbgLv;
175 
176 
177 typedef enum
178 {
179     E_MS_DRV_RTC_0,
180     E_MS_DRV_RTC_2,
181     E_MS_DRV_RTC_MAX,
182 }E_MS_DRV_RTC;
183 
184 typedef enum
185 {
186     E_MS_DRV_RTC_TIME_UNIT_SEC,
187     E_MS_DRV_RTC_TIME_UNIT_MS,
188     E_MS_DRV_RTC_TIME_UNIT_US,
189 }E_MS_DRV_RTC_TIME_UNIT;
190 
191 typedef enum
192 {
193     E_MS_DRV_RTC_STATUS_OK,
194     E_MS_DRV_RTC_STATUS_NOT_INIT,
195     E_MS_DRV_RTC_STATUS_IN_USE,
196     E_MS_DRV_RTC_STATUS_INVALID_ARGUMENT,
197 }E_MS_DRV_RTC_STATUS;
198 
199 E_MS_DRV_RTC_STATUS MDrv_RTC_ResetRTC(E_MS_DRV_RTC eRtc);
200 E_MS_DRV_RTC_STATUS MDrv_RTC_SetCount(E_MS_DRV_RTC eRtc, MS_U32 u32Value);
201 E_MS_DRV_RTC_STATUS MDrv_RTC_SetMatchCount(E_MS_DRV_RTC eRtc, MS_U32 u32Value);
202 MS_U32 MDrv_RTC_GetMatchCount(E_MS_DRV_RTC eRtc);
203 E_MS_DRV_RTC_STATUS MDrv_RTC_IntClear(E_MS_DRV_RTC eRtc);
204 E_MS_DRV_RTC_STATUS MDrv_RTC_SetPeriod(E_MS_DRV_RTC eRtc, MS_U32 u32Amount, E_MS_DRV_RTC_TIME_UNIT eUnit);
205 E_MS_DRV_RTC_STATUS MDrv_RTC_StartCounter(E_MS_DRV_RTC eRtc);
206 
207 //-------------------------------------------------------------------------------------------------
208 /// MOBF Encrypt
209 /// @ingroup G_RTC_INIT
210 /// @param u32Key \b IN: Key
211 /// @param bEnable \b IN: TRUE/FLASE
212 /// @return DRVAESDMA_OK : Success
213 /// @return Others : Fail
214 //-------------------------------------------------------------------------------------------------
215 MS_BOOL MDrv_RTC_Init(E_MS_DRV_RTC eRtc, MS_U32 u32Freq, MS_U32 u32Xtal, MS_U32 u32Sec,InterruptCb pIntCb);
216 //-------------------------------------------------------------------------------------------------
217 /// MOBF Encrypt
218 /// @ingroup G_RTC_CONTROL
219 /// @param u32Key \b IN: Key
220 /// @param bEnable \b IN: TRUE/FLASE
221 /// @return DRVAESDMA_OK : Success
222 /// @return Others : Fail
223 //-------------------------------------------------------------------------------------------------
224 MS_U32 MDrv_RTC_GetCount(E_MS_DRV_RTC eRtc);
225 //-------------------------------------------------------------------------------------------------
226 /// MOBF Encrypt
227 /// @ingroup G_RTC_INIT
228 /// @param u32Key \b IN: Key
229 /// @param bEnable \b IN: TRUE/FLASE
230 /// @return DRVAESDMA_OK : Success
231 /// @return Others : Fail
232 //-------------------------------------------------------------------------------------------------
233 void MDrv_RTC_DeInit(E_MS_DRV_RTC eRtc);
234 
235 //--------------------------------------------------------------------------------------------------
236 // Utopia2.0 will call this function to register SAR module
237 //--------------------------------------------------------------------------------------------------
238 //-------------------------------------------------------------------------------------------------
239 /// MOBF Encrypt
240 /// @ingroup G_RTC_ToBeRemove
241 /// @param u32Key \b IN: Key
242 /// @param bEnable \b IN: TRUE/FLASE
243 /// @return DRVAESDMA_OK : Success
244 /// @return Others : Fail
245 //-------------------------------------------------------------------------------------------------
246 void RTCRegisterToUtopia(FUtopiaOpen ModuleType);
247 //-------------------------------------------------------------------------------------------------
248 /// MOBF Encrypt
249 /// @ingroup G_RTC_ToBeRemove
250 /// @param u32Key \b IN: Key
251 /// @param bEnable \b IN: TRUE/FLASE
252 /// @return DRVAESDMA_OK : Success
253 /// @return Others : Fail
254 //-------------------------------------------------------------------------------------------------
255 MS_U32 RTCOpen(void** pInstance, MS_U32 u32ModuleVersion, void* pAttribute);
256 //-------------------------------------------------------------------------------------------------
257 /// MOBF Encrypt
258 /// @ingroup G_RTC_ToBeRemove
259 /// @param u32Key \b IN: Key
260 /// @param bEnable \b IN: TRUE/FLASE
261 /// @return DRVAESDMA_OK : Success
262 /// @return Others : Fail
263 //-------------------------------------------------------------------------------------------------
264 MS_U32 RTCClose(void* pInstance);
265 //-------------------------------------------------------------------------------------------------
266 /// MOBF Encrypt
267 /// @ingroup G_RTC_ToBeRemove
268 /// @param u32Key \b IN: Key
269 /// @param bEnable \b IN: TRUE/FLASE
270 /// @return DRVAESDMA_OK : Success
271 /// @return Others : Fail
272 //-------------------------------------------------------------------------------------------------
273 MS_U32 RTCIoctl(void* pInstance, MS_U32 u32Cmd, void *pArgs);
274 
275 //RTC_Private
276 typedef struct _RTC_RESOURCE_PRIVATE
277 {
278     MS_U32 Dummy;
279 }RTC_RESOURCE_PRIVATE;
280 
281 typedef struct _RTC_INSTANT_PRIVATE
282 {
283 
284 }RTC_INSTANT_PRIVATE;
285 
286 typedef struct _RTC_INIT_PARAM
287 {
288     E_MS_DRV_RTC eRtc;
289     MS_U32 u32Freq;
290     MS_U32 u32Xtal;
291     MS_U32 u32Sec;
292     InterruptCb pIntCb;
293 
294 } RTC_INIT_PARAM;
295 
296 MS_U16 MDrv_RTC_SetPowerState(EN_POWER_MODE u16PowerState);
297 
298 #ifdef __cplusplus
299 }
300 #endif
301 
302 #endif // _DRV_WDT_H_
303 
304