Skip to content

Commit b564a18

Browse files
authored
Merge pull request #496 from FrameworkComputer/hx30.cover_prevent_power_on
Modified the behavior when EC trigger the prevent power on
2 parents e34d230 + fe9a7f0 commit b564a18

File tree

3 files changed

+17
-4
lines changed

3 files changed

+17
-4
lines changed

board/hx30/board.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -751,6 +751,7 @@ void cancel_board_power_off(void);
751751

752752
/* power sequence */
753753
int board_chipset_power_on(void);
754+
void update_prevent_power_on_flag(int status);
754755

755756
int board_get_version(void);
756757

board/hx30/power_button_x86.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff 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;

board/hx30/power_sequence.c

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff 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+
189195
int 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

246259
enum 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;

0 commit comments

Comments
 (0)