]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
usb: typec: tipd: Update partner identity when power status was updated
authorHector Martin <marcan@marcan.st>
Sun, 14 Sep 2025 12:56:13 +0000 (12:56 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 14 Sep 2025 14:08:21 +0000 (16:08 +0200)
Whenever the power status is changed make sure to also update the
partner identity to be able to detect changes once de-bouncing and mode
changes are added for CD321x.

Signed-off-by: Hector Martin <marcan@marcan.st>
Reviewed-by: Neal Gompa <neal@gompa.dev>
Signed-off-by: Sven Peter <sven@kernel.org>
Link: https://lore.kernel.org/r/20250914-apple-usb3-tipd-v1-8-4e99c8649024@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/typec/tipd/core.c

index c7cf936e5a61a331271c05b68ff1b77b89c0f643..e16c6c07c72a3e285f1fc94db72bed8dc3217a1d 100644 (file)
@@ -635,9 +635,16 @@ static irqreturn_t cd321x_interrupt(int irq, void *data)
        if (!tps6598x_read_status(tps, &status))
                goto err_unlock;
 
-       if (event & APPLE_CD_REG_INT_POWER_STATUS_UPDATE)
+       if (event & APPLE_CD_REG_INT_POWER_STATUS_UPDATE) {
                if (!tps6598x_read_power_status(tps))
                        goto err_unlock;
+               if (TPS_POWER_STATUS_PWROPMODE(tps->pwr_status) == TYPEC_PWR_MODE_PD) {
+                       if (tps6598x_read_partner_identity(tps)) {
+                               dev_err(tps->dev, "failed to read partner identity\n");
+                               tps->partner_identity = (struct usb_pd_identity) {0};
+                       }
+               }
+       }
 
        if (event & APPLE_CD_REG_INT_DATA_STATUS_UPDATE)
                if (!tps->data->read_data_status(tps))