Re: [PATCH v2] usb: typec: ucsi: Skip CAM query when partner has no alt modes

From: Andrei Kuchynski

Date: Thu Oct 01 2026 - 08:37:01 EST


On Wed, Sep 30, 2026 at 11:46 PM Gris Ge <cnfourt@xxxxxxxxx> wrote:
>
> Since Thunderbolt alternate mode support was added,
> `ucsi_altmode_update_active()` is called on every Connector Partner
> Changed event. This made the driver send `UCSI_GET_CURRENT_CAM` to
> PPMs even when the partner had no alternate modes registered. Firmware
> that does not support the optional alternate mode details answered Not
> Supported, which produced a spurious error on every partner change:
>
> ```
> ucsi_acpi USBC000:00: GET_CURRENT_CAM command failed
> ```
>
> Fixed by skipping the command when there is nothing to update.
>
> Fixes: da87d45b1951 ("usb: typec: ucsi: Add Thunderbolt alternate mode support")
> Cc: stable@xxxxxxxxxxxxxxx # v7.0+
> Assisted-by: Codex:deepseek-v4.1-flash
> Signed-off-by: Gris Ge <cnfourt@xxxxxxxxx>

Reviewed-by: Andrei Kuchynski <akuchynski@xxxxxxxxxxxx>

> ---
> v2:
> - skip the invoke of `ucsi_altmode_update_active()` in
> `ucsi_handle_connector_change()`
> v1: https://lore.kernel.org/linux-usb/20260927021649.8967-1-cnfourt@xxxxxxxxx/
>
> drivers/usb/typec/ucsi/ucsi.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/usb/typec/ucsi/ucsi.c b/drivers/usb/typec/ucsi/ucsi.c
> index bef3f9b71d71..c392afdc27ae 100644
> --- a/drivers/usb/typec/ucsi/ucsi.c
> +++ b/drivers/usb/typec/ucsi/ucsi.c
> @@ -1519,7 +1519,8 @@ static void ucsi_handle_connector_change(struct work_struct *work)
>
> if (con->partner && (change & UCSI_CONSTAT_PARTNER_CHANGE)) {
> ucsi_partner_change(con);
> - ucsi_altmode_update_active(con);
> + if (con->partner_altmode[0])
> + ucsi_altmode_update_active(con);
>
> /* Complete pending data role swap */
> if (!completion_done(&con->complete))
> --
> 2.55.0
>