Skip to content

Commit a36844b

Browse files
authored
Merge pull request #695 from FrameworkComputer/azalea.power_sequence
azalea: modify power sequence
2 parents 9bc6e1b + 0976db6 commit a36844b

File tree

1 file changed

+9
-35
lines changed

1 file changed

+9
-35
lines changed

zephyr/program/lotus/azalea/src/power_sequence.c

Lines changed: 9 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727

2828
#define IN_VR_PGOOD POWER_SIGNAL_MASK(X86_VR_PG)
2929

30-
static int power_ready;
3130
static int power_s5_up; /* Chipset is sequencing up or down */
3231
static int ap_boot_delay = 9; /* For global reset to wait SLP_S5 signal de-asserts */
3332
static int s5_exit_tries; /* For global reset to wait SLP_S5 signal de-asserts */
@@ -122,31 +121,6 @@ static void clear_rtcwake(void)
122121
*host_get_memmap(EC_CUSTOMIZED_MEMMAP_WAKE_EVENT) &= ~BIT(0);
123122
}
124123

125-
static void board_power_on(void);
126-
DECLARE_DEFERRED(board_power_on);
127-
DECLARE_HOOK(HOOK_INIT, board_power_on, HOOK_PRIO_DEFAULT);
128-
129-
static void board_power_on(void)
130-
{
131-
static int logs_printed; /* Only prints the log one time */
132-
133-
/*
134-
* we need to wait the 3VALW power rail ready
135-
* then enable 0.75VALW and 1.8VALW power rail
136-
*/
137-
if (gpio_pin_get_dt(GPIO_DT_FROM_NODELABEL(gpio_spok)) == 1) {
138-
gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_0p75_1p8valw_pwren), 1);
139-
power_ready = 1;
140-
CPRINTS("0.75 and 1.8 VALW power rail ready");
141-
} else {
142-
if (!logs_printed) {
143-
CPRINTS("wait 3VALW power rail ready");
144-
logs_printed = 1;
145-
}
146-
hook_call_deferred(&board_power_on_data, 5 * MSEC);
147-
}
148-
}
149-
150124
void power_state_clear(int state)
151125
{
152126
*host_get_memmap(EC_CUSTOMIZED_MEMMAP_POWER_STATE) &= ~state;
@@ -213,15 +187,6 @@ void s0ix_status_handle(void)
213187
DECLARE_HOOK(HOOK_TICK, s0ix_status_handle, HOOK_PRIO_DEFAULT);
214188
#endif
215189

216-
int get_power_rail_status(void)
217-
{
218-
/*
219-
* If the 3VALW, 0.75VALW and 1.8VALW power rail not ready,
220-
* the unit should not power on.
221-
* This function will be used by PB task.
222-
*/
223-
return power_ready;
224-
}
225190

226191
void power_s5_up_control(int control)
227192
{
@@ -245,6 +210,7 @@ static void chipset_force_g3(void)
245210
gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_pbtn_out), 0);
246211
gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_apu_aud_pwr_en), 0);
247212
gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_pch_pwr_en), 0);
213+
gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_0p75_1p8valw_pwren), 0);
248214
}
249215

250216
void chipset_force_shutdown(enum chipset_shutdown_reason reason)
@@ -322,6 +288,13 @@ enum power_state power_handle_state(enum power_state state)
322288
break;
323289

324290
case POWER_G3S5:
291+
if (power_wait_signals(X86_3VALW_PG)) {
292+
/* something wrong, turn off power and force to g3 */
293+
chipset_force_g3();
294+
return POWER_G3;
295+
}
296+
gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_0p75_1p8valw_pwren), 1);
297+
k_msleep(10);
325298
gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_apu_aud_pwr_en), 1);
326299
k_msleep(10);
327300
gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_pch_pwr_en), 1);
@@ -567,6 +540,7 @@ enum power_state power_handle_state(enum power_state state)
567540
k_msleep(5);
568541
gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_apu_aud_pwr_en), 0);
569542
gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_pch_pwr_en), 0);
543+
gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_0p75_1p8valw_pwren), 0);
570544

571545
cypd_set_power_active(POWER_G3);
572546

0 commit comments

Comments
 (0)