usb: typec: tipd: Enable event interrupts by default
authorSaranya Gopal <saranya.gopal@intel.com>
Wed, 20 Oct 2021 02:26:19 +0000 (07:56 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 20 Oct 2021 17:31:13 +0000 (19:31 +0200)
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.

Suggested-by: Rajaram Regupathy <rajaram.regupathy@intel.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Acked-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Saranya Gopal <saranya.gopal@intel.com>
Datasheet: https://www.ti.com/lit/ug/slvuan1a/slvuan1a.pdf
Link: https://lore.kernel.org/r/20211020022620.21012-2-saranya.gopal@intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/typec/tipd/core.c

index 97311a45f666aafc0fb68a3f59e29b6c84f885f9..fb8ef12bbe9c85de3e0ea4bd69cbe02b39f3c68d 100644 (file)
@@ -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);