All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Input: ar1021 - use IRQ_NOAUTOEN flags to replace disable_irq
@ 2021-01-02  4:29 Barry Song
  2021-01-02  5:55 ` Dmitry Torokhov
  0 siblings, 1 reply; 3+ messages in thread
From: Barry Song @ 2021-01-02  4:29 UTC (permalink / raw)
  To: dmitry.torokhov, linux-input; +Cc: linux-kernel, Barry Song

disable_irq() after request_irq is unsafe as it gives a time gap which
irq can come before disable_irq(). IRQ_NOAUTOEN is the common way to
avoid enabling IRQ due to requesting IRQ.

Signed-off-by: Barry Song <song.bao.hua@hisilicon.com>
---
 drivers/input/touchscreen/ar1021_i2c.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/input/touchscreen/ar1021_i2c.c b/drivers/input/touchscreen/ar1021_i2c.c
index c0d5c2413356..c9e98ed4520e 100644
--- a/drivers/input/touchscreen/ar1021_i2c.c
+++ b/drivers/input/touchscreen/ar1021_i2c.c
@@ -123,6 +123,11 @@ static int ar1021_i2c_probe(struct i2c_client *client,
 
 	input_set_drvdata(input, ar1021);
 
+	/*
+	 * Don't enable the IRQ automatically, we'll enable it in
+	 * ar1021_i2c_open()
+	 */
+	irq_set_status_flags(client->irq, IRQ_NOAUTOEN);
 	error = devm_request_threaded_irq(&client->dev, client->irq,
 					  NULL, ar1021_i2c_irq,
 					  IRQF_ONESHOT,
@@ -133,9 +138,6 @@ static int ar1021_i2c_probe(struct i2c_client *client,
 		return error;
 	}
 
-	/* Disable the IRQ, we'll enable it in ar1021_i2c_open() */
-	disable_irq(client->irq);
-
 	error = input_register_device(ar1021->input);
 	if (error) {
 		dev_err(&client->dev,
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-01-02  7:59 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-01-02  4:29 [PATCH] Input: ar1021 - use IRQ_NOAUTOEN flags to replace disable_irq Barry Song
2021-01-02  5:55 ` Dmitry Torokhov
2021-01-02  7:58   ` Song Bao Hua (Barry Song)

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.