1 /*******************************************************************************
2 * Copyright (c) 2014, Realtek Semiconductor Corp.
3 * All rights reserved.
4 *
5 * This module is a confidential and proprietary property of RealTek and
6 * possession or use of this module requires written permission of RealTek.
7 *******************************************************************************/
8 #ifndef MBED_EXT_POWER_MODE_API_EXT_H
9 #define MBED_EXT_POWER_MODE_API_EXT_H
10 #if (defined(CONFIG_PLATFORM_8195BHP) && (CONFIG_PLATFORM_8195BHP == 1))  ||  (defined(CONFIG_PLATFORM_8195BLP) && (CONFIG_PLATFORM_8195BLP == 1))
11 ///@name AmebaPro Only
12 ///@{
13 #include "device.h"
14 
15 #if defined (CONFIG_PLATFORM_8195B)
16 /** @addtogroup power mode POWER MODE
17  *  @ingroup    hal
18  *  @brief      power mode functions
19  *  @{
20  */
21 
22 #if defined (CONFIG_PLATFORM_8195BLP)
23 //SLP
24 #define     SLP_STIMER    BIT0
25 #define     SLP_GTIMER    BIT1
26 #define     SLP_GPIO      BIT2
27 #define     SLP_PWM       BIT3
28 #define     SLP_UART      BIT4
29 #define     SLP_HSTIMER   BIT5
30 #define     SLP_WLAN      BIT6
31 #define     SLP_I2C       BIT7
32 #define     SLP_ADC       BIT8
33 #define     SLP_COMP      BIT9
34 #define     SLP_SGPIO     BIT10
35 
36 //DSTBY
37 #define     DSTBY_STIMER  BIT0
38 #define     DSTBY_GTIMER  BIT1
39 #define     DSTBY_GPIO    BIT2
40 #define     DSTBY_PWM     BIT3
41 #define     DSTBY_UART    BIT4
42 #define     DSTBY_HSTIMER BIT5
43 #define     DSTBY_WLAN    BIT6
44 #define     DSTBY_I2C     BIT7
45 #define     DSTBY_ADC     BIT8
46 #define     DSTBY_COMP    BIT9
47 #define     DSTBY_SGPIO   BIT10
48 
49 //DS wake event
50 #define DS_STIMER   BIT0
51 #define DS_GPIO     BIT1
52 #define DS_ADP      BIT2
53 #define DS_RTC      BIT3
54 #elif defined (CONFIG_PLATFORM_8195BHP)
55 //SLP
56 #define     SLP_GTIMER    BIT1
57 #define     SLP_GPIO      BIT2
58 #define     SLP_PWM       BIT3
59 #define     SLP_UART      BIT4
60 #define     SLP_MII   	  BIT5
61 #define     SLP_WLAN      BIT6
62 #define     SLP_I2C       BIT7
63 #define     SLP_ADC       BIT8
64 #define     SLP_USB       BIT9
65 #define     SLP_SGPIO     BIT10
66 #define     SLP_SDIO      BIT11
67 
68 //DSTBY
69 #define     DSTBY_GTIMER  BIT1
70 #define     DSTBY_GPIO    BIT2
71 #endif
72 
73 ///@name Ameba Common
74 ///@{
75 
76 enum {
77     AON_128K = CLK_128K,    // AON CLK 128kHz
78     AON_100K = CLK_100K,    // AON CLK 100kHz
79 };
80 
81 /**
82  *  @brief The function for ls sleep mode.
83  *
84  *  @param[in]  Option, To slect AON Timer,GPIO...etc
85  *                - bit[4]: the UART Wake up event.
86  *                - bit[3]: the PWM Wake up event.
87  *                - bit[2]: the GPIO A13 as a Wake up event.
88  *                - bit[1]: the GTimer Wake up event. Only active at 128kHz
89  *                - bit[0]: the AON Timer Wake up event.
90  *  @param[in]  SDuration, wake up after SDuration value. Uint: us
91  *  @param[in]  Clock, 1: 100kHz, 0: 128kHz.
92  *  @param[in]  GpioOption, GPIOA0~A13 as a wake up trigger.
93  *
94  *  @returns void
95  */
96 void SleepCG (u16 Option, u32 SDuration, u8 Clock, u8 GpioOption);
97 
98 #if defined (CONFIG_PLATFORM_8195BHP)
99 
100 /**
101  *  @brief The function for hs power gated.
102  *
103  *  @param[in]  Option, To slect HS Timer and GPIO
104  *                - bit[2]: the GPIO Wake up event.
105  *                - bit[1]: the GTimer Wake up event.
106  *  @param[in]  SDuration, wake up after SDuration value. Uint: us
107  *  @param[in]  Memsel, 1: Enable memory, 0: Disable memory.
108  *  @param[in]  GpioOption, Select GPIO pin as a wake up trigger.
109  *
110  *  @returns void
111  */
112 void SleepPG (u16 Option, u32 SDuration, u8 Memsel, u8 GpioOption);
113 
114 #endif
115 #if defined (CONFIG_PLATFORM_8195BLP)
116 
117 /**
118  *  @brief The function for ls standby mode.
119  *
120  *  @param[in]  Option, To slect AON Timer,GPIO...etc
121  *                - bit[4]: the UART Wake up event.
122  *                - bit[3]: the PWM Wake up event.
123  *                - bit[2]: the GPIO Wake up event.
124  *                - bit[1]: the GTimer Wake up event. Not ready
125  *                - bit[0]: the AON Timer Wake up event.
126  *  @param[in]  SDuration, wake up after SDuration value. Uint: us
127  *  @param[in]  Memsel, 1: Enable memory, 0: Disable memory.
128  *  @param[in]  GpioOption, GPIOA0~A13 as a wake up trigger.
129  *
130  *  @returns void
131  */
132 void Standby (u16 Option, u32 SDuration, u8 Memsel, u8 GpioOption);
133 
134 /**
135   * @brief The stubs functions table to exports POWER MODE HAL functions in ROM.
136   */
137 
138 //extern const hal_power_mode_func_stubs_t hal_power_mode_stubs;
139 
140 /**
141  *  @brief The function for ls deep sleep mode.
142  *
143  *  @param[in]  Option, To slect AON Timer,GPIO,ADP and RTC.
144  *                - bit[2]: the ADP Wake up event.
145  *                - bit[1]: the GPIO Wake up event.
146  *                - bit[0]: the AON Timer Wake up event.
147  *  @param[in]  SDuration, wake up after SDuration value. Uint: us
148  *  @param[in]  Memsel, 1: Enable memory, 0: Disable memory.
149  *  @param[in]  Clock, 1: 100kHz, 0: 128kHz.
150  *
151  *  @returns void
152  */
153 void DeepSleep (u8  Option, u32 SDuration, u8 Memsel, u8 Clock);
154 
155 /**
156  *  @brief The function for ls deep sleep mode.
157  *
158  *  @param[in] Option The RTC wake up event.
159  *                - bit[3]: Wake up per day.
160  *                - bit[2]: Wake up per hour.
161  *                - bit[1]: Wake up per minute.
162  *                - bit[0]: Wake up per second.
163  *  @param[in]  Memsel, 1: Enable memory, 0: Disable memory.
164  *
165  *  @returns void
166  */
167 void DeepSleep_RTC (u8 Option, u8 Memsel);
168 
169 ///@}
170 
171 /*\@}*/
172 
173 #endif
174 #endif
175 ///@}
176 #endif  // end of "#if defined(CONFIG_PLATFORM_8195BHP) || defined(CONFIG_PLATFORM_8195BLP)"
177 #endif
178