Skip to content

Commit 2d45c86

Browse files
Josh-Tsaiamstan
authored andcommitted
fwk: dogwood: calls the function to clear the S0ix flag
Use a function to clear the S0ix flag before the system happens the abnormal shutdown. BRANCH=fwk-dogwood BUG=Hard to read the code. TEST=No logic change. Signed-off-by: Josh Tsai <Josh_Tsai@compal.com>
1 parent ad0db6a commit 2d45c86

File tree

1 file changed

+15
-23
lines changed

1 file changed

+15
-23
lines changed

zephyr/program/framework/dogwood/src/power_sequence.c

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,13 @@ static int check_s0ix_statsus(void)
301301
return 0;
302302
}
303303

304+
static void power_clear_s0ix_flag(void)
305+
{
306+
resume_ms_flag = 0;
307+
enter_ms_flag = 0;
308+
system_in_s0ix = 0;
309+
}
310+
304311
void s0ix_status_handle(void)
305312
{
306313
int s0ix_state_change;
@@ -613,11 +620,8 @@ enum power_state power_handle_state(enum power_state state)
613620
* If abnormal/force shutdown happens in s0i3 state, EC needs to
614621
* clear the flags run the shutdown sequence.
615622
*/
616-
if (system_in_s0ix) {
617-
resume_ms_flag = 0;
618-
enter_ms_flag = 0;
619-
system_in_s0ix = 0;
620-
}
623+
if (system_in_s0ix)
624+
power_clear_s0ix_flag();
621625

622626
/* Power down to next state */
623627
return POWER_S3S5;
@@ -632,9 +636,7 @@ enum power_state power_handle_state(enum power_state state)
632636
/* clear the enter 5VSB timer if over upper current */
633637
hook_call_deferred(&power_5vsb_enter_deferred_data, -1);
634638
if (!has_exited_5vsb && !power_5vsb_exit()) {
635-
resume_ms_flag = 0;
636-
enter_ms_flag = 0;
637-
system_in_s0ix = 0;
639+
power_clear_s0ix_flag();
638640
chipset_force_shutdown(CHIPSET_SHUTDOWN_POWERFAIL);
639641
return POWER_S3S5;
640642
}
@@ -725,9 +727,7 @@ enum power_state power_handle_state(enum power_state state)
725727
* clear the all s0ix flags
726728
*/
727729
if (resume_ms_flag > 0) {
728-
resume_ms_flag = 0;
729-
enter_ms_flag = 0;
730-
system_in_s0ix = 0;
730+
power_clear_s0ix_flag();
731731
return POWER_S0ixS0;
732732
}
733733

@@ -761,9 +761,7 @@ enum power_state power_handle_state(enum power_state state)
761761
* Therefore, EC should clear the flags and return power state to
762762
* S0 to run the shutdown sequence.
763763
*/
764-
resume_ms_flag = 0;
765-
enter_ms_flag = 0;
766-
system_in_s0ix = 0;
764+
power_clear_s0ix_flag();
767765
chipset_force_shutdown(CHIPSET_SHUTDOWN_POWERFAIL);
768766
return POWER_S0;
769767
}
@@ -783,9 +781,7 @@ enum power_state power_handle_state(enum power_state state)
783781
/* clear the enter 5VSB timer if resume to s0ix */
784782
hook_call_deferred(&power_5vsb_enter_deferred_data, -1);
785783
if (!has_exited_5vsb && !power_5vsb_exit()) {
786-
resume_ms_flag = 0;
787-
enter_ms_flag = 0;
788-
system_in_s0ix = 0;
784+
power_clear_s0ix_flag();
789785
chipset_force_shutdown(CHIPSET_SHUTDOWN_POWERFAIL);
790786
/**
791787
* If happens something wrong, transfer the state to POWER_S0ixS3.
@@ -800,9 +796,7 @@ enum power_state power_handle_state(enum power_state state)
800796

801797
/* wait VS power good. If something wrong, turn off power and force to g3 */
802798
if (power_wait_signals(IN_VS_POWER)) {
803-
resume_ms_flag = 0;
804-
enter_ms_flag = 0;
805-
system_in_s0ix = 0;
799+
power_clear_s0ix_flag();
806800
chipset_force_shutdown(CHIPSET_SHUTDOWN_POWERFAIL);
807801
/**
808802
* If happens something wrong, transfer the state to POWER_S0ixS3.
@@ -816,9 +810,7 @@ enum power_state power_handle_state(enum power_state state)
816810

817811
/* wait VR power good. If something wrong, turn off power and force to g3 */
818812
if (power_wait_signals(IN_VR_PGOOD)) {
819-
resume_ms_flag = 0;
820-
enter_ms_flag = 0;
821-
system_in_s0ix = 0;
813+
power_clear_s0ix_flag();
822814
chipset_force_shutdown(CHIPSET_SHUTDOWN_POWERFAIL);
823815
/**
824816
* If happens something wrong, transfer the state to POWER_S0ixS3.

0 commit comments

Comments
 (0)