File tree Expand file tree Collapse file tree 3 files changed +17
-4
lines changed
Expand file tree Collapse file tree 3 files changed +17
-4
lines changed Original file line number Diff line number Diff line change @@ -751,6 +751,7 @@ void cancel_board_power_off(void);
751751
752752/* power sequence */
753753int board_chipset_power_on (void );
754+ void update_prevent_power_on_flag (int status );
754755
755756int board_get_version (void );
756757
Original file line number Diff line number Diff line change @@ -170,6 +170,7 @@ static void set_pwrbtn_to_pch(int high, int init)
170170 if (chipset_in_state (CHIPSET_STATE_ANY_OFF ) && !high &&
171171 (charge_want_shutdown () || charge_prevent_power_on (!init ))) {
172172 CPRINTS ("PB PCH pwrbtn ignored due to battery level" );
173+ update_prevent_power_on_flag (1 );
173174 high = 1 ;
174175 }
175176#endif
@@ -311,8 +312,6 @@ static void state_machine(uint64_t tnow)
311312 pwrbtn_state = PWRBTN_STATE_WAS_OFF ;
312313 msleep (20 );
313314 set_pwrbtn_to_pch (0 , 0 );
314- power_button_enable_led (1 );
315-
316315 } else {
317316 /*
318317 * when in preOS still need send power button signal
@@ -401,7 +400,6 @@ static void state_machine(uint64_t tnow)
401400 }
402401 msleep (20 );
403402 set_pwrbtn_to_pch (0 , 1 );
404- power_button_enable_led (1 );
405403 }
406404
407405 tnext_state = get_time ().val + PWRBTN_INITIAL_US ;
Original file line number Diff line number Diff line change @@ -186,6 +186,12 @@ void chipset_throttle_cpu(int throttle)
186186 gpio_set_level (GPIO_EC_PROCHOT_L , !throttle );
187187}
188188
189+ static int system_prevent_power_on_flag ;
190+ void update_prevent_power_on_flag (int status )
191+ {
192+ system_prevent_power_on_flag = status ;
193+ }
194+
189195int board_chipset_power_on (void )
190196{
191197 /*gpio_set_level(GPIO_VS_ON, 1); Todo fix vson noboot*/
@@ -240,7 +246,14 @@ int board_chipset_power_on(void)
240246 }
241247
242248 msleep (50 );
243- return true;
249+
250+ /**
251+ * if EC doesn't assert the power button signal vai prevent power on,
252+ * the power state should return to G3 state
253+ */
254+ CPRINTS ("Power on flag: %d" , system_prevent_power_on_flag );
255+ power_button_enable_led (!system_prevent_power_on_flag );
256+ return !system_prevent_power_on_flag ;
244257}
245258
246259enum power_state power_chipset_init (void )
@@ -505,6 +518,7 @@ enum power_state power_handle_state(enum power_state state)
505518
506519 return POWER_S5 ;
507520 } else {
521+ system_prevent_power_on_flag = 0 ;
508522 return POWER_G3 ;
509523 }
510524 break ;
You can’t perform that action at this time.
0 commit comments