--- /dev/null
+From cf73ed894ee939d6706d65e0cd186e4a64e3af6d Mon Sep 17 00:00:00 2001
+From: Nikita Travkin <nikita@trvn.ru>
+Date: Sat, 8 Jan 2022 23:19:19 -0800
+Subject: Input: zinitix - make sure the IRQ is allocated before it gets enabled
+
+From: Nikita Travkin <nikita@trvn.ru>
+
+commit cf73ed894ee939d6706d65e0cd186e4a64e3af6d upstream.
+
+Since irq request is the last thing in the driver probe, it happens
+later than the input device registration. This means that there is a
+small time window where if the open method is called the driver will
+attempt to enable not yet available irq.
+
+Fix that by moving the irq request before the input device registration.
+
+Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
+Fixes: 26822652c85e ("Input: add zinitix touchscreen driver")
+Signed-off-by: Nikita Travkin <nikita@trvn.ru>
+Link: https://lore.kernel.org/r/20220106072840.36851-2-nikita@trvn.ru
+Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/input/touchscreen/zinitix.c | 16 +++++++++-------
+ 1 file changed, 9 insertions(+), 7 deletions(-)
+
+--- a/drivers/input/touchscreen/zinitix.c
++++ b/drivers/input/touchscreen/zinitix.c
+@@ -488,6 +488,15 @@ static int zinitix_ts_probe(struct i2c_c
+ return error;
+ }
+
++ error = devm_request_threaded_irq(&client->dev, client->irq,
++ NULL, zinitix_ts_irq_handler,
++ IRQF_ONESHOT,
++ client->name, bt541);
++ if (error) {
++ dev_err(&client->dev, "Failed to request IRQ: %d\n", error);
++ return error;
++ }
++
+ error = zinitix_init_input_dev(bt541);
+ if (error) {
+ dev_err(&client->dev,
+@@ -514,13 +523,6 @@ static int zinitix_ts_probe(struct i2c_c
+ }
+
+ irq_set_status_flags(client->irq, IRQ_NOAUTOEN);
+- error = devm_request_threaded_irq(&client->dev, client->irq,
+- NULL, zinitix_ts_irq_handler,
+- IRQF_ONESHOT, client->name, bt541);
+- if (error) {
+- dev_err(&client->dev, "Failed to request IRQ: %d\n", error);
+- return error;
+- }
+
+ return 0;
+ }