Skip to content

Commit 7a3a97a

Browse files
authored
Merge pull request #721 from FrameworkComputer/fwk.modified_power_sequence
Used the system_in_s0ix flags to check the system status
2 parents 5bcd9d1 + 5855376 commit 7a3a97a

File tree

3 files changed

+45
-9
lines changed

3 files changed

+45
-9
lines changed

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

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ void power_state_clear(int state)
139139
*/
140140
static int enter_ms_flag;
141141
static int resume_ms_flag;
142+
static int system_in_s0ix;
142143

143144
static int check_s0ix_statsus(void)
144145
{
@@ -362,16 +363,17 @@ enum power_state power_handle_state(enum power_state state)
362363
if (gpio_pin_get_dt(GPIO_DT_FROM_NODELABEL(gpio_slp_s3_l)) == 1) {
363364

364365
/* still in s0ix state */
365-
if (enter_ms_flag)
366+
if (system_in_s0ix)
366367
return POWER_S3S0ix;
367368

368369
k_msleep(10);
369370
return POWER_S3S0;
370371
} else if (gpio_pin_get_dt(GPIO_DT_FROM_NODELABEL(gpio_slp_s5_l)) == 0) {
371372

372-
if (enter_ms_flag) {
373+
if (system_in_s0ix) {
373374
resume_ms_flag = 0;
374375
enter_ms_flag = 0;
376+
system_in_s0ix = 0;
375377
lpc_s0ix_resume_restore_masks();
376378
/* Call hooks now that rails are up */
377379
hook_notify(HOOK_CHIPSET_RESUME);
@@ -447,7 +449,9 @@ enum power_state power_handle_state(enum power_state state)
447449
* clear the resume ms flag
448450
*/
449451
if (resume_ms_flag > 0) {
450-
resume_ms_flag--;
452+
esume_ms_flag = 0;
453+
enter_ms_flag = 0;
454+
system_in_s0ix = 0;
451455
return POWER_S0ixS0;
452456
}
453457
return POWER_S0ixS3;
@@ -477,7 +481,7 @@ enum power_state power_handle_state(enum power_state state)
477481
case POWER_S0ixS0:
478482
CPRINTS("PH S0ixS0");
479483
resume_ms_flag = 0;
480-
enter_ms_flag = 0;
484+
system_in_s0ix = 0;
481485
lpc_s0ix_resume_restore_masks();
482486
hook_call_deferred(&key_stuck_wa_data, 50 * MSEC);
483487
/* Call hooks now that rails are up */
@@ -488,6 +492,8 @@ enum power_state power_handle_state(enum power_state state)
488492
break;
489493

490494
case POWER_S0S0ix:
495+
enter_ms_flag = 0;
496+
system_in_s0ix = 1;
491497
CPRINTS("PH S0->S0ix");
492498
lpc_s0ix_suspend_clear_masks();
493499
/* Call hooks before we remove power rails */

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

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ void power_state_clear(int state)
164164
*/
165165
static int enter_ms_flag;
166166
static int resume_ms_flag;
167+
static int system_in_s0ix;
167168

168169
static int check_s0ix_statsus(void)
169170
{
@@ -368,17 +369,18 @@ enum power_state power_handle_state(enum power_state state)
368369
if (gpio_pin_get_dt(GPIO_DT_FROM_NODELABEL(gpio_slp_s3_l)) == 1) {
369370

370371
/* still in s0ix state */
371-
if (enter_ms_flag)
372+
if (system_in_s0ix)
372373
return POWER_S3S0ix;
373374

374375
/* Power up to next state */
375376
k_msleep(10);
376377
return POWER_S3S0;
377378
} else if (gpio_pin_get_dt(GPIO_DT_FROM_NODELABEL(gpio_slp_s5_l)) == 0) {
378379

379-
if (enter_ms_flag) {
380+
if (system_in_s0ix) {
380381
resume_ms_flag = 0;
381382
enter_ms_flag = 0;
383+
system_in_s0ix = 0;
382384
lpc_s0ix_resume_restore_masks();
383385
/* Call hooks now that rails are up */
384386
hook_notify(HOOK_CHIPSET_RESUME);
@@ -454,12 +456,15 @@ enum power_state power_handle_state(enum power_state state)
454456
if (gpio_pin_get_dt(GPIO_DT_FROM_NODELABEL(gpio_slp_s3_l)) == 0) {
455457
/*
456458
* If power signal lose, we need to resume to S0 and
457-
* clear the resume ms flag
459+
* clear the all s0ix flags
458460
*/
459461
if (resume_ms_flag > 0) {
460-
resume_ms_flag--;
462+
resume_ms_flag = 0;
463+
enter_ms_flag = 0;
464+
system_in_s0ix = 0;
461465
return POWER_S0ixS0;
462466
}
467+
463468
return POWER_S0ixS3;
464469
}
465470

@@ -480,7 +485,7 @@ enum power_state power_handle_state(enum power_state state)
480485

481486
case POWER_S0ixS0:
482487
resume_ms_flag = 0;
483-
enter_ms_flag = 0;
488+
system_in_s0ix = 0;
484489
lpc_s0ix_resume_restore_masks();
485490
/* Call hooks now that rails are up */
486491
hook_notify(HOOK_CHIPSET_RESUME);
@@ -489,6 +494,8 @@ enum power_state power_handle_state(enum power_state state)
489494
break;
490495

491496
case POWER_S0S0ix:
497+
enter_ms_flag = 0;
498+
system_in_s0ix = 1;
492499
lpc_s0ix_suspend_clear_masks();
493500
/* Call hooks before we remove power rails */
494501
hook_notify(HOOK_CHIPSET_SUSPEND);

zephyr/program/lotus/src/board_host_command.c

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,3 +396,26 @@ static int cmd_bbram(int argc, const char **argv)
396396
DECLARE_CONSOLE_COMMAND(bbram, cmd_bbram,
397397
"[bbram address]",
398398
"get bbram data with hibdata_index");
399+
400+
static int cmd_memmap(int argc, const char **argv)
401+
{
402+
int data;
403+
int offset;
404+
char *e;
405+
406+
if (argc > 3) {
407+
offset = strtoi(argv[2], &e, 0);
408+
data = strtoi(argv[3], &e, 0);
409+
*host_get_memmap(offset) = data;
410+
CPRINTS("EC_MEMMAP offset:%d, set data:%d", offset, data);
411+
} else {
412+
offset = strtoi(argv[2], &e, 0);
413+
data = *host_get_memmap(offset);
414+
CPRINTS("EC_MEMMAP offset:%d, get data:%d", offset, data);
415+
}
416+
417+
return EC_SUCCESS;
418+
}
419+
DECLARE_CONSOLE_COMMAND(memmap, cmd_memmap,
420+
"[memmap get/set offset [value]]",
421+
"get/set memmap data");

0 commit comments

Comments
 (0)