summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiana Z <dzigterman@chromium.org>2023-04-19 14:33:16 -0600
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2023-05-11 03:37:56 +0000
commitcca96dc838386324b609c149313fe546378f84bc (patch)
tree33e50af41157453de592d36a4577dfcc1f0a5cf9
parentc02eb5491e487ca497c2793cf291fbaa14ae6ff6 (diff)
downloadchrome-ec-cca96dc838386324b609c149313fe546378f84bc.tar.gz
Frostflow: Always initialize retimer when enabled
The A1 retimer will be enabled anytime the board boots. Ensure that the tuning parameters are applied every time the retimer is enabled again since they clear when the retimer is disabled. BUG=b:273849234,b:280957965 TEST=on frostflow, run suspend stress test and verify retimer initialization always reports success talking to the chip, spot check tuning register contents Change-Id: I147e6e7ad09f3279a77fe3f0757cf6ed140b058c Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4450966 Reviewed-by: Chao Gui <chaogui@google.com> Tested-by: Diana Z <dzigterman@chromium.org> Commit-Queue: Diana Z <dzigterman@chromium.org> Reviewed-by: Robert Zieba <robertzieba@google.com> (cherry picked from commit 7834245c40904dafda75f5102b089aa201644171) Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4467252 Tested-by: SamSP Liu <samsp_liu2@compal.corp-partner.google.com> Reviewed-by: SamSP Liu <samsp_liu2@compal.corp-partner.google.com> Commit-Queue: Chao Gui <chaogui@google.com>
-rw-r--r--zephyr/program/skyrim/frostflow/src/usb_mux_config.c25
1 files changed, 22 insertions, 3 deletions
diff --git a/zephyr/program/skyrim/frostflow/src/usb_mux_config.c b/zephyr/program/skyrim/frostflow/src/usb_mux_config.c
index d018ff12f3..b3d8c61f2e 100644
--- a/zephyr/program/skyrim/frostflow/src/usb_mux_config.c
+++ b/zephyr/program/skyrim/frostflow/src/usb_mux_config.c
@@ -5,6 +5,7 @@
/* Frostflow board-specific USB-C mux configuration */
+#include "ap_power/ap_power.h"
#include "chipset.h"
#include "common.h"
#include "console.h"
@@ -181,8 +182,26 @@ void baseboard_a1_retimer_setup(void)
}
DECLARE_DEFERRED(baseboard_a1_retimer_setup);
-void board_chipset_startup(void)
+test_export_static void board_resume_change(struct ap_power_ev_callback *cb,
+ struct ap_power_ev_data data)
{
- hook_call_deferred(&baseboard_a1_retimer_setup_data, 500 * MSEC);
+ switch (data.event) {
+ default:
+ return;
+
+ case AP_POWER_RESUME:
+ /* Any retimer tuning can be done after the retimer turns on */
+ hook_call_deferred(&baseboard_a1_retimer_setup_data, 20 * MSEC);
+ break;
+ }
+}
+
+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_add_callback(&cb);
}
-DECLARE_HOOK(HOOK_INIT, board_chipset_startup, HOOK_PRIO_DEFAULT);
+DECLARE_HOOK(HOOK_INIT, board_callback_init, HOOK_PRIO_DEFAULT);