summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Wang <matt_wang@compal.corp-partner.google.com>2022-11-08 10:14:48 +0800
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-11-10 02:44:21 +0000
commit8858f7d24a5023a1408d6194a6eec26b18d5c34a (patch)
tree4113c059b6701224c18047cfa1caa52fbea5b285
parent9d1b3e82cb2af8201ccadec3b63fb279a85edff7 (diff)
downloadchrome-ec-8858f7d24a5023a1408d6194a6eec26b18d5c34a.tar.gz
winterhold: Adjust tuning for C1
C1 requires a different setting for the equalization and flat gain register. BUG=b:254616597 BRANCH=none TEST=zmake build winterhold successfully LOW_COVERAGE_REASON=no unit test for skyrim board yet: b/247151116 Signed-off-by: Matt Wang <matt_wang@compal.corp-partner.google.com> Change-Id: Ibd0e8cdf769ff0f6404cc297b616221f14f8e445 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4011741 Reviewed-by: Diana Z <dzigterman@chromium.org> Code-Coverage: Zoss <zoss-cl-coverage@prod.google.com> Reviewed-by: Elthan Huang <elthan_huang@compal.corp-partner.google.com>
-rw-r--r--zephyr/program/skyrim/src/winterhold/usb_mux_config.c83
1 files changed, 61 insertions, 22 deletions
diff --git a/zephyr/program/skyrim/src/winterhold/usb_mux_config.c b/zephyr/program/skyrim/src/winterhold/usb_mux_config.c
index fdcf37e6b0..1eff945ed7 100644
--- a/zephyr/program/skyrim/src/winterhold/usb_mux_config.c
+++ b/zephyr/program/skyrim/src/winterhold/usb_mux_config.c
@@ -56,6 +56,20 @@ int board_anx7483_c0_mux_set(const struct usb_mux *me, mux_state_t mux_state)
return anx7483_set_default_tuning(me, mux_state);
}
+int board_anx7483_c1_fg_defalut_tuning(const struct usb_mux *me)
+{
+ RETURN_ERROR(
+ anx7483_set_fg(me, ANX7483_PIN_URX1, ANX7483_FG_SETTING_1_2DB));
+ RETURN_ERROR(
+ anx7483_set_fg(me, ANX7483_PIN_URX2, ANX7483_FG_SETTING_1_2DB));
+ RETURN_ERROR(
+ anx7483_set_fg(me, ANX7483_PIN_UTX1, ANX7483_FG_SETTING_1_2DB));
+ RETURN_ERROR(
+ anx7483_set_fg(me, ANX7483_PIN_UTX2, ANX7483_FG_SETTING_1_2DB));
+
+ return EC_SUCCESS;
+}
+
int board_anx7483_c1_mux_set(const struct usb_mux *me, mux_state_t mux_state)
{
bool flipped = mux_state & USB_PD_MUX_POLARITY_INVERTED;
@@ -68,40 +82,65 @@ int board_anx7483_c1_mux_set(const struct usb_mux *me, mux_state_t mux_state)
RETURN_ERROR(anx7483_set_default_tuning(me, mux_state));
+ /*
+ * Set the Flat Gain to default every time, to prevent DP only mode's
+ * Flat Gain change in the last plug.
+ */
+ RETURN_ERROR(board_anx7483_c1_fg_defalut_tuning(me));
+
if (mux_state == USB_PD_MUX_USB_ENABLED) {
+ RETURN_ERROR(anx7483_set_eq(me, ANX7483_PIN_URX1,
+ ANX7483_EQ_SETTING_12_5DB));
+ RETURN_ERROR(anx7483_set_eq(me, ANX7483_PIN_URX2,
+ ANX7483_EQ_SETTING_12_5DB));
RETURN_ERROR(anx7483_set_eq(me, ANX7483_PIN_DRX1,
ANX7483_EQ_SETTING_12_5DB));
RETURN_ERROR(anx7483_set_eq(me, ANX7483_PIN_DRX2,
ANX7483_EQ_SETTING_12_5DB));
+ } else if (mux_state == USB_PD_MUX_DP_ENABLED) {
+ RETURN_ERROR(anx7483_set_eq(me, ANX7483_PIN_URX1,
+ ANX7483_EQ_SETTING_8_4DB));
+ RETURN_ERROR(anx7483_set_eq(me, ANX7483_PIN_URX2,
+ ANX7483_EQ_SETTING_8_4DB));
+ RETURN_ERROR(anx7483_set_eq(me, ANX7483_PIN_UTX1,
+ ANX7483_EQ_SETTING_8_4DB));
+ RETURN_ERROR(anx7483_set_eq(me, ANX7483_PIN_UTX2,
+ ANX7483_EQ_SETTING_8_4DB));
+ RETURN_ERROR(anx7483_set_fg(me, ANX7483_PIN_URX1,
+ ANX7483_FG_SETTING_0_5DB));
+ RETURN_ERROR(anx7483_set_fg(me, ANX7483_PIN_URX2,
+ ANX7483_FG_SETTING_0_5DB));
+ RETURN_ERROR(anx7483_set_fg(me, ANX7483_PIN_UTX1,
+ ANX7483_FG_SETTING_0_5DB));
+ RETURN_ERROR(anx7483_set_fg(me, ANX7483_PIN_UTX2,
+ ANX7483_FG_SETTING_0_5DB));
} else if (mux_state == USB_PD_MUX_DOCK && !flipped) {
+ RETURN_ERROR(anx7483_set_eq(me, ANX7483_PIN_URX1,
+ ANX7483_EQ_SETTING_12_5DB));
+ RETURN_ERROR(anx7483_set_eq(me, ANX7483_PIN_URX2,
+ ANX7483_EQ_SETTING_8_4DB));
RETURN_ERROR(anx7483_set_eq(me, ANX7483_PIN_DRX1,
ANX7483_EQ_SETTING_12_5DB));
+ RETURN_ERROR(anx7483_set_eq(me, ANX7483_PIN_UTX2,
+ ANX7483_EQ_SETTING_8_4DB));
+ RETURN_ERROR(anx7483_set_fg(me, ANX7483_PIN_URX2,
+ ANX7483_FG_SETTING_0_5DB));
+ RETURN_ERROR(anx7483_set_fg(me, ANX7483_PIN_UTX2,
+ ANX7483_FG_SETTING_0_5DB));
} else if (mux_state == USB_PD_MUX_DOCK && flipped) {
+ RETURN_ERROR(anx7483_set_eq(me, ANX7483_PIN_URX1,
+ ANX7483_EQ_SETTING_8_4DB));
+ RETURN_ERROR(anx7483_set_eq(me, ANX7483_PIN_URX2,
+ ANX7483_EQ_SETTING_12_5DB));
+ RETURN_ERROR(anx7483_set_eq(me, ANX7483_PIN_UTX1,
+ ANX7483_EQ_SETTING_8_4DB));
RETURN_ERROR(anx7483_set_eq(me, ANX7483_PIN_DRX2,
ANX7483_EQ_SETTING_12_5DB));
+ RETURN_ERROR(anx7483_set_fg(me, ANX7483_PIN_URX1,
+ ANX7483_FG_SETTING_0_5DB));
+ RETURN_ERROR(anx7483_set_fg(me, ANX7483_PIN_UTX1,
+ ANX7483_FG_SETTING_0_5DB));
}
- /*
- * Those registers all need to be set no matter what state the mux is
- * in it needs to be set.
- */
- RETURN_ERROR(
- anx7483_set_eq(me, ANX7483_PIN_URX1, ANX7483_EQ_SETTING_8_4DB));
- RETURN_ERROR(
- anx7483_set_eq(me, ANX7483_PIN_URX2, ANX7483_EQ_SETTING_8_4DB));
- RETURN_ERROR(
- anx7483_set_eq(me, ANX7483_PIN_UTX1, ANX7483_EQ_SETTING_8_4DB));
- RETURN_ERROR(
- anx7483_set_eq(me, ANX7483_PIN_UTX2, ANX7483_EQ_SETTING_8_4DB));
-
- RETURN_ERROR(
- anx7483_set_fg(me, ANX7483_PIN_URX1, ANX7483_FG_SETTING_0_5DB));
- RETURN_ERROR(
- anx7483_set_fg(me, ANX7483_PIN_URX2, ANX7483_FG_SETTING_0_5DB));
- RETURN_ERROR(
- anx7483_set_fg(me, ANX7483_PIN_UTX1, ANX7483_FG_SETTING_0_5DB));
- RETURN_ERROR(
- anx7483_set_fg(me, ANX7483_PIN_UTX2, ANX7483_FG_SETTING_0_5DB));
-
return EC_SUCCESS;
}