1 //*****************************************************************************
\r
3 // hibernate.h - API definition for the Hibernation module.
\r
5 // Copyright (c) 2007-2008 Luminary Micro, Inc. All rights reserved.
\r
7 // Software License Agreement
\r
9 // Luminary Micro, Inc. (LMI) is supplying this software for use solely and
\r
10 // exclusively on LMI's microcontroller products.
\r
12 // The software is owned by LMI and/or its suppliers, and is protected under
\r
13 // applicable copyright laws. All rights are reserved. You may not combine
\r
14 // this software with "viral" open-source software in order to form a larger
\r
15 // program. Any use in violation of the foregoing restrictions may subject
\r
16 // the user to criminal sanctions under applicable laws, as well as to civil
\r
17 // liability for the breach of the terms and conditions of this license.
\r
19 // THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
\r
20 // OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
\r
21 // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
\r
22 // LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
\r
23 // CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
\r
25 // This is part of revision 2523 of the Stellaris Peripheral Driver Library.
\r
27 //*****************************************************************************
\r
29 #ifndef __HIBERNATE_H__
\r
30 #define __HIBERNATE_H__
\r
32 //*****************************************************************************
\r
34 // If building with a C++ compiler, make all of the definitions in this header
\r
35 // have a C binding.
\r
37 //*****************************************************************************
\r
43 //*****************************************************************************
\r
45 // Macros needed for selecting the clock source for HibernateClockSelect()
\r
47 //*****************************************************************************
\r
48 #define HIBERNATE_CLOCK_SEL_RAW 0x04
\r
49 #define HIBERNATE_CLOCK_SEL_DIV128 0x00
\r
51 //*****************************************************************************
\r
53 // Macros need to configure wake events for HibernateWakeSet()
\r
55 //*****************************************************************************
\r
56 #define HIBERNATE_WAKE_PIN 0x10
\r
57 #define HIBERNATE_WAKE_RTC 0x08
\r
59 //*****************************************************************************
\r
61 // Macros needed to configure low battery detect for HibernateLowBatSet()
\r
63 //*****************************************************************************
\r
64 #define HIBERNATE_LOW_BAT_DETECT 0x20
\r
65 #define HIBERNATE_LOW_BAT_ABORT 0xA0
\r
67 //*****************************************************************************
\r
69 // Macros defining interrupt source bits for the interrupt functions.
\r
71 //*****************************************************************************
\r
72 #define HIBERNATE_INT_PIN_WAKE 0x08
\r
73 #define HIBERNATE_INT_LOW_BAT 0x04
\r
74 #define HIBERNATE_INT_RTC_MATCH_0 0x01
\r
75 #define HIBERNATE_INT_RTC_MATCH_1 0x02
\r
77 //*****************************************************************************
\r
79 // API Function prototypes
\r
81 //*****************************************************************************
\r
82 extern void HibernateEnableExpClk(unsigned long ulHibClk);
\r
83 extern void HibernateDisable(void);
\r
84 extern void HibernateClockSelect(unsigned long ulClockInput);
\r
85 extern void HibernateRTCEnable(void);
\r
86 extern void HibernateRTCDisable(void);
\r
87 extern void HibernateWakeSet(unsigned long ulWakeFlags);
\r
88 extern unsigned long HibernateWakeGet(void);
\r
89 extern void HibernateLowBatSet(unsigned long ulLowBatFlags);
\r
90 extern unsigned long HibernateLowBatGet(void);
\r
91 extern void HibernateRTCSet(unsigned long ulRTCValue);
\r
92 extern unsigned long HibernateRTCGet(void);
\r
93 extern void HibernateRTCMatch0Set(unsigned long ulMatch);
\r
94 extern unsigned long HibernateRTCMatch0Get(void);
\r
95 extern void HibernateRTCMatch1Set(unsigned long ulMatch);
\r
96 extern unsigned long HibernateRTCMatch1Get(void);
\r
97 extern void HibernateRTCTrimSet(unsigned long ulTrim);
\r
98 extern unsigned long HibernateRTCTrimGet(void);
\r
99 extern void HibernateDataSet(unsigned long *pulData, unsigned long ulCount);
\r
100 extern void HibernateDataGet(unsigned long *pulData, unsigned long ulCount);
\r
101 extern void HibernateRequest(void);
\r
102 extern void HibernateIntEnable(unsigned long ulIntFlags);
\r
103 extern void HibernateIntDisable(unsigned long ulIntFlags);
\r
104 extern void HibernateIntRegister(void (*pfnHandler)(void));
\r
105 extern void HibernateIntUnregister(void);
\r
106 extern unsigned long HibernateIntStatus(tBoolean bMasked);
\r
107 extern void HibernateIntClear(unsigned long ulIntFlags);
\r
108 extern unsigned int HibernateIsActive(void);
\r
110 //*****************************************************************************
\r
112 // Several Hibernate module APIs have been renamed, with the original function
\r
113 // name being deprecated. These defines provide backward compatibility.
\r
115 //*****************************************************************************
\r
117 #include "sysctl.h"
\r
118 #define HibernateEnable(a) \
\r
119 HibernateEnableExpClk(a, SysCtlClockGet())
\r
122 //*****************************************************************************
\r
124 // Mark the end of the C bindings section for C++ compilers.
\r
126 //*****************************************************************************
\r
131 #endif // __HIBERNATE_H__
\r