]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
usb: typec: tcpm: Update PD of Type-C port upon pd_set
authorKyle Tso <kyletso@google.com>
Mon, 11 Mar 2024 17:23:06 +0000 (01:23 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 3 Apr 2024 13:32:47 +0000 (15:32 +0200)
commit 17af5050dead6cbcca12c1fcd17e0bb8bb284eae upstream.

The PD of Type-C port needs to be updated in pd_set. Unlink the Type-C
port device to the old PD before linking it to a new one.

Fixes: cd099cde4ed2 ("usb: typec: tcpm: Support multiple capabilities")
Cc: stable@vger.kernel.org
Signed-off-by: Kyle Tso <kyletso@google.com>
Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Link: https://lore.kernel.org/r/20240311172306.3911309-1-kyletso@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/typec/tcpm/tcpm.c

index 3b38f7f5d57c5e5489a6d0ba555a614ce159abb6..f81699537312aa38043d820b6ffc4d0a77d6b154 100644 (file)
@@ -6166,7 +6166,9 @@ static int tcpm_pd_set(struct typec_port *p, struct usb_power_delivery *pd)
 
        port->port_source_caps = data->source_cap;
        port->port_sink_caps = data->sink_cap;
+       typec_port_set_usb_power_delivery(p, NULL);
        port->selected_pd = pd;
+       typec_port_set_usb_power_delivery(p, port->selected_pd);
 unlock:
        mutex_unlock(&port->lock);
        return ret;