[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <78fdc86f1957da67963740711054265abc878998.camel@gmail.com>
Date: Mon, 10 Jun 2024 11:25:11 +0200
From: Nuno Sá <noname.nuno@...il.com>
To: Dmitry Torokhov <dmitry.torokhov@...il.com>, linux-input@...r.kernel.org
Cc: Michael Hennerich <michael.hennerich@...log.com>,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH 2/3] Input: adxl34x - switch to using managed resources
On Sun, 2024-06-09 at 16:41 -0700, Dmitry Torokhov wrote:
> Switch the driver to use managed resources to simplify error handling.
>
> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@...il.com>
> ---
> drivers/input/misc/adxl34x-i2c.c | 8 ---
> drivers/input/misc/adxl34x-spi.c | 8 ---
> drivers/input/misc/adxl34x.c | 85 +++++++++++---------------------
> drivers/input/misc/adxl34x.h | 1 -
> 4 files changed, 30 insertions(+), 72 deletions(-)
>
> diff --git a/drivers/input/misc/adxl34x-i2c.c b/drivers/input/misc/adxl34x-
> i2c.c
> index 7531c7b2d657..c05d898898e8 100644
> --- a/drivers/input/misc/adxl34x-i2c.c
> +++ b/drivers/input/misc/adxl34x-i2c.c
> @@ -98,13 +98,6 @@ static int adxl34x_i2c_probe(struct i2c_client *client)
> return 0;
> }
>
> -static void adxl34x_i2c_remove(struct i2c_client *client)
> -{
> - struct adxl34x *ac = i2c_get_clientdata(client);
> -
> - adxl34x_remove(ac);
> -}
> -
> static const struct i2c_device_id adxl34x_id[] = {
> { "adxl34x" },
> { }
> @@ -137,7 +130,6 @@ static struct i2c_driver adxl34x_driver = {
> .of_match_table = adxl34x_of_id,
> },
> .probe = adxl34x_i2c_probe,
> - .remove = adxl34x_i2c_remove,
> .id_table = adxl34x_id,
> };
>
> diff --git a/drivers/input/misc/adxl34x-spi.c b/drivers/input/misc/adxl34x-
> spi.c
> index 2befcc4df0be..fd716d861832 100644
> --- a/drivers/input/misc/adxl34x-spi.c
> +++ b/drivers/input/misc/adxl34x-spi.c
> @@ -87,13 +87,6 @@ static int adxl34x_spi_probe(struct spi_device *spi)
> return 0;
> }
>
> -static void adxl34x_spi_remove(struct spi_device *spi)
> -{
> - struct adxl34x *ac = spi_get_drvdata(spi);
> -
> - adxl34x_remove(ac);
> -}
> -
> static struct spi_driver adxl34x_driver = {
> .driver = {
> .name = "adxl34x",
> @@ -101,7 +94,6 @@ static struct spi_driver adxl34x_driver = {
> .pm = pm_sleep_ptr(&adxl34x_pm),
> },
> .probe = adxl34x_spi_probe,
> - .remove = adxl34x_spi_remove,
> };
>
> module_spi_driver(adxl34x_driver);
> diff --git a/drivers/input/misc/adxl34x.c b/drivers/input/misc/adxl34x.c
> index fbe5a56c19d1..c6c34005f5d2 100644
> --- a/drivers/input/misc/adxl34x.c
> +++ b/drivers/input/misc/adxl34x.c
> @@ -707,21 +707,21 @@ struct adxl34x *adxl34x_probe(struct device *dev, int
> irq,
> struct adxl34x *ac;
> struct input_dev *input_dev;
> const struct adxl34x_platform_data *pdata;
> - int err, range, i;
> + int error, range, i;
> int revid;
>
> if (!irq) {
> dev_err(dev, "no IRQ?\n");
> - err = -ENODEV;
> - goto err_out;
> + return ERR_PTR(-ENODEV);
> }
>
> - ac = kzalloc(sizeof(*ac), GFP_KERNEL);
> - input_dev = input_allocate_device();
> - if (!ac || !input_dev) {
> - err = -ENOMEM;
> - goto err_free_mem;
> - }
> + ac = devm_kzalloc(dev, sizeof(*ac), GFP_KERNEL);
> + if (!ac)
> + return ERR_PTR(-ENOMEM);
> +
> + input_dev = devm_input_allocate_device(dev);
> + if (!input_dev)
> + return ERR_PTR(-ENOMEM);
>
> ac->fifo_delay = fifo_delay_default;
>
> @@ -754,14 +754,12 @@ struct adxl34x *adxl34x_probe(struct device *dev, int
> irq,
> break;
> default:
> dev_err(dev, "Failed to probe %s\n", input_dev->name);
> - err = -ENODEV;
> - goto err_free_mem;
> + return ERR_PTR(-ENODEV);
> }
>
> snprintf(ac->phys, sizeof(ac->phys), "%s/input0", dev_name(dev));
>
> input_dev->phys = ac->phys;
> - input_dev->dev.parent = dev;
> input_dev->id.product = ac->model;
> input_dev->id.bustype = bops->bustype;
> input_dev->open = adxl34x_input_open;
> @@ -769,18 +767,12 @@ struct adxl34x *adxl34x_probe(struct device *dev, int
> irq,
>
> input_set_drvdata(input_dev, ac);
>
> - __set_bit(ac->pdata.ev_type, input_dev->evbit);
> -
> if (ac->pdata.ev_type == EV_REL) {
> - __set_bit(REL_X, input_dev->relbit);
> - __set_bit(REL_Y, input_dev->relbit);
> - __set_bit(REL_Z, input_dev->relbit);
> + input_set_capability(input_dev, EV_REL, REL_X);
> + input_set_capability(input_dev, EV_REL, REL_Y);
> + input_set_capability(input_dev, EV_REL, REL_Z);
> } else {
> /* EV_ABS */
> - __set_bit(ABS_X, input_dev->absbit);
> - __set_bit(ABS_Y, input_dev->absbit);
> - __set_bit(ABS_Z, input_dev->absbit);
Are these somehow default or already set? I guess in input_set_abs_params()...
Anyways, the move from "raw" __set_bits() to input APIs should maybe be done in
a separate patch? They are unrelated with the current one.
- Nuno Sá
Powered by blists - more mailing lists