diff options
author | Diana Z <dzigterman@chromium.org> | 2022-06-03 17:10:14 -0600 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2022-06-07 16:30:08 +0000 |
commit | 272c231f80898edb92405f001c55646984d5ffc4 (patch) | |
tree | caee504e248d8e00318fa001f8261496e2c2e970 | |
parent | f82d96d6a690aaaf7222a6200c02fdc34614ca7f (diff) | |
download | chrome-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.c | 57 |
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, }; |