Re: [PATCH v3 2/3] usb: typec: mux: ps883x: add a delay after writing config regs
From: Heikki Krogerus
Date: Fri Sep 18 2026 - 06:02:48 EST
On Wed, Sep 16, 2026 at 09:36:33PM +0200, Jens Glathe via B4 Relay wrote:
> From: Jens Glathe <jens.glathe@xxxxxxxxxxxxxxxxxxxxxx>
>
> The connection-status registers need time to propagate through the
> analog front-end (PLLs, lane training) after they are written. A 30 ms
> delay after ps883x_configure() brings DisplayPort Alt Mode hotplug on
> the Lenovo 40B0 to a reliable success rate.
>
> Tested with T14s G6 and IdeaCentre Mini with the 40B0 dock on the HDMI
> port with a Type-C host cable. Qualcomm firmware that programs this
> retimer from an MCU uses a similar post-config delay.
>
> Assisted-by: Grok(xAI):4.6
> Signed-off-by: Jens Glathe <jens.glathe@xxxxxxxxxxxxxxxxxxxxxx>
Acked-by: Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx>
> ---
> 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 a5696aef054ee..15aee1d613b1a 100644
> --- a/drivers/usb/typec/mux/ps883x.c
> +++ b/drivers/usb/typec/mux/ps883x.c
> @@ -7,6 +7,7 @@
>
> #include <drm/bridge/aux-bridge.h>
> #include <linux/clk.h>
> +#include <linux/delay.h>
> #include <linux/gpio/consumer.h>
> #include <linux/i2c.h>
> #include <linux/kernel.h>
> @@ -184,6 +185,15 @@ static int ps883x_configure(struct ps883x_retimer *retimer, int cfg0,
> return ret;
> }
>
> + /*
> + * The retimer needs time after the connection-status registers are
> + * written for the analog front-end (PLLs, lane training) to settle.
> + * Without this, DisplayPort Alt Mode hotplug is unreliable on some
> + * docks (e.g. Lenovo 40B0). Qualcomm firmware on platforms that
> + * program this chip from an MCU uses a similar post-config delay.
> + */
> + fsleep(30000);
> +
> return 0;
> }
>
>
> --
> 2.53.0
>
--
heikki