--- /dev/null
+/**\r
+ * \file\r
+ *\r
+ * \brief Chip-specific sleep manager configuration\r
+ *\r
+ * Copyright (c) 2012 - 2013 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ * this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ * this list of conditions and the following disclaimer in the documentation\r
+ * and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ * from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ * Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#ifndef SAM_SLEEPMGR_INCLUDED\r
+#define SAM_SLEEPMGR_INCLUDED\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+#include <compiler.h>\r
+#include <conf_sleepmgr.h>\r
+#include <interrupt.h>\r
+#include "bpm.h"\r
+#include "sleep.h"\r
+\r
+/**\r
+ * \weakgroup sleepmgr_group\r
+ * @{\r
+ */\r
+\r
+enum sleepmgr_mode {\r
+ /** Active mode. */\r
+ SLEEPMGR_ACTIVE = 0,\r
+\r
+ /**\r
+ * Sleep mode.\r
+ * Potential Wake Up sources: fast startup events and interrupt.\r
+ */\r
+ SLEEPMGR_SLEEP_0,\r
+ SLEEPMGR_SLEEP_1,\r
+ SLEEPMGR_SLEEP_2,\r
+ SLEEPMGR_SLEEP_3,\r
+\r
+ /**\r
+ * Wait mode.\r
+ * Potential Wake Up sources: fast startup events\r
+ */\r
+ SLEEPMGR_WAIT,\r
+\r
+ /**\r
+ * Retention mode.\r
+ * Potential Wake Up sources: fast startup events\r
+ */\r
+ SLEEPMGR_RET,\r
+\r
+ /** Backup mode. Potential Wake Up sources: WKUPs, SM, RTT, RTC. */\r
+ SLEEPMGR_BACKUP,\r
+\r
+ SLEEPMGR_NR_OF_MODES,\r
+};\r
+\r
+/**\r
+ * \internal\r
+ * \name Internal arrays\r
+ * @{\r
+ */\r
+#if defined(CONFIG_SLEEPMGR_ENABLE) || defined(__DOXYGEN__)\r
+/** Sleep mode lock counters */\r
+extern uint8_t sleepmgr_locks[];\r
+#endif /* CONFIG_SLEEPMGR_ENABLE */\r
+/** @} */\r
+\r
+static inline void sleepmgr_sleep(const enum sleepmgr_mode sleep_mode)\r
+{\r
+ Assert(sleep_mode != SLEEPMGR_ACTIVE);\r
+#ifdef CONFIG_SLEEPMGR_ENABLE\r
+ cpu_irq_disable();\r
+\r
+ /* Enter the sleep mode. */\r
+ bpm_sleep(BPM, sleep_mode);\r
+#else\r
+ UNUSED(sleep_mode);\r
+ cpu_irq_enable();\r
+#endif /* CONFIG_SLEEPMGR_ENABLE */\r
+}\r
+\r
+/** @} */\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif /* SAM_SLEEPMGR_INCLUDED */\r