summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiana Z <dzigterman@chromium.org>2022-06-03 17:10:14 -0600
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-06-07 16:30:08 +0000
commit272c231f80898edb92405f001c55646984d5ffc4 (patch)
treecaee504e248d8e00318fa001f8261496e2c2e970
parentf82d96d6a690aaaf7222a6200c02fdc34614ca7f (diff)
downloadchrome-ec-272c231f80898edb92405f001c55646984d5ffc4.tar.gz
Skyrim: Adjust tuning for C1
C1 requires a different setting for the equalization register. BRANCH=None BUG=b:230694492 TEST=on skyrim, plug peripherals into C1 and ensure the correct registers are observed Signed-off-by: Diana Z <dzigterman@chromium.org> Change-Id: I0ebfef466ad141cdf511b031ecd3ff9a6e88bf9d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3689784 Reviewed-by: Robert Zieba <robertzieba@google.com>
-rw-r--r--zephyr/projects/skyrim/usbc_config.c57
1 files changed, 54 insertions, 3 deletions
diff --git a/zephyr/projects/skyrim/usbc_config.c b/zephyr/projects/skyrim/usbc_config.c
index 7e3b6ba486..271a2efc6b 100644
--- a/zephyr/projects/skyrim/usbc_config.c
+++ b/zephyr/projects/skyrim/usbc_config.c
@@ -110,18 +110,69 @@ struct usb_mux usbc1_sbu_mux = {
.driver = &ioex_sbu_mux_driver,
};
-int baseboard_anx7483_mux_set(const struct usb_mux *me,
+int baseboard_anx7483_c0_mux_set(const struct usb_mux *me,
mux_state_t mux_state)
{
return anx7483_set_default_tuning(me, mux_state);
}
+int baseboard_anx7483_c1_mux_set(const struct usb_mux *me,
+ mux_state_t mux_state)
+{
+ bool flipped = mux_state & USB_PD_MUX_POLARITY_INVERTED;
+
+ /* Remove flipped from the state for easier compraisons */
+ mux_state = mux_state & ~USB_PD_MUX_POLARITY_INVERTED;
+
+ RETURN_ERROR(anx7483_set_default_tuning(me, mux_state));
+
+ 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_12_5DB));
+ 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_12_5DB));
+ RETURN_ERROR(anx7483_set_eq(me, ANX7483_PIN_UTX2,
+ ANX7483_EQ_SETTING_12_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_12_5DB));
+ 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_12_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_12_5DB));
+ RETURN_ERROR(anx7483_set_eq(me, ANX7483_PIN_UTX1,
+ ANX7483_EQ_SETTING_12_5DB));
+ RETURN_ERROR(anx7483_set_eq(me, ANX7483_PIN_DRX2,
+ ANX7483_EQ_SETTING_12_5DB));
+ }
+
+ return EC_SUCCESS;
+}
+
struct usb_mux usbc0_anx7483 = {
.usb_port = USBC_PORT_C0,
.i2c_port = I2C_PORT_TCPC0,
.i2c_addr_flags = ANX7483_I2C_ADDR0_FLAGS,
.driver = &anx7483_usb_retimer_driver,
- .board_set = &baseboard_anx7483_mux_set,
+ .board_set = &baseboard_anx7483_c0_mux_set,
.next_mux = &usbc0_sbu_mux,
};
@@ -146,7 +197,7 @@ struct usb_mux usbc1_anx7483 = {
.i2c_port = I2C_PORT_TCPC1,
.i2c_addr_flags = ANX7483_I2C_ADDR0_FLAGS,
.driver = &anx7483_usb_retimer_driver,
- .board_set = &baseboard_anx7483_mux_set,
+ .board_set = &baseboard_anx7483_c1_mux_set,
.next_mux = &usbc1_sbu_mux,
};