Skip to content

Commit 6a98a11

Browse files
elmo9999kartben
authored andcommitted
soc : realtek: ec: rts5912: fix waiting time not enough
For the ULPM set, it asks for a 10ms ready time for the module. Use k_busy_wait instead of k_msleep to ensure we wait enough clock cycles. Signed-off-by: Elmo Lan <[email protected]>
1 parent 7c7dae4 commit 6a98a11

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

soc/realtek/ec/rts5912/rts5912_ulpm.c

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ BUILD_ASSERT(DT_NUM_INST_STATUS_OKAY(DT_DRV_COMPAT) <= 1, "Unsupported number of
2424

2525
#define ULPM_RTS5912_MAX_NB_WKUP_PINS DT_INST_PROP(0, wkup_pins_max)
2626

27+
#define RTS5912_ULPM_WAIT_READY (10 * USEC_PER_MSEC)
28+
2729
/** @cond INTERNAL_HIDDEN */
2830

2931
/**
@@ -89,13 +91,13 @@ void ulpm_start(void)
8991
SYSTEM_Type *sys_reg = RTS5912_SCCON_REG_BASE;
9092
/* enable VOUT */
9193
sys_reg->VIVOCTRL &= ~(SYSTEM_VIVOCTRL_VOUTMD_Msk);
92-
k_msleep(10);
94+
k_busy_wait(RTS5912_ULPM_WAIT_READY);
9395
/* Set the VOUT to low */
9496
sys_reg->VIVOCTRL &= ~(SYSTEM_VIVOCTRL_VODEF_Msk);
95-
k_msleep(10);
97+
k_busy_wait(RTS5912_ULPM_WAIT_READY);
9698
/* update to ULPM */
9799
sys_reg->VIVOCTRL |= SYSTEM_VIVOCTRL_REGWREN_Msk;
98-
k_msleep(10);
100+
k_busy_wait(RTS5912_ULPM_WAIT_READY);
99101
}
100102
/**
101103
* @brief Update register value to ULPM IP
@@ -104,11 +106,11 @@ void update_vivo_register(void)
104106
{
105107
SYSTEM_Type *sys_reg = RTS5912_SCCON_REG_BASE;
106108
/* Update Register & reset bit */
107-
k_msleep(10);
109+
k_busy_wait(RTS5912_ULPM_WAIT_READY);
108110
sys_reg->VIVOCTRL |= SYSTEM_VIVOCTRL_REGWREN_Msk;
109-
k_msleep(10);
111+
k_busy_wait(RTS5912_ULPM_WAIT_READY);
110112
sys_reg->VIVOCTRL &= ~(SYSTEM_VIVOCTRL_REGWREN_Msk);
111-
k_msleep(10);
113+
k_busy_wait(RTS5912_ULPM_WAIT_READY);
112114
}
113115

114116
/**
@@ -125,7 +127,7 @@ void rts5912_ulpm_enable(void)
125127
LOG_INF("rts5912 ULPM enabled\n");
126128
/* VoutEnable, Keep VOUT output default value as bit 16 */
127129
sys_reg->VIVOCTRL |= SYSTEM_VIVOCTRL_VODEF_Msk;
128-
k_msleep(10);
130+
k_busy_wait(RTS5912_ULPM_WAIT_READY);
129131

130132
/* set to GPIO mode to clear status and aviod mis-trigger */
131133
sys_reg->VIVOCTRL |= (SYSTEM_VIVOCTRL_VIN0MD_Msk | SYSTEM_VIVOCTRL_VIN1MD_Msk |

0 commit comments

Comments
 (0)