Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

usb: typec: fusb302: Switch to threaded IRQ handler

FUSB302 fails to probe with -EINVAL if its interrupt line is connected via
an I2C GPIO expander, such as TI TCA6416.

Switch the interrupt handler to a threaded one, which also works behind
such GPIO expanders.

Cc: stable <stable@kernel.org>
Fixes: 309b6341d557 ("usb: typec: fusb302: Revert incorrect threaded irq fix")
Signed-off-by: Alexey Charkov <alchark@flipper.net>
Reviewed-by: Hans de Goede <johannes.goede@oss.qualcomm.com>
Reviewed-by: Heikki Krogerus <heikki.krogrerus@linux.intel.com>
Link: https://patch.msgid.link/20260317-fusb302-irq-v2-1-dbabd5c5c961@flipper.net
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Alexey Charkov and committed by
Greg Kroah-Hartman
6b9db531 b41470c6

+3 -2
+3 -2
drivers/usb/typec/tcpm/fusb302.c
··· 1764 1764 goto destroy_workqueue; 1765 1765 } 1766 1766 1767 - ret = request_irq(chip->gpio_int_n_irq, fusb302_irq_intn, 1768 - IRQF_TRIGGER_LOW, "fsc_interrupt_int_n", chip); 1767 + ret = request_threaded_irq(chip->gpio_int_n_irq, NULL, fusb302_irq_intn, 1768 + IRQF_ONESHOT | IRQF_TRIGGER_LOW, 1769 + "fsc_interrupt_int_n", chip); 1769 1770 if (ret < 0) { 1770 1771 dev_err(dev, "cannot request IRQ for GPIO Int_N, ret=%d", ret); 1771 1772 goto tcpm_unregister_port;