Merge tag 'loongarch-6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai...
[linux-2.6-block.git] / drivers / extcon / extcon-usbc-tusb320.c
index 4d08c2123e5980e27cfe262607ee8320fb004242..2eab341de6b76f3b3ca3d89b008b8800d5260ae1 100644 (file)
@@ -17,6 +17,7 @@
 #include <linux/usb/typec.h>
 #include <linux/usb/typec_altmode.h>
 #include <linux/usb/role.h>
+#include <linux/irq.h>
 
 #define TUSB320_REG8                           0x8
 #define TUSB320_REG8_CURRENT_MODE_ADVERTISE    GENMASK(7, 6)
@@ -515,6 +516,8 @@ static int tusb320_probe(struct i2c_client *client)
        const void *match_data;
        unsigned int revision;
        int ret;
+       u32 irq_trigger_type = IRQF_TRIGGER_FALLING;
+       struct irq_data *irq_d;
 
        priv = devm_kzalloc(&client->dev, sizeof(*priv), GFP_KERNEL);
        if (!priv)
@@ -568,9 +571,13 @@ static int tusb320_probe(struct i2c_client *client)
                 */
                tusb320_state_update_handler(priv, true);
 
+       irq_d = irq_get_irq_data(client->irq);
+       if (irq_d)
+               irq_trigger_type = irqd_get_trigger_type(irq_d);
+
        ret = devm_request_threaded_irq(priv->dev, client->irq, NULL,
                                        tusb320_irq_handler,
-                                       IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
+                                       IRQF_ONESHOT | irq_trigger_type,
                                        client->name, priv);
        if (ret)
                tusb320_typec_remove(priv);