Skip to content

Commit 4040211

Browse files
committed
[NANO130] Refine sleep code
1. Remove stale code with mbed OS 3. 2. Remove check for busy peripherals unorganizedly. This would be supported by e.g. official sleep manager.
1 parent 785413a commit 4040211

File tree

1 file changed

+8
-60
lines changed
  • targets/TARGET_NUVOTON/TARGET_NANO100

1 file changed

+8
-60
lines changed

targets/TARGET_NUVOTON/TARGET_NANO100/sleep.c

Lines changed: 8 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@
1515
*/
1616

1717
#include "sleep_api.h"
18-
#include "serial_api.h"
19-
#include "lp_ticker_api.h"
2018

2119
#if DEVICE_SLEEP
2220

@@ -25,74 +23,24 @@
2523
#include "objects.h"
2624
#include "PeripheralPins.h"
2725

28-
static void mbed_enter_sleep(struct sleep_s *obj);
29-
static void mbed_exit_sleep(struct sleep_s *obj);
30-
31-
int serial_allow_powerdown(void);
32-
int spi_allow_powerdown(void);
33-
int i2c_allow_powerdown(void);
34-
int pwmout_allow_powerdown(void);
35-
3626
/**
37-
* Enter Idle mode.
27+
* Enter idle mode, in which just CPU is halted.
3828
*/
3929
void hal_sleep(void)
4030
{
41-
struct sleep_s sleep_obj;
42-
sleep_obj.powerdown = 0;
43-
mbed_enter_sleep(&sleep_obj);
44-
mbed_exit_sleep(&sleep_obj);
31+
SYS_UnlockReg();
32+
CLK_Idle();
33+
SYS_LockReg();
4534
}
4635

4736
/**
48-
* Enter Power-down mode while no peripheral is active; otherwise, enter Idle mode.
37+
* Enter power-down mode, in which HXT/HIRC are halted.
4938
*/
5039
void hal_deepsleep(void)
5140
{
52-
struct sleep_s sleep_obj;
53-
sleep_obj.powerdown = 1;
54-
mbed_enter_sleep(&sleep_obj);
55-
mbed_exit_sleep(&sleep_obj);
56-
}
57-
58-
static void mbed_enter_sleep(struct sleep_s *obj)
59-
{
60-
// Check if serial allows entering power-down mode
61-
if (obj->powerdown) {
62-
obj->powerdown = serial_allow_powerdown();
63-
}
64-
// Check if spi allows entering power-down mode
65-
if (obj->powerdown) {
66-
obj->powerdown = spi_allow_powerdown();
67-
}
68-
// Check if i2c allows entering power-down mode
69-
if (obj->powerdown) {
70-
obj->powerdown = i2c_allow_powerdown();
71-
}
72-
// Check if pwmout allows entering power-down mode
73-
if (obj->powerdown) {
74-
obj->powerdown = pwmout_allow_powerdown();
75-
}
76-
// TODO: Check if other peripherals allow entering power-down mode
77-
78-
if (obj->powerdown) { // Power-down mode (HIRC/HXT disabled, LIRC/LXT enabled)
79-
SYS_UnlockReg();
80-
CLK_PowerDown();
81-
SYS_LockReg();
82-
} else { // CPU halt mode (HIRC/HXT enabled, LIRC/LXT enabled)
83-
SYS_UnlockReg();
84-
CLK_Idle();
85-
SYS_LockReg();
86-
}
87-
__NOP();
88-
__NOP();
89-
__NOP();
90-
__NOP();
91-
}
92-
93-
static void mbed_exit_sleep(struct sleep_s *obj)
94-
{
95-
(void)obj;
41+
SYS_UnlockReg();
42+
CLK_PowerDown();
43+
SYS_LockReg();
9644
}
9745

9846
#endif

0 commit comments

Comments
 (0)