EE445M RTOS
Taken at the University of Texas Spring 2015
hibernate.h
Go to the documentation of this file.
1 //*****************************************************************************
2 //
3 // hibernate.h - API definition for the Hibernation module.
4 //
5 // Copyright (c) 2007-2014 Texas Instruments Incorporated. All rights reserved.
6 // Software License Agreement
7 //
8 // Redistribution and use in source and binary forms, with or without
9 // modification, are permitted provided that the following conditions
10 // are met:
11 //
12 // Redistributions of source code must retain the above copyright
13 // notice, this list of conditions and the following disclaimer.
14 //
15 // Redistributions in binary form must reproduce the above copyright
16 // notice, this list of conditions and the following disclaimer in the
17 // documentation and/or other materials provided with the
18 // distribution.
19 //
20 // Neither the name of Texas Instruments Incorporated nor the names of
21 // its contributors may be used to endorse or promote products derived
22 // from this software without specific prior written permission.
23 //
24 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
27 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
28 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
29 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
30 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
31 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
32 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
33 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
34 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35 //
36 // This is part of revision 2.1.0.12573 of the Tiva Peripheral Driver Library.
37 //
38 //*****************************************************************************
39 
40 #ifndef __DRIVERLIB_HIBERNATE_H__
41 #define __DRIVERLIB_HIBERNATE_H__
42 
43 //*****************************************************************************
44 //
45 // If building with a C++ compiler, make all of the definitions in this header
46 // have a C binding.
47 //
48 //*****************************************************************************
49 #ifdef __cplusplus
50 extern "C"
51 {
52 #endif
53 
54 //*****************************************************************************
55 //
56 // Macros need to configure wake events for HibernateWakeSet()
57 //
58 //*****************************************************************************
59 #define HIBERNATE_WAKE_PIN 0x00000010
60 #define HIBERNATE_WAKE_RTC 0x00000008
61 #define HIBERNATE_WAKE_LOW_BAT 0x00000200
62 #define HIBERNATE_WAKE_GPIO 0x00000010
63 #define HIBERNATE_WAKE_RESET 0x00100010
64 #define HIBERNATE_WAKE_TAMPER 0x08000010
65 
66 //*****************************************************************************
67 //
68 // Macros needed to configure low battery detect for HibernateLowBatSet()
69 //
70 //*****************************************************************************
71 #define HIBERNATE_LOW_BAT_DETECT \
72  0x00000020
73 #define HIBERNATE_LOW_BAT_ABORT 0x000000A0
74 #define HIBERNATE_LOW_BAT_1_9V 0x00000000
75 #define HIBERNATE_LOW_BAT_2_1V 0x00002000
76 #define HIBERNATE_LOW_BAT_2_3V 0x00004000
77 #define HIBERNATE_LOW_BAT_2_5V 0x00006000
78 
79 //*****************************************************************************
80 //
81 // Macros defining interrupt source bits for the interrupt functions.
82 //
83 //*****************************************************************************
84 #define HIBERNATE_INT_VDDFAIL 0x00000080
85 #define HIBERNATE_INT_RESET_WAKE \
86  0x00000040
87 #define HIBERNATE_INT_GPIO_WAKE 0x00000020
88 #define HIBERNATE_INT_WR_COMPLETE \
89  0x00000010
90 #define HIBERNATE_INT_PIN_WAKE 0x00000008
91 #define HIBERNATE_INT_LOW_BAT 0x00000004
92 #define HIBERNATE_INT_RTC_MATCH_0 \
93  0x00000001
94 
95 //*****************************************************************************
96 //
97 // Macros defining oscillator configuration options for the
98 // HibernateClockConfig() function.
99 //
100 //*****************************************************************************
101 #define HIBERNATE_OSC_LFIOSC 0x00080000
102 #define HIBERNATE_OSC_LOWDRIVE 0x00000000
103 #define HIBERNATE_OSC_HIGHDRIVE 0x00020000
104 #define HIBERNATE_OSC_DISABLE 0x00010000
105 #define HIBERNATE_OUT_WRSTALL 0x20000000
106 #define HIBERNATE_OUT_SYSCLK 0x00000001
107 #define HIBERNATE_OUT_ALT1CLK 0x00000002
108 
109 //*****************************************************************************
110 //
111 // The following defines are used with the HibernateCounterMode() API.
112 //
113 //*****************************************************************************
114 #define HIBERNATE_COUNTER_RTC 0x00000000
115 #define HIBERNATE_COUNTER_12HR 0x00000001
116 #define HIBERNATE_COUNTER_24HR 0x00000005
117 
118 //*****************************************************************************
119 //
120 // Tamper event configuration options used with HibernateTamperEventsConfig().
121 //
122 //*****************************************************************************
123 #define HIBERNATE_TAMPER_EVENTS_NO_HIB_WAKE \
124  0x00000000
125 #define HIBERNATE_TAMPER_EVENTS_HIB_WAKE \
126  0x00000800
127 #define HIBERNATE_TAMPER_EVENTS_NO_ERASE_HIB_MEM \
128  0x00000000
129 #define HIBERNATE_TAMPER_EVENTS_ERASE_LOW_HIB_MEM \
130  0x00000100
131 #define HIBERNATE_TAMPER_EVENTS_ERASE_HIGH_HIB_MEM \
132  0x00000200
133 #define HIBERNATE_TAMPER_EVENTS_ERASE_ALL_HIB_MEM \
134  0x00000300
135 
136 //*****************************************************************************
137 //
138 // Status flags returned by the HibernateTamperStatus() function.
139 //
140 //*****************************************************************************
141 #define HIBERNATE_TAMPER_STATUS_INACTIVE \
142  0x00000010
143 #define HIBERNATE_TAMPER_STATUS_ACTIVE \
144  0x00000020
145 #define HIBERNATE_TAMPER_STATUS_EVENT \
146  0x00000040
147 #define HIBERNATE_TAMPER_STATUS_EXT_OSC_ACTIVE \
148  0x00000008
149 #define HIBERNATE_TAMPER_STATUS_EXT_OSC_INACTIVE \
150  0x00000002
151 #define HIBERNATE_TAMPER_STATUS_EXT_OSC_VALID \
152  0x00000004
153 #define HIBERNATE_TAMPER_STATUS_EXT_OSC_FAILED \
154  0x00000001
155 
156 //*****************************************************************************
157 //
158 // Configuration options used with HibernateTamperIOEnable().
159 //
160 //*****************************************************************************
161 #define HIBERNATE_TAMPER_IO_TRIGGER_LOW \
162  0x00000000
163 #define HIBERNATE_TAMPER_IO_TRIGGER_HIGH \
164  0x00000002
165 #define HIBERNATE_TAMPER_IO_WPU_DISABLED \
166  0x00000000
167 #define HIBERNATE_TAMPER_IO_WPU_ENABLED \
168  0x00000004
169 #define HIBERNATE_TAMPER_IO_MATCH_SHORT \
170  0x00000000
171 #define HIBERNATE_TAMPER_IO_MATCH_LONG \
172  0x00000008
173 
174 //*****************************************************************************
175 //
176 // Tamper log event flags.
177 //
178 //*****************************************************************************
179 #define HIBERNATE_TAMPER_EVENT_0 \
180  0x00000001
181 #define HIBERNATE_TAMPER_EVENT_1 \
182  0x00000002
183 #define HIBERNATE_TAMPER_EVENT_2 \
184  0x00000004
185 #define HIBERNATE_TAMPER_EVENT_3 \
186  0x00000008
187 #define HIBERNATE_TAMPER_EVENT_EXT_OSC \
188  0x00010000
189 
190 //*****************************************************************************
191 //
192 // API Function prototypes
193 //
194 //*****************************************************************************
195 extern void HibernateGPIORetentionEnable(void);
196 extern void HibernateGPIORetentionDisable(void);
197 extern bool HibernateGPIORetentionGet(void);
198 extern void HibernateEnableExpClk(uint32_t ui32HibClk);
199 extern void HibernateDisable(void);
200 extern void HibernateRTCEnable(void);
201 extern void HibernateRTCDisable(void);
202 extern void HibernateWakeSet(uint32_t ui32WakeFlags);
203 extern uint32_t HibernateWakeGet(void);
204 extern void HibernateLowBatSet(uint32_t ui32LowBatFlags);
205 extern uint32_t HibernateLowBatGet(void);
206 extern void HibernateRTCSet(uint32_t ui32RTCValue);
207 extern uint32_t HibernateRTCGet(void);
208 extern void HibernateRTCMatchSet(uint32_t ui32Match, uint32_t ui32Value);
209 extern uint32_t HibernateRTCMatchGet(uint32_t ui32Match);
210 extern void HibernateRTCTrimSet(uint32_t ui32Trim);
211 extern uint32_t HibernateRTCTrimGet(void);
212 extern void HibernateDataSet(uint32_t *pui32Data, uint32_t ui32Count);
213 extern void HibernateDataGet(uint32_t *pui32Data, uint32_t ui32Count);
214 extern void HibernateRequest(void);
215 extern void HibernateIntEnable(uint32_t ui32IntFlags);
216 extern void HibernateIntDisable(uint32_t ui32IntFlags);
217 extern void HibernateIntRegister(void (*pfnHandler)(void));
218 extern void HibernateIntUnregister(void);
219 extern uint32_t HibernateIntStatus(bool bMasked);
220 extern void HibernateIntClear(uint32_t ui32IntFlags);
221 extern uint32_t HibernateIsActive(void);
222 extern void HibernateRTCSSMatchSet(uint32_t ui32Match, uint32_t ui32Value);
223 extern uint32_t HibernateRTCSSMatchGet(uint32_t ui32Match);
224 extern uint32_t HibernateRTCSSGet(void);
225 extern void HibernateClockConfig(uint32_t ui32Config);
226 extern void HibernateBatCheckStart(void);
227 extern uint32_t HibernateBatCheckDone(void);
228 extern void HibernateCounterMode(uint32_t ui32Config);
229 extern void HibernateCalendarSet(struct tm *psTime);
230 extern int HibernateCalendarGet(struct tm *psTime);
231 extern void HibernateCalendarMatchSet(uint32_t ui32Index, struct tm *psTime);
232 extern void HibernateCalendarMatchGet(uint32_t ui32Index, struct tm *psTime);
233 extern void HibernateTamperEnable(void);
234 extern void HibernateTamperEventsConfig(uint32_t ui32Config);
235 extern bool HibernateTamperEventsGet(uint32_t ui32Index, uint32_t *pui32RTC,
236  uint32_t *pui32Event);
237 extern void HibernateTamperEventsClear(void);
238 extern void HibernateTamperEventsClearNoLock(void);
239 extern void HibernateTamperUnLock(void);
240 extern void HibernateTamperLock(void);
241 extern void HibernateTamperDisable(void);
242 extern void HibernateTamperIOEnable(uint32_t ui32Input, uint32_t ui32Config);
243 extern void HibernateTamperIODisable(uint32_t ui32Input);
244 extern uint32_t HibernateTamperStatusGet(void);
245 extern void HibernateTamperExtOscRecover(void);
246 extern bool HibernateTamperExtOscValid(void);
247 
248 //*****************************************************************************
249 //
250 // Mark the end of the C bindings section for C++ compilers.
251 //
252 //*****************************************************************************
253 #ifdef __cplusplus
254 }
255 #endif
256 
257 #endif // __DRIVERLIB_HIBERNATE_H__
uint32_t HibernateWakeGet(void)
Definition: hibernate.c:512
void HibernateRTCDisable(void)
Definition: hibernate.c:316
uint32_t HibernateIsActive(void)
Definition: hibernate.c:1306
void HibernateTamperUnLock(void)
Definition: hibernate.c:2247
void HibernateRTCSSMatchSet(uint32_t ui32Match, uint32_t ui32Value)
Definition: hibernate.c:746
void HibernateRequest(void)
Definition: hibernate.c:988
bool HibernateGPIORetentionGet(void)
Definition: hibernate.c:1395
void HibernateIntEnable(uint32_t ui32IntFlags)
Definition: hibernate.c:1030
void HibernateTamperEnable(void)
Definition: hibernate.c:1944
void HibernateTamperEventsConfig(uint32_t ui32Config)
Definition: hibernate.c:1895
void HibernateIntDisable(uint32_t ui32IntFlags)
Definition: hibernate.c:1069
void HibernateDataGet(uint32_t *pui32Data, uint32_t ui32Count)
Definition: hibernate.c:929
void HibernateCalendarMatchSet(uint32_t ui32Index, struct tm *psTime)
Definition: hibernate.c:1750
uint32_t HibernateIntStatus(bool bMasked)
Definition: hibernate.c:1220
void HibernateTamperIODisable(uint32_t ui32Input)
Definition: hibernate.c:2117
uint32_t HibernateBatCheckDone(void)
Definition: hibernate.c:379
void HibernateGPIORetentionDisable(void)
Definition: hibernate.c:1365
void HibernateClockConfig(uint32_t ui32Config)
Definition: hibernate.c:225
void HibernateDisable(void)
Definition: hibernate.c:160
bool HibernateTamperEventsGet(uint32_t ui32Index, uint32_t *pui32RTC, uint32_t *pui32Event)
Definition: hibernate.c:2416
void HibernateRTCMatchSet(uint32_t ui32Match, uint32_t ui32Value)
Definition: hibernate.c:689
void HibernateIntUnregister(void)
Definition: hibernate.c:1178
void HibernateTamperEventsClearNoLock(void)
Definition: hibernate.c:2217
uint32_t HibernateRTCTrimGet(void)
Definition: hibernate.c:856
void HibernateGPIORetentionEnable(void)
Definition: hibernate.c:1334
void HibernateRTCEnable(void)
Definition: hibernate.c:291
void HibernateTamperDisable(void)
Definition: hibernate.c:1986
void HibernateTamperEventsClear(void)
Definition: hibernate.c:2167
uint32_t HibernateTamperStatusGet(void)
Definition: hibernate.c:2321
uint32_t HibernateRTCSSGet(void)
Definition: hibernate.c:799
void HibernateLowBatSet(uint32_t ui32LowBatFlags)
Definition: hibernate.c:571
void HibernateDataSet(uint32_t *pui32Data, uint32_t ui32Count)
Definition: hibernate.c:883
void HibernateWakeSet(uint32_t ui32WakeFlags)
Definition: hibernate.c:420
uint32_t HibernateRTCSSMatchGet(uint32_t ui32Match)
Definition: hibernate.c:776
void HibernateCalendarSet(struct tm *psTime)
Definition: hibernate.c:1624
uint32_t HibernateRTCGet(void)
Definition: hibernate.c:665
uint32_t HibernateRTCMatchGet(uint32_t ui32Match)
Definition: hibernate.c:718
uint32_t HibernateLowBatGet(void)
Definition: hibernate.c:607
void HibernateCalendarMatchGet(uint32_t ui32Index, struct tm *psTime)
Definition: hibernate.c:1785
void HibernateEnableExpClk(uint32_t ui32HibClk)
Definition: hibernate.c:136
void HibernateTamperExtOscRecover(void)
Definition: hibernate.c:2492
void HibernateBatCheckStart(void)
Definition: hibernate.c:349
void HibernateRTCTrimSet(uint32_t ui32Trim)
Definition: hibernate.c:826
void HibernateIntRegister(void(*pfnHandler)(void))
Definition: hibernate.c:1141
int HibernateCalendarGet(struct tm *psTime)
Definition: hibernate.c:1661
void HibernateCounterMode(uint32_t ui32Config)
Definition: hibernate.c:1446
bool HibernateTamperExtOscValid(void)
Definition: hibernate.c:2535
void HibernateTamperLock(void)
Definition: hibernate.c:2272
void HibernateTamperIOEnable(uint32_t ui32Input, uint32_t ui32Config)
Definition: hibernate.c:2046
void HibernateRTCSet(uint32_t ui32RTCValue)
Definition: hibernate.c:630
void HibernateIntClear(uint32_t ui32IntFlags)
Definition: hibernate.c:1261