1 //***************************************************************************** 2 // 3 // hibernate.h - API definition for the Hibernation module. 4 // 5 // Copyright (c) 2007-2020 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.2.0.295 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 108 //***************************************************************************** 109 // 110 // The following defines are used with the HibernateCounterMode() API. 111 // 112 //***************************************************************************** 113 #define HIBERNATE_COUNTER_RTC 0x00000000 114 #define HIBERNATE_COUNTER_12HR 0x00000001 115 #define HIBERNATE_COUNTER_24HR 0x00000005 116 117 //***************************************************************************** 118 // 119 // Tamper event configuration options used with HibernateTamperEventsConfig(). 120 // 121 //***************************************************************************** 122 #define HIBERNATE_TAMPER_EVENTS_NO_HIB_WAKE \ 123 0x00000000 124 #define HIBERNATE_TAMPER_EVENTS_HIB_WAKE \ 125 0x00000800 126 #define HIBERNATE_TAMPER_EVENTS_NO_ERASE_HIB_MEM \ 127 0x00000000 128 #define HIBERNATE_TAMPER_EVENTS_ERASE_LOW_HIB_MEM \ 129 0x00000100 130 #define HIBERNATE_TAMPER_EVENTS_ERASE_HIGH_HIB_MEM \ 131 0x00000200 132 #define HIBERNATE_TAMPER_EVENTS_ERASE_ALL_HIB_MEM \ 133 0x00000300 134 135 //***************************************************************************** 136 // 137 // Status flags returned by the HibernateTamperStatus() function. 138 // 139 //***************************************************************************** 140 #define HIBERNATE_TAMPER_STATUS_INACTIVE \ 141 0x00000010 142 #define HIBERNATE_TAMPER_STATUS_ACTIVE \ 143 0x00000020 144 #define HIBERNATE_TAMPER_STATUS_EVENT \ 145 0x00000040 146 #define HIBERNATE_TAMPER_STATUS_EXT_OSC_ACTIVE \ 147 0x00000008 148 #define HIBERNATE_TAMPER_STATUS_EXT_OSC_INACTIVE \ 149 0x00000002 150 #define HIBERNATE_TAMPER_STATUS_EXT_OSC_VALID \ 151 0x00000004 152 #define HIBERNATE_TAMPER_STATUS_EXT_OSC_FAILED \ 153 0x00000001 154 155 //***************************************************************************** 156 // 157 // Configuration options used with HibernateTamperIOEnable(). 158 // 159 //***************************************************************************** 160 #define HIBERNATE_TAMPER_IO_TRIGGER_LOW \ 161 0x00000000 162 #define HIBERNATE_TAMPER_IO_TRIGGER_HIGH \ 163 0x00000002 164 #define HIBERNATE_TAMPER_IO_WPU_DISABLED \ 165 0x00000000 166 #define HIBERNATE_TAMPER_IO_WPU_ENABLED \ 167 0x00000004 168 #define HIBERNATE_TAMPER_IO_MATCH_SHORT \ 169 0x00000000 170 #define HIBERNATE_TAMPER_IO_MATCH_LONG \ 171 0x00000008 172 173 //***************************************************************************** 174 // 175 // Tamper log event flags. 176 // 177 //***************************************************************************** 178 #define HIBERNATE_TAMPER_EVENT_0 \ 179 0x00000001 180 #define HIBERNATE_TAMPER_EVENT_1 \ 181 0x00000002 182 #define HIBERNATE_TAMPER_EVENT_2 \ 183 0x00000004 184 #define HIBERNATE_TAMPER_EVENT_3 \ 185 0x00000008 186 #define HIBERNATE_TAMPER_EVENT_EXT_OSC \ 187 0x00010000 188 189 //***************************************************************************** 190 // 191 // API Function prototypes 192 // 193 //***************************************************************************** 194 extern void HibernateGPIORetentionEnable(void); 195 extern void HibernateGPIORetentionDisable(void); 196 extern bool HibernateGPIORetentionGet(void); 197 extern void HibernateEnableExpClk(uint32_t ui32HibClk); 198 extern void HibernateDisable(void); 199 extern void HibernateRTCEnable(void); 200 extern void HibernateRTCDisable(void); 201 extern void HibernateWakeSet(uint32_t ui32WakeFlags); 202 extern uint32_t HibernateWakeGet(void); 203 extern void HibernateLowBatSet(uint32_t ui32LowBatFlags); 204 extern uint32_t HibernateLowBatGet(void); 205 extern void HibernateRTCSet(uint32_t ui32RTCValue); 206 extern uint32_t HibernateRTCGet(void); 207 extern void HibernateRTCMatchSet(uint32_t ui32Match, uint32_t ui32Value); 208 extern uint32_t HibernateRTCMatchGet(uint32_t ui32Match); 209 extern void HibernateRTCTrimSet(uint32_t ui32Trim); 210 extern uint32_t HibernateRTCTrimGet(void); 211 extern void HibernateDataSet(uint32_t *pui32Data, uint32_t ui32Count); 212 extern void HibernateDataGet(uint32_t *pui32Data, uint32_t ui32Count); 213 extern void HibernateRequest(void); 214 extern void HibernateIntEnable(uint32_t ui32IntFlags); 215 extern void HibernateIntDisable(uint32_t ui32IntFlags); 216 extern void HibernateIntRegister(void (*pfnHandler)(void)); 217 extern void HibernateIntUnregister(void); 218 extern uint32_t HibernateIntStatus(bool bMasked); 219 extern void HibernateIntClear(uint32_t ui32IntFlags); 220 extern uint32_t HibernateIsActive(void); 221 extern void HibernateRTCSSMatchSet(uint32_t ui32Match, uint32_t ui32Value); 222 extern uint32_t HibernateRTCSSMatchGet(uint32_t ui32Match); 223 extern uint32_t HibernateRTCSSGet(void); 224 extern void HibernateClockConfig(uint32_t ui32Config); 225 extern void HibernateBatCheckStart(void); 226 extern uint32_t HibernateBatCheckDone(void); 227 extern void HibernateCounterMode(uint32_t ui32Config); 228 extern void HibernateCalendarSet(struct tm *psTime); 229 extern int HibernateCalendarGet(struct tm *psTime); 230 extern void HibernateCalendarMatchSet(uint32_t ui32Index, struct tm *psTime); 231 extern void HibernateCalendarMatchGet(uint32_t ui32Index, struct tm *psTime); 232 extern void HibernateTamperEnable(void); 233 extern void HibernateTamperEventsConfig(uint32_t ui32Config); 234 extern bool HibernateTamperEventsGet(uint32_t ui32Index, uint32_t *pui32RTC, 235 uint32_t *pui32Event); 236 extern void HibernateTamperEventsClear(void); 237 extern void HibernateTamperEventsClearNoLock(void); 238 extern void HibernateTamperUnLock(void); 239 extern void HibernateTamperLock(void); 240 extern void HibernateTamperDisable(void); 241 extern void HibernateTamperIOEnable(uint32_t ui32Input, uint32_t ui32Config); 242 extern void HibernateTamperIODisable(uint32_t ui32Input); 243 extern uint32_t HibernateTamperStatusGet(void); 244 extern void HibernateTamperExtOscRecover(void); 245 extern bool HibernateTamperExtOscValid(void); 246 247 //***************************************************************************** 248 // 249 // Mark the end of the C bindings section for C++ compilers. 250 // 251 //***************************************************************************** 252 #ifdef __cplusplus 253 } 254 #endif 255 256 #endif // __DRIVERLIB_HIBERNATE_H__ 257