[PATCH RFC 15/22] usb: typec: tipd: Update partner identity when power status was updated

From: Sven Peter
Date: Thu Aug 21 2025 - 11:51:39 EST


From: Hector Martin <marcan@xxxxxxxxx>

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 arre added for CD321x.

Signed-off-by: Hector Martin <marcan@xxxxxxxxx>
Signed-off-by: Sven Peter <sven@xxxxxxxxxx>
---
drivers/usb/typec/tipd/core.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/typec/tipd/core.c b/drivers/usb/typec/tipd/core.c
index e369897bfa017ca96e559a8bd70da11207d4513a..b0fdd4dddd3a490dbc2a8ced21ea0803658f36a7 100644
--- a/drivers/usb/typec/tipd/core.c
+++ b/drivers/usb/typec/tipd/core.c
@@ -636,9 +636,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, "%s: failed to partner identity\n", __func__);
+ tps->partner_identity = (struct usb_pd_identity) {0};
+ }
+ }
+ }

if (event & APPLE_CD_REG_INT_DATA_STATUS_UPDATE)
if (!tps->data->read_data_status(tps))

--
2.34.1