diff mbox series

[1/2] Input: wacom_i2c - do not force interrupt trigger

Message ID 20210321220043.318239-1-dmitry.torokhov@gmail.com
State Accepted
Commit d5aea403ff709227e8a5e75c9367396d59510469
Headers show
Series [1/2] Input: wacom_i2c - do not force interrupt trigger | expand

Commit Message

Dmitry Torokhov March 21, 2021, 10 p.m. UTC
Instead of forcing interrupt trigger to "level low" rely on the
platform to set it up according to how it is wired on the given
board.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
 drivers/input/touchscreen/wacom_i2c.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

Comments

Alistair March 22, 2021, 1:13 p.m. UTC | #1
On Sun, Mar 21, 2021, at 6:00 PM, Dmitry Torokhov wrote:
> Instead of forcing interrupt trigger to "level low" rely on the

> platform to set it up according to how it is wired on the given

> board.

> 

> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com <mailto:dmitry.torokhov%40gmail.com>>


Reviewed-by: Alistair Francis <alistair@alistair23.me>


Alistair

> ---

> drivers/input/touchscreen/wacom_i2c.c | 3 +--

> 1 file changed, 1 insertion(+), 2 deletions(-)

> 

> diff --git a/drivers/input/touchscreen/wacom_i2c.c b/drivers/input/touchscreen/wacom_i2c.c

> index 1afc6bde2891..609ff84e7693 100644

> --- a/drivers/input/touchscreen/wacom_i2c.c

> +++ b/drivers/input/touchscreen/wacom_i2c.c

> @@ -195,8 +195,7 @@ static int wacom_i2c_probe(struct i2c_client *client,

> input_set_drvdata(input, wac_i2c);

>  

> error = request_threaded_irq(client->irq, NULL, wacom_i2c_irq,

> -      IRQF_TRIGGER_LOW | IRQF_ONESHOT,

> -      "wacom_i2c", wac_i2c);

> +      IRQF_ONESHOT, "wacom_i2c", wac_i2c);

> if (error) {

> dev_err(&client->dev,

> "Failed to enable IRQ, error: %d\n", error);

> -- 

> 2.31.0.rc2.261.g7f71774620-goog

> 

>
Alistair March 22, 2021, 1:14 p.m. UTC | #2
On Sun, Mar 21, 2021, at 6:00 PM, Dmitry Torokhov wrote:
> This simplifies error unwinding path and allows us to get rid of

> remove() method.

> 

> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com <mailto:dmitry.torokhov%40gmail.com>>


Reviewed-by: Alistair Francis <alistair@alistair23.me>


Alistair

> ---

> drivers/input/touchscreen/wacom_i2c.c | 55 +++++++++------------------

> 1 file changed, 17 insertions(+), 38 deletions(-)

> 

> diff --git a/drivers/input/touchscreen/wacom_i2c.c b/drivers/input/touchscreen/wacom_i2c.c

> index 609ff84e7693..22826c387da5 100644

> --- a/drivers/input/touchscreen/wacom_i2c.c

> +++ b/drivers/input/touchscreen/wacom_i2c.c

> @@ -145,15 +145,16 @@ static void wacom_i2c_close(struct input_dev *dev)

> }

>  

> static int wacom_i2c_probe(struct i2c_client *client,

> -      const struct i2c_device_id *id)

> +    const struct i2c_device_id *id)

