diff mbox series

[1/2] usb: typec: tipd: Enable event interrupts by default

Message ID 20211020022620.21012-2-saranya.gopal@intel.com (mailing list archive)
State Accepted
Commit 9990f2f6264cd19cb6ba12d9f9c1c30ae8351096
Headers show
Series Fix IRQ flood issue in TI PD controller | expand

Commit Message

Saranya Gopal Oct. 20, 2021, 2:26 a.m. UTC
TI PD controller comes with notification mechanism to inform
the host on activity in the PD controller. In the current
driver, the required masks are not set. This patch enables
the following events in the interrupt mask register:
PowerStatusUpdate - Set whenever contents of the power status reg changes
DataStatusUpdate - Set whenever contents of the data status reg changes
PlugInsertOrRemoval - Set whenever USB plug status has changed

With this change, the interrupt flooding issue is not seen anymore.

Datasheet: https://www.ti.com/lit/ug/slvuan1a/slvuan1a.pdf
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Suggested-by: Rajaram Regupathy <rajaram.regupathy@intel.com>
Signed-off-by: Saranya Gopal <saranya.gopal@intel.com>
---
 drivers/usb/typec/tipd/core.c | 8 ++++++++
 1 file changed, 8 insertions(+)
diff mbox series

Patch

diff --git a/drivers/usb/typec/tipd/core.c b/drivers/usb/typec/tipd/core.c
index 97311a45f666..fb8ef12bbe9c 100644
--- a/drivers/usb/typec/tipd/core.c
+++ b/drivers/usb/typec/tipd/core.c
@@ -750,6 +750,14 @@  static int tps6598x_probe(struct i2c_client *client)
 			return ret;
 
 		irq_handler = cd321x_interrupt;
+	} else {
+		/* Enable power status, data status and plug event interrupts */
+		ret = tps6598x_write64(tps, TPS_REG_INT_MASK1,
+				       TPS_REG_INT_POWER_STATUS_UPDATE |
+				       TPS_REG_INT_DATA_STATUS_UPDATE |
+				       TPS_REG_INT_PLUG_EVENT);
+		if (ret)
+			return ret;
 	}
 
 	ret = tps6598x_read32(tps, TPS_REG_STATUS, &status);