Re: [PATCH v2 1/3] usb: typec: mux: ps883x: support TYPEC_DP_STATE_F like qmp-combo
From: Konrad Dybcio
Date: Mon Sep 14 2026 - 06:35:54 EST
On 9/14/26 8:05 AM, Jens Glathe via B4 Relay wrote:
> 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.
The premise here is entirely wrong, you shouldn't assume wholly
different hardware should be programmed 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:
STATE_E must not set the CONN_STATUS_1_DP_PIN_ASSIGNMENT_C_D bit
I don't know if that's the case for F too, possibly.
Setting DP_SINK_REQUESTED seems to be valid on _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;
Stray change
Konrad