> {

> + struct device *dev = &client->dev;

> struct wacom_i2c *wac_i2c;

> struct input_dev *input;

> struct wacom_features features = { 0 };

> int error;

>  

> if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {

> - dev_err(&client->dev, "i2c_check_functionality error\n");

> + dev_err(dev, "i2c_check_functionality error\n");

> return -EIO;

> }

>  

> @@ -161,21 +162,22 @@ static int wacom_i2c_probe(struct i2c_client *client,

> if (error)

> return error;

>  

> - wac_i2c = kzalloc(sizeof(*wac_i2c), GFP_KERNEL);

> - input = input_allocate_device();

> - if (!wac_i2c || !input) {

> - error = -ENOMEM;

> - goto err_free_mem;

> - }

> + wac_i2c = devm_kzalloc(dev, sizeof(*wac_i2c), GFP_KERNEL);

> + if (!wac_i2c)

> + return -ENOMEM;

>  

> wac_i2c->client = client;

> +

> + input = devm_input_allocate_device(dev);

> + if (!input)

> + return -ENOMEM;

> +

> wac_i2c->input = input;

>  

> input->name = "Wacom I2C Digitizer";

> input->id.bustype = BUS_I2C;

> input->id.vendor = 0x56a;

> input->id.version = features.fw_version;

> - input->dev.parent = &client->dev;

> input->open = wacom_i2c_open;

> input->close = wacom_i2c_close;

>  

> @@ -194,12 +196,11 @@ static int wacom_i2c_probe(struct i2c_client *client,

>  

> input_set_drvdata(input, wac_i2c);

>  

> - error = request_threaded_irq(client->irq, NULL, wacom_i2c_irq,

> -      IRQF_ONESHOT, "wacom_i2c", wac_i2c);

> + error = devm_request_threaded_irq(dev, client->irq, NULL, wacom_i2c_irq,

> +   IRQF_ONESHOT, "wacom_i2c", wac_i2c);

> if (error) {

> - dev_err(&client->dev,

> - "Failed to enable IRQ, error: %d\n", error);

> - goto err_free_mem;

> + dev_err(dev, "Failed to request IRQ: %d\n", error);

> + return error;

> }

>  

> /* Disable the IRQ, we'll enable it in wac_i2c_open() */

> @@ -207,31 +208,10 @@ static int wacom_i2c_probe(struct i2c_client *client,

>  

> error = input_register_device(wac_i2c->input);

> if (error) {

> - dev_err(&client->dev,

> - "Failed to register input device, error: %d\n", error);

> - goto err_free_irq;

> + dev_err(dev, "Failed to register input device: %d\n", error);

> + return error;

> }

>  

> - i2c_set_clientdata(client, wac_i2c);

> - return 0;

> -

> -err_free_irq:

> - free_irq(client->irq, wac_i2c);

> -err_free_mem:

> - input_free_device(input);

> - kfree(wac_i2c);

> -

> - return error;

> -}

> -

> -static int wacom_i2c_remove(struct i2c_client *client)

> -{

> - struct wacom_i2c *wac_i2c = i2c_get_clientdata(client);

> -

> - free_irq(client->irq, wac_i2c);

> - input_unregister_device(wac_i2c->input);

> - kfree(wac_i2c);

> -

> return 0;

> }

>  

> @@ -268,7 +248,6 @@ static struct i2c_driver wacom_i2c_driver = {

> },

>  

> .probe = wacom_i2c_probe,

> - .remove = wacom_i2c_remove,

> .id_table = wacom_i2c_id,

> };

> module_i2c_driver(wacom_i2c_driver);

> -- 

> 2.31.0.rc2.261.g7f71774620-goog

> 

>
diff mbox series

Patch

diff --git a/drivers/input/touchscreen/wacom_i2c.c b/drivers/input/touchscreen/wacom_i2c.c
index 1afc6bde2891..609ff84e7693 100644
--- a/drivers/input/touchscreen/wacom_i2c.c
+++ b/drivers/input/touchscreen/wacom_i2c.c
@@ -195,8 +195,7 @@  static int wacom_i2c_probe(struct i2c_client *client,
 	input_set_drvdata(input, wac_i2c);
 
 	error = request_threaded_irq(client->irq, NULL, wacom_i2c_irq,
-				     IRQF_TRIGGER_LOW | IRQF_ONESHOT,
-				     "wacom_i2c", wac_i2c);
+				     IRQF_ONESHOT, "wacom_i2c", wac_i2c);
 	if (error) {
 		dev_err(&client->dev,
 			"Failed to enable IRQ, error: %d\n", error);