diff options
-rw-r--r-- | zephyr/program/skyrim/frostflow/src/usb_mux_config.c | 4 | ||||
-rw-r--r-- | zephyr/program/skyrim/src/power_signals.c | 12 | ||||
-rw-r--r-- | zephyr/test/skyrim/tests/baseboard/src/power_signals.c | 18 |
3 files changed, 27 insertions, 7 deletions
diff --git a/zephyr/program/skyrim/frostflow/src/usb_mux_config.c b/zephyr/program/skyrim/frostflow/src/usb_mux_config.c index a46668b65c..c7c03bc8cb 100644 --- a/zephyr/program/skyrim/frostflow/src/usb_mux_config.c +++ b/zephyr/program/skyrim/frostflow/src/usb_mux_config.c @@ -183,7 +183,7 @@ test_export_static void board_resume_change(struct ap_power_ev_callback *cb, default: return; - case AP_POWER_RESUME: + case AP_POWER_STARTUP: /* Any retimer tuning can be done after the retimer turns on */ hook_call_deferred(&baseboard_a1_retimer_setup_data, 20 * MSEC); break; @@ -195,7 +195,7 @@ void board_callback_init(void) static struct ap_power_ev_callback cb; /* Setup a resume callback */ - ap_power_ev_init_callback(&cb, board_resume_change, AP_POWER_RESUME); + ap_power_ev_init_callback(&cb, board_resume_change, AP_POWER_STARTUP); ap_power_ev_add_callback(&cb); } DECLARE_HOOK(HOOK_INIT, board_callback_init, HOOK_PRIO_DEFAULT); diff --git a/zephyr/program/skyrim/src/power_signals.c b/zephyr/program/skyrim/src/power_signals.c index 5814359606..ede5d1ec75 100644 --- a/zephyr/program/skyrim/src/power_signals.c +++ b/zephyr/program/skyrim/src/power_signals.c @@ -65,9 +65,13 @@ baseboard_suspend_change(struct ap_power_ev_callback *cb, return; case AP_POWER_SUSPEND: - /* Disable display backlight and retimer */ + /* Disable display backlight */ gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_ec_disable_disp_bl), 1); + break; + + case AP_POWER_SHUTDOWN: + /* Retimer disable */ ioex_set_level(IOEX_USB_A1_RETIMER_EN, 0); break; @@ -75,6 +79,9 @@ baseboard_suspend_change(struct ap_power_ev_callback *cb, /* Enable retimer and display backlight */ gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_ec_disable_disp_bl), 0); + break; + + case AP_POWER_STARTUP: ioex_set_level(IOEX_USB_A1_RETIMER_EN, 1); /* Any retimer tuning can be done after the retimer turns on */ break; @@ -106,7 +113,8 @@ test_export_static void baseboard_init(void) /* Setup a suspend/resume callback */ ap_power_ev_init_callback(&cb, baseboard_suspend_change, - AP_POWER_RESUME | AP_POWER_SUSPEND); + AP_POWER_STARTUP | AP_POWER_SHUTDOWN | + AP_POWER_RESUME | AP_POWER_SUSPEND); ap_power_ev_add_callback(&cb); /* Enable Power Group interrupts. */ gpio_enable_dt_interrupt(GPIO_INT_FROM_NODELABEL(int_pg_groupc_s0)); diff --git a/zephyr/test/skyrim/tests/baseboard/src/power_signals.c b/zephyr/test/skyrim/tests/baseboard/src/power_signals.c index c4bfba04a7..82e42acaa1 100644 --- a/zephyr/test/skyrim/tests/baseboard/src/power_signals.c +++ b/zephyr/test/skyrim/tests/baseboard/src/power_signals.c @@ -87,19 +87,31 @@ ZTEST(power_signals, test_baseboard_suspend_change) { const struct gpio_dt_spec *gpio_ec_disable_disp_bl = GPIO_DT_FROM_NODELABEL(gpio_ec_disable_disp_bl); - const struct gpio_dt_spec *usb_a1_retimer_en = - GPIO_DT_FROM_NODELABEL(usb_a1_retimer_en); struct ap_power_ev_data data; data.event = AP_POWER_SUSPEND; baseboard_suspend_change(NULL, data); zassert_true(gpio_emul_output_get_dt(gpio_ec_disable_disp_bl)); - zassert_false(gpio_emul_output_get_dt(usb_a1_retimer_en)); data.event = AP_POWER_RESUME; baseboard_suspend_change(NULL, data); zassert_false(gpio_emul_output_get_dt(gpio_ec_disable_disp_bl)); +} + +ZTEST(power_signals, test_baseboard_shutdown_change) +{ + const struct gpio_dt_spec *usb_a1_retimer_en = + GPIO_DT_FROM_NODELABEL(usb_a1_retimer_en); + + struct ap_power_ev_data data; + + data.event = AP_POWER_SHUTDOWN; + baseboard_suspend_change(NULL, data); + zassert_false(gpio_emul_output_get_dt(usb_a1_retimer_en)); + + data.event = AP_POWER_STARTUP; + baseboard_suspend_change(NULL, data); zassert_true(gpio_emul_output_get_dt(usb_a1_retimer_en)); } |