summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--zephyr/program/skyrim/frostflow/src/usb_mux_config.c4
-rw-r--r--zephyr/program/skyrim/src/power_signals.c12
-rw-r--r--zephyr/test/skyrim/tests/baseboard/src/power_signals.c18
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));
}