File tree Expand file tree Collapse file tree 4 files changed +24
-34
lines changed Expand file tree Collapse file tree 4 files changed +24
-34
lines changed Original file line number Diff line number Diff line change 12
12
#include <zephyr/dt-bindings/pwm/pwm.h>
13
13
#include <mem.h>
14
14
#include <zephyr/dt-bindings/i2c/i2c.h>
15
+ #include <freq.h>
15
16
16
17
/ {
17
18
cpus {
21
22
cpu0: cpu@0 {
22
23
compatible = "arm,cortex-m33f";
23
24
reg = <0>;
24
- cpu-power-states = <&idle &suspend_to_ram >;
25
+ cpu-power-states = <&idle>;
25
26
};
26
27
27
28
power-states {
31
32
min-residency-us = <100000000>;
32
33
};
33
34
34
- suspend_to_ram: suspend_to_ram {
35
- compatible = "zephyr,power-state";
36
- power-state-name = "suspend-to-ram";
37
- min-residency-us = <250000000>;
38
- };
39
35
};
40
36
};
41
37
Original file line number Diff line number Diff line change 11
11
#include <reg/reg_system.h>
12
12
#include "device_power.h"
13
13
14
- #define RTS5912_SCCON_REG_BASE ((SYSTEM_Type *)(DT_REG_ADDR(DT_NODELABEL(sccon))))
15
-
16
14
static void realtek_WFI (void )
17
15
{
18
16
__DSB ();
19
17
__WFI ();
20
18
}
21
19
22
- static void rts5912_light_sleep (void )
23
- {
24
- SYSTEM_Type * sys_reg = RTS5912_SCCON_REG_BASE ;
25
-
26
- before_rts5912_sleep ();
27
-
28
- sys_reg -> SLPCTRL &= ~SYSTEM_SLPCTRL_SLPMDSEL_Msk ;
29
-
30
- realtek_WFI ();
31
-
32
- after_rts5912_sleep ();
33
- }
34
-
35
20
static void rts5912_heavy_sleep (void )
36
21
{
37
22
SYSTEM_Type * sys_reg = RTS5912_SCCON_REG_BASE ;
@@ -50,7 +35,7 @@ static void rts5912_heavy_sleep(void)
50
35
sys_reg -> SYSCLK |= SYSTEM_SYSCLK_SRC_Msk ; /* Switch system clock to PLL */
51
36
}
52
37
53
- sys_reg -> SLPCTRL |= SYSTEM_SLPCTRL_SLPMDSEL_Msk ; /* Heavy Sleep mode */
38
+ sys_reg -> SLPCTRL |= ( SYSTEM_SLPCTRL_SLPMDSEL_Msk | SYSTEM_SLPCTRL_GPIOWKEN_Msk );
54
39
55
40
realtek_WFI ();
56
41
@@ -69,9 +54,6 @@ void pm_state_set(enum pm_state state, uint8_t substate_id)
69
54
70
55
switch (state ) {
71
56
case PM_STATE_SUSPEND_TO_IDLE :
72
- rts5912_light_sleep ();
73
- break ;
74
- case PM_STATE_SUSPEND_TO_RAM :
75
57
rts5912_heavy_sleep ();
76
58
break ;
77
59
default :
@@ -83,6 +65,4 @@ void pm_state_exit_post_ops(enum pm_state state, uint8_t substate_id)
83
65
{
84
66
ARG_UNUSED (state );
85
67
ARG_UNUSED (substate_id );
86
-
87
- irq_unlock (0 );
88
68
}
Original file line number Diff line number Diff line change @@ -334,4 +334,10 @@ typedef struct {
334
334
335
335
#define RTS5912_SCCON_REG_BASE ((SYSTEM_Type *)(DT_REG_ADDR(DT_NODELABEL(sccon))))
336
336
337
+ #define RTS5912_PUF_ADDRESS 0x40010800UL
338
+ #define RTS5912_TRNG_OFFSET 0x600UL
339
+ #define RTS5912_OTP_OFFSET 0x680UL
340
+ #define RTS5912_CFG_PDSTB (RTS5912_PUF_ADDRESS + RTS5912_OTP_OFFSET + 0x0024UL)
341
+ #define RTS5912_RNG_RUN (RTS5912_PUF_ADDRESS + RTS5912_TRNG_OFFSET + 0x0020UL)
342
+
337
343
#endif /* ZEPHYR_SOC_REALTEK_RTS5912_REG_SYSTEM_H */
Original file line number Diff line number Diff line change 8
8
#include <zephyr/kernel.h>
9
9
#include <zephyr/device.h>
10
10
#include <zephyr/init.h>
11
+ #include <zephyr/pm/policy.h>
11
12
#include <zephyr/logging/log.h>
12
13
#include "debug_swj.h"
14
+ #include <reg/reg_system.h>
13
15
14
16
LOG_MODULE_REGISTER (soc , CONFIG_SOC_LOG_LEVEL );
15
17
@@ -28,15 +30,21 @@ bool z_arm_on_enter_cpu_idle(void)
28
30
*/
29
31
void soc_early_init_hook (void )
30
32
{
31
- if (!IS_ENABLED (CONFIG_RTS5912_DEBUG_SWJ )) {
32
- return ;
33
- }
34
-
33
+ SYSTEM_Type * sys_reg = RTS5912_SCCON_REG_BASE ;
35
34
int ret ;
36
35
37
36
/* Apply device related preinit configuration */
38
- ret = swj_connector_init ();
39
- if (ret < 0 ) {
40
- LOG_ERR ("SWJ init failed" );
37
+ if (IS_ENABLED (CONFIG_RTS5912_DEBUG_SWJ )) {
38
+ ret = swj_connector_init ();
39
+ if (ret < 0 ) {
40
+ LOG_ERR ("SWJ init failed %d" , ret );
41
+ }
42
+ }
43
+
44
+ if (IS_ENABLED (CONFIG_PM )) {
45
+ /* turn off TRNG/ OTP/ LDO3 power */
46
+ sys_write32 (0ul , RTS5912_RNG_RUN );
47
+ sys_write32 (0ul , RTS5912_CFG_PDSTB );
48
+ sys_reg -> LDOCTRL &= ~SYSTEM_LDOCTRL_LDO3EN_Msk ;
41
49
}
42
50
}
You can’t perform that action at this time.
0 commit comments