[PATCH v2 1/3] usb: typec: mux: ps883x: support TYPEC_DP_STATE_F like qmp-combo

From: Jens Glathe via B4 Relay

Date: Mon Sep 14 2026 - 02:06:49 EST


From: Jens Glathe <jens.glathe@xxxxxxxxxxxxxxxxxxxxxx>

Several docks, including the Lenovo 40B0 and SSK SC220, still send the
legacy TYPEC_DP_STATE_F mode request (deprecated since DisplayPort Alt
Mode spec version 1.0b).

Keep the handling in the existing DP altmode path in ps883x_set() and
mirror qcom-qmp-combo: pin C/E are DP-only, pin D/F are USB3 + DP.
STATE_E is grouped with STATE_C the same way.

Assisted-by: Grok(xAI):4.6
Signed-off-by: Jens Glathe <jens.glathe@xxxxxxxxxxxxxxxxxxxxxx>
---
drivers/usb/typec/mux/ps883x.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/usb/typec/mux/ps883x.c b/drivers/usb/typec/mux/ps883x.c
index 64e0a61b776a1..c185d8897e3a4 100644
--- a/drivers/usb/typec/mux/ps883x.c
+++ b/drivers/usb/typec/mux/ps883x.c
@@ -205,21 +205,24 @@ static int ps883x_set(struct ps883x_retimer *retimer, struct typec_retimer_state
cfg1 |= CONN_STATUS_1_DP_CONNECTED |
CONN_STATUS_1_DP_HPD_LEVEL;

- switch (state->mode) {
+ switch (state->mode) {
+ /* DP + USB3 (pin D, and legacy pin F) */
case TYPEC_DP_STATE_D:
+ case TYPEC_DP_STATE_F:
cfg0 |= CONN_STATUS_0_USB_3_1_CONNECTED;
fallthrough;
+ /* DP only (pin C, and pin E) */
case TYPEC_DP_STATE_C:
+ case TYPEC_DP_STATE_E:
cfg1 |= CONN_STATUS_1_DP_SINK_REQUESTED |
CONN_STATUS_1_DP_PIN_ASSIGNMENT_C_D;
break;
- default: /* MODE_E */
+ default:
break;
}
break;
case USB_TYPEC_TBT_SID:
tb_data = state->data;
-
/* Unconditional */
cfg2 |= CONN_STATUS_2_TBT_CONNECTED;


--
2.53.0