summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/usbc/usb_retimer_fw_update.c15
-rw-r--r--include/ec_commands.h7
2 files changed, 17 insertions, 5 deletions
diff --git a/common/usbc/usb_retimer_fw_update.c b/common/usbc/usb_retimer_fw_update.c
index 2634081e2e..1ff198c78f 100644
--- a/common/usbc/usb_retimer_fw_update.c
+++ b/common/usbc/usb_retimer_fw_update.c
@@ -91,6 +91,11 @@ static void deferred_pd_suspend(void)
}
DECLARE_DEFERRED(deferred_pd_suspend);
+static inline mux_state_t retimer_fw_update_usb_mux_get(int port)
+{
+ return usb_mux_get(port) & USB_RETIMER_FW_UPDATE_MUX_MASK;
+}
+
void usb_retimer_fw_update_process_op_cb(int port)
{
switch (last_op) {
@@ -118,26 +123,26 @@ void usb_retimer_fw_update_process_op_cb(int port)
pd_set_suspend(port, RESUME);
break;
case USB_RETIMER_FW_UPDATE_GET_MUX:
- last_result = usb_mux_get(port);
+ last_result = retimer_fw_update_usb_mux_get(port);
break;
case USB_RETIMER_FW_UPDATE_SET_USB:
usb_mux_set(port, USB_PD_MUX_USB_ENABLED,
USB_SWITCH_CONNECT, pd_get_polarity(port));
- last_result = usb_mux_get(port);
+ last_result = retimer_fw_update_usb_mux_get(port);
break;
case USB_RETIMER_FW_UPDATE_SET_SAFE:
usb_mux_set_safe_mode(port);
- last_result = usb_mux_get(port);
+ last_result = retimer_fw_update_usb_mux_get(port);
break;
case USB_RETIMER_FW_UPDATE_SET_TBT:
usb_mux_set(port, USB_PD_MUX_TBT_COMPAT_ENABLED,
USB_SWITCH_CONNECT, pd_get_polarity(port));
- last_result = usb_mux_get(port);
+ last_result = retimer_fw_update_usb_mux_get(port);
break;
case USB_RETIMER_FW_UPDATE_DISCONNECT:
usb_mux_set(port, USB_PD_MUX_NONE,
USB_SWITCH_DISCONNECT, pd_get_polarity(port));
- last_result = usb_mux_get(port);
+ last_result = retimer_fw_update_usb_mux_get(port);
break;
default:
break;
diff --git a/include/ec_commands.h b/include/ec_commands.h
index 441db29d74..470c0a9425 100644
--- a/include/ec_commands.h
+++ b/include/ec_commands.h
@@ -455,6 +455,13 @@ extern "C" {
#define USB_RETIMER_FW_UPDATE_OP_SHIFT 4
#define USB_RETIMER_FW_UPDATE_ERR 0xfe
#define USB_RETIMER_FW_UPDATE_INVALID_MUX 0xff
+/* Mask to clear unused MUX bits in retimer firmware update */
+#define USB_RETIMER_FW_UPDATE_MUX_MASK (USB_PD_MUX_USB_ENABLED | \
+ USB_PD_MUX_DP_ENABLED | \
+ USB_PD_MUX_SAFE_MODE | \
+ USB_PD_MUX_TBT_COMPAT_ENABLED | \
+ USB_PD_MUX_USB4_ENABLED)
+
/* Retimer firmware update operations */
#define USB_RETIMER_FW_UPDATE_QUERY_PORT 0 /* Which ports has retimer */
#define USB_RETIMER_FW_UPDATE_SUSPEND_PD 1 /* Suspend PD port */