summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--board/ampton/board.c16
-rw-r--r--driver/tcpm/ps8xxx.h1
2 files changed, 17 insertions, 0 deletions
diff --git a/board/ampton/board.c b/board/ampton/board.c
index d2746ca980..08cb017489 100644
--- a/board/ampton/board.c
+++ b/board/ampton/board.c
@@ -66,6 +66,8 @@ int ppc_get_alert_status(int port)
#define USB_PD_PORT_ITE_0 0
#define USB_PD_PORT_ITE_1 1
+static int tune_mux(int port);
+
struct usb_mux ampton_usb_muxes[CONFIG_USB_PD_PORT_COUNT] = {
[USB_PD_PORT_ITE_0] = {
/* Use PS8751 as mux only */
@@ -74,6 +76,7 @@ struct usb_mux ampton_usb_muxes[CONFIG_USB_PD_PORT_COUNT] = {
.flags = USB_MUX_FLAG_NOT_TCPC,
.driver = &ps8xxx_usb_mux_driver,
.hpd_update = &ps8xxx_tcpc_update_hpd_status,
+ .board_init = &tune_mux,
},
[USB_PD_PORT_ITE_1] = {
/* Use PS8751 as mux only */
@@ -82,9 +85,22 @@ struct usb_mux ampton_usb_muxes[CONFIG_USB_PD_PORT_COUNT] = {
.flags = USB_MUX_FLAG_NOT_TCPC,
.driver = &ps8xxx_usb_mux_driver,
.hpd_update = &ps8xxx_tcpc_update_hpd_status,
+ .board_init = &tune_mux,
}
};
+/* Some external monitors can't display content normally (eg. ViewSonic VX2880).
+ * We need to turn the mux for monitors to function normally.
+ */
+static int tune_mux(int port)
+{
+ /* Auto EQ disabled, compensate for channel lost up to 3.6dB */
+ mux_write(port, PS8XXX_REG_MUX_DP_EQ_CONFIGURATION, 0x98);
+ /* DP output swing adjustment +15% */
+ mux_write(port, PS8XXX_REG_MUX_DP_OUTPUT_CONFIGURATION, 0xc0);
+
+ return EC_SUCCESS;
+}
/******************************************************************************/
/* ADC channels */
const struct adc_t adc_channels[] = {
diff --git a/driver/tcpm/ps8xxx.h b/driver/tcpm/ps8xxx.h
index 6b94b56094..f69bb3e11a 100644
--- a/driver/tcpm/ps8xxx.h
+++ b/driver/tcpm/ps8xxx.h
@@ -46,6 +46,7 @@
#define IN_HPD BIT(0)
#define HPD_IRQ BIT(1)
#define PS8XXX_REG_MUX_DP_EQ_CONFIGURATION 0xD3
+#define PS8XXX_REG_MUX_DP_OUTPUT_CONFIGURATION 0xD4
#define PS8XXX_REG_MUX_USB_C2SS_EQ 0xE7
#define PS8XXX_REG_MUX_USB_C2SS_HS_THRESHOLD 0xE8