From: "Dr. David Alan Gilbert" <dave@treblig.org>
To: jens.glathe@oldschoolsolutions.biz
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Abel Vesa <abelvesa@kernel.org>,
Heikki Krogerus <heikki.krogerus@linux.intel.com>,
Bjorn Andersson <andersson@kernel.org>,
Konrad Dybcio <konradybcio@kernel.org>,
linux-usb@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org,
stable@vger.kernel.org
Subject: Re: [PATCH 2/5] usb: typec: ps883x: Return -EOPNOTSUPP for USB4 when parade,disable-usb4 is set
Date: Sun, 19 Jul 2026 01:14:42 +0000 [thread overview]
Message-ID: <alwlAgUQnzfg75hp@gallifrey> (raw)
In-Reply-To: <20260718-ps883x-disable-usb4-v1-2-cec86d0b909e@oldschoolsolutions.biz>
* Jens Glathe via B4 Relay (devnull+jens.glathe.oldschoolsolutions.biz@kernel.org) wrote:
> From: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
>
> On Qualcomm X1E80100 platforms using the Parade PS883x retimer (like
> Lenovo ThinkPad T14s Gen6), hotplugging USB4-capable docks such as the
> Lenovo 40B0 results in working USB but no DisplayPort output on the
> dock's HDMI/DP ports.
>
> When the dock negotiates USB4, the retimer receives TYPEC_MODE_USB4
> and forwards it via typec_mux_set(). The qmp_combo PHY then selects
> QMPPHY_MODE_USB3_ONLY because no classic DP altmode SVID is present in
> the state, leaving the DP transmitter and AUX channel disabled.
>
> Add a DT property "parade,disable-usb4" that, when present, makes the
> PS883x driver reject USB4 modes as not supported. DP altmode
> configuration is still applied if negotiated, so both USB and
> DisplayPort continue to work.
>
> This is a temporary workaround until proper USB4 DP tunneling support
> is available in the X1E USB4 controller and qmp_combo PHY stack.
>
> Link: https://patch.msgid.link/20260312101431.2375709-1-krishna.kurapati@oss.qualcomm.com
> Assisted-by: Grok(xAI):4.3
> Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
Tested-by: Dr. David Alan Gilbert <dave@treblig.org>
On zenbook a14 with the following patches and a TB cable
> ---
> drivers/usb/typec/mux/ps883x.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/drivers/usb/typec/mux/ps883x.c b/drivers/usb/typec/mux/ps883x.c
> index 64e0a61b776a1..3fa26ce01a9c9 100644
> --- a/drivers/usb/typec/mux/ps883x.c
> +++ b/drivers/usb/typec/mux/ps883x.c
> @@ -62,6 +62,7 @@ struct ps883x_retimer {
>
> enum typec_orientation orientation;
> bool in_reset;
> + bool disable_usb4;
> };
>
> static int ps883x_enable_vregs(struct ps883x_retimer *retimer)
> @@ -249,6 +250,13 @@ static int ps883x_set(struct ps883x_retimer *retimer, struct typec_retimer_state
> cfg0 |= CONN_STATUS_0_USB_3_1_CONNECTED;
> break;
> case TYPEC_MODE_USB4:
> + if (retimer->disable_usb4) {
> + dev_info(&retimer->client->dev,
> + "USB4 disabled via DT property, rejecting USB4 mode\n");
> + return -EOPNOTSUPP;
> + }
> +
> + /* Normal USB4 handling */
> eudo_data = state->data;
>
> cfg2 |= CONN_STATUS_2_USB4_CONNECTED;
> @@ -378,6 +386,8 @@ static int ps883x_retimer_probe(struct i2c_client *client)
>
> retimer->client = client;
>
> + retimer->disable_usb4 = device_property_read_bool(dev, "parade,disable-usb4");
> +
> mutex_init(&retimer->lock);
>
> retimer->regmap = devm_regmap_init_i2c(client, &ps883x_retimer_regmap);
>
> --
> 2.53.0
>
>
--
-----Open up your eyes, open up your mind, open up your code -------
/ Dr. David Alan Gilbert | Running GNU/Linux | Happy \
\ dave @ treblig.org | | In Hex /
\ _________________________|_____ http://www.treblig.org |_______/
next prev parent reply other threads:[~2026-07-19 1:18 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-18 17:06 [PATCH 0/5] usb: typec: ps883x: fixes for older Thunderbolt 4 / USB4 docks Jens Glathe via B4 Relay
2026-07-18 17:06 ` Jens Glathe
2026-07-18 17:06 ` [PATCH 1/5] dt-bindings: usb: parade,ps8830: Add parade,disable-usb4 property Jens Glathe via B4 Relay
2026-07-18 17:06 ` Jens Glathe
2026-07-18 17:11 ` sashiko-bot
2026-07-18 17:06 ` [PATCH 2/5] usb: typec: ps883x: Return -EOPNOTSUPP for USB4 when parade,disable-usb4 is set Jens Glathe via B4 Relay
2026-07-18 17:06 ` Jens Glathe
2026-07-18 17:14 ` sashiko-bot
2026-07-19 1:14 ` Dr. David Alan Gilbert [this message]
2026-07-18 17:06 ` [PATCH 3/5] usb: typec: mux: ps883x: refactor DP altmode handling and support TYPEC_DP_STATE_F Jens Glathe via B4 Relay
2026-07-18 17:06 ` Jens Glathe
2026-07-18 17:29 ` sashiko-bot
2026-07-18 17:06 ` [PATCH 4/5] usb: typec: mux: ps883x: add a delay after writing config regs Jens Glathe via B4 Relay
2026-07-18 17:06 ` Jens Glathe
2026-07-18 17:06 ` [PATCH 5/5] arm64: dts: qcom: x1: disable ps883x USB4 capability Jens Glathe via B4 Relay
2026-07-18 17:06 ` Jens Glathe
2026-07-18 17:22 ` sashiko-bot
2026-07-19 1:15 ` Dr. David Alan Gilbert
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alwlAgUQnzfg75hp@gallifrey \
--to=dave@treblig.org \
--cc=abelvesa@kernel.org \
--cc=andersson@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=heikki.krogerus@linux.intel.com \
--cc=jens.glathe@oldschoolsolutions.biz \
--cc=konradybcio@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=robh@kernel.org \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.