* [PATCH 1/6] iio: imu: adis16400: Use devm_iio_device_alloc
@ 2013-07-30 8:44 Sachin Kamat
2013-07-30 8:44 ` [PATCH 2/6] iio: imu: adis16480: " Sachin Kamat
` (5 more replies)
0 siblings, 6 replies; 14+ messages in thread
From: Sachin Kamat @ 2013-07-30 8:44 UTC (permalink / raw)
To: linux-iio; +Cc: jic23, jic23, sachin.kamat, Manuel Stahl
Using devm_iio_device_alloc makes code simpler.
Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Cc: Manuel Stahl <manuel.stahl@iis.fraunhofer.de>
---
This series compile tested on togreg branch of
git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git
---
drivers/iio/imu/adis16400_core.c | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)
diff --git a/drivers/iio/imu/adis16400_core.c b/drivers/iio/imu/adis16400_core.c
index f60591f..3fb7757 100644
--- a/drivers/iio/imu/adis16400_core.c
+++ b/drivers/iio/imu/adis16400_core.c
@@ -871,7 +871,7 @@ static int adis16400_probe(struct spi_device *spi)
struct iio_dev *indio_dev;
int ret;
- indio_dev = iio_device_alloc(sizeof(*st));
+ indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
if (indio_dev == NULL)
return -ENOMEM;
@@ -893,12 +893,12 @@ static int adis16400_probe(struct spi_device *spi)
ret = adis_init(&st->adis, indio_dev, spi, &adis16400_data);
if (ret)
- goto error_free_dev;
+ return ret;
ret = adis_setup_buffer_and_trigger(&st->adis, indio_dev,
adis16400_trigger_handler);
if (ret)
- goto error_free_dev;
+ return ret;
/* Get the device into a sane initial state */
ret = adis16400_initial_setup(indio_dev);
@@ -913,8 +913,6 @@ static int adis16400_probe(struct spi_device *spi)
error_cleanup_buffer:
adis_cleanup_buffer_and_trigger(&st->adis, indio_dev);
-error_free_dev:
- iio_device_free(indio_dev);
return ret;
}
@@ -928,8 +926,6 @@ static int adis16400_remove(struct spi_device *spi)
adis_cleanup_buffer_and_trigger(&st->adis, indio_dev);
- iio_device_free(indio_dev);
-
return 0;
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 2/6] iio: imu: adis16480: Use devm_iio_device_alloc
2013-07-30 8:44 [PATCH 1/6] iio: imu: adis16400: Use devm_iio_device_alloc Sachin Kamat
@ 2013-07-30 8:44 ` Sachin Kamat
2013-08-03 17:49 ` Jonathan Cameron
2013-07-30 8:44 ` [PATCH 3/6] iio: imu: inv_mpu6050: " Sachin Kamat
` (4 subsequent siblings)
5 siblings, 1 reply; 14+ messages in thread
From: Sachin Kamat @ 2013-07-30 8:44 UTC (permalink / raw)
To: linux-iio; +Cc: jic23, jic23, sachin.kamat, Lars-Peter Clausen
Using devm_iio_device_alloc makes code simpler.
Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Cc: Lars-Peter Clausen <lars@metafoo.de>
---
drivers/iio/imu/adis16480.c | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)
diff --git a/drivers/iio/imu/adis16480.c b/drivers/iio/imu/adis16480.c
index b7db383..dd4206c 100644
--- a/drivers/iio/imu/adis16480.c
+++ b/drivers/iio/imu/adis16480.c
@@ -839,7 +839,7 @@ static int adis16480_probe(struct spi_device *spi)
struct adis16480 *st;
int ret;
- indio_dev = iio_device_alloc(sizeof(*st));
+ indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
if (indio_dev == NULL)
return -ENOMEM;
@@ -857,11 +857,11 @@ static int adis16480_probe(struct spi_device *spi)
ret = adis_init(&st->adis, indio_dev, spi, &adis16480_data);
if (ret)
- goto error_free_dev;
+ return ret;
ret = adis_setup_buffer_and_trigger(&st->adis, indio_dev, NULL);
if (ret)
- goto error_free_dev;
+ return ret;
ret = adis16480_initial_setup(indio_dev);
if (ret)
@@ -879,8 +879,6 @@ error_stop_device:
adis16480_stop_device(indio_dev);
error_cleanup_buffer:
adis_cleanup_buffer_and_trigger(&st->adis, indio_dev);
-error_free_dev:
- iio_device_free(indio_dev);
return ret;
}
@@ -894,8 +892,6 @@ static int adis16480_remove(struct spi_device *spi)
adis_cleanup_buffer_and_trigger(&st->adis, indio_dev);
- iio_device_free(indio_dev);
-
return 0;
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 3/6] iio: imu: inv_mpu6050: Use devm_iio_device_alloc
2013-07-30 8:44 [PATCH 1/6] iio: imu: adis16400: Use devm_iio_device_alloc Sachin Kamat
2013-07-30 8:44 ` [PATCH 2/6] iio: imu: adis16480: " Sachin Kamat
@ 2013-07-30 8:44 ` Sachin Kamat
2013-08-03 17:50 ` Jonathan Cameron
2013-07-30 8:44 ` [PATCH 4/6] iio: light: hid-sensor-als: " Sachin Kamat
` (3 subsequent siblings)
5 siblings, 1 reply; 14+ messages in thread
From: Sachin Kamat @ 2013-07-30 8:44 UTC (permalink / raw)
To: linux-iio; +Cc: jic23, jic23, sachin.kamat
Using devm_iio_device_alloc makes code simpler. While at
it include missing iio.h header file and do some cleanup.
Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c | 27 ++++++++++-----------------
1 file changed, 10 insertions(+), 17 deletions(-)
diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c b/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
index 6a1ff80..df7f1e1 100644
--- a/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
+++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
@@ -23,6 +23,7 @@
#include <linux/interrupt.h>
#include <linux/kfifo.h>
#include <linux/spinlock.h>
+#include <linux/iio/iio.h>
#include "inv_mpu_iio.h"
/*
@@ -663,16 +664,13 @@ static int inv_mpu_probe(struct i2c_client *client,
int result;
if (!i2c_check_functionality(client->adapter,
- I2C_FUNC_SMBUS_I2C_BLOCK)) {
+ I2C_FUNC_SMBUS_I2C_BLOCK))
+ return -ENOSYS;
+
+ indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*st));
+ if (!indio_dev)
+ return -ENOMEM;
- result = -ENOSYS;
- goto out_no_free;
- }
- indio_dev = iio_device_alloc(sizeof(*st));
- if (indio_dev == NULL) {
- result = -ENOMEM;
- goto out_no_free;
- }
st = iio_priv(indio_dev);
st->client = client;
st->plat_data = *(struct inv_mpu6050_platform_data
@@ -680,13 +678,13 @@ static int inv_mpu_probe(struct i2c_client *client,
/* power is turned on inside check chip type*/
result = inv_check_and_setup_chip(st, id);
if (result)
- goto out_free;
+ return result;
result = inv_mpu6050_init_config(indio_dev);
if (result) {
dev_err(&client->dev,
"Could not initialize device.\n");
- goto out_free;
+ return result;
}
i2c_set_clientdata(client, indio_dev);
@@ -705,7 +703,7 @@ static int inv_mpu_probe(struct i2c_client *client,
if (result) {
dev_err(&st->client->dev, "configure buffer fail %d\n",
result);
- goto out_free;
+ return result;
}
result = inv_mpu6050_probe_trigger(indio_dev);
if (result) {
@@ -727,10 +725,6 @@ out_remove_trigger:
inv_mpu6050_remove_trigger(st);
out_unreg_ring:
iio_triggered_buffer_cleanup(indio_dev);
-out_free:
- iio_device_free(indio_dev);
-out_no_free:
-
return result;
}
@@ -742,7 +736,6 @@ static int inv_mpu_remove(struct i2c_client *client)
iio_device_unregister(indio_dev);
inv_mpu6050_remove_trigger(st);
iio_triggered_buffer_cleanup(indio_dev);
- iio_device_free(indio_dev);
return 0;
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 4/6] iio: light: hid-sensor-als: Use devm_iio_device_alloc
2013-07-30 8:44 [PATCH 1/6] iio: imu: adis16400: Use devm_iio_device_alloc Sachin Kamat
2013-07-30 8:44 ` [PATCH 2/6] iio: imu: adis16480: " Sachin Kamat
2013-07-30 8:44 ` [PATCH 3/6] iio: imu: inv_mpu6050: " Sachin Kamat
@ 2013-07-30 8:44 ` Sachin Kamat
2013-08-02 16:08 ` Srinivas Pandruvada
2013-07-30 8:44 ` [PATCH 5/6] iio: light: lm3533-als: " Sachin Kamat
` (2 subsequent siblings)
5 siblings, 1 reply; 14+ messages in thread
From: Sachin Kamat @ 2013-07-30 8:44 UTC (permalink / raw)
To: linux-iio; +Cc: jic23, jic23, sachin.kamat, Srinivas Pandruvada
Using devm_iio_device_alloc makes code simpler.
Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Cc: Srinivas Pandruvada <srinivas.pandruvada@intel.com>
---
drivers/iio/light/hid-sensor-als.c | 17 +++++------------
1 file changed, 5 insertions(+), 12 deletions(-)
diff --git a/drivers/iio/light/hid-sensor-als.c b/drivers/iio/light/hid-sensor-als.c
index 9adfef0..84cf004 100644
--- a/drivers/iio/light/hid-sensor-als.c
+++ b/drivers/iio/light/hid-sensor-als.c
@@ -249,11 +249,9 @@ static int hid_als_probe(struct platform_device *pdev)
struct hid_sensor_hub_device *hsdev = pdev->dev.platform_data;
struct iio_chan_spec *channels;
- indio_dev = iio_device_alloc(sizeof(struct als_state));
- if (indio_dev == NULL) {
- ret = -ENOMEM;
- goto error_ret;
- }
+ indio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(struct als_state));
+ if (!indio_dev)
+ return -ENOMEM;
platform_set_drvdata(pdev, indio_dev);
als_state = iio_priv(indio_dev);
@@ -264,14 +262,13 @@ static int hid_als_probe(struct platform_device *pdev)
&als_state->common_attributes);
if (ret) {
dev_err(&pdev->dev, "failed to setup common attributes\n");
- goto error_free_dev;
+ return ret;
}
channels = kmemdup(als_channels, sizeof(als_channels), GFP_KERNEL);
if (!channels) {
- ret = -ENOMEM;
dev_err(&pdev->dev, "failed to duplicate channels\n");
- goto error_free_dev;
+ return -ENOMEM;
}
ret = als_parse_report(pdev, hsdev, channels,
@@ -329,9 +326,6 @@ error_unreg_buffer_funcs:
iio_triggered_buffer_cleanup(indio_dev);
error_free_dev_mem:
kfree(indio_dev->channels);
-error_free_dev:
- iio_device_free(indio_dev);
-error_ret:
return ret;
}
@@ -346,7 +340,6 @@ static int hid_als_remove(struct platform_device *pdev)
hid_sensor_remove_trigger(indio_dev);
iio_triggered_buffer_cleanup(indio_dev);
kfree(indio_dev->channels);
- iio_device_free(indio_dev);
return 0;
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 5/6] iio: light: lm3533-als: Use devm_iio_device_alloc
2013-07-30 8:44 [PATCH 1/6] iio: imu: adis16400: Use devm_iio_device_alloc Sachin Kamat
` (2 preceding siblings ...)
2013-07-30 8:44 ` [PATCH 4/6] iio: light: hid-sensor-als: " Sachin Kamat
@ 2013-07-30 8:44 ` Sachin Kamat
2013-08-03 17:54 ` Jonathan Cameron
2013-07-30 8:44 ` [PATCH 6/6] iio: light: tsl2563: Use devm_* APIs Sachin Kamat
2013-08-03 17:49 ` [PATCH 1/6] iio: imu: adis16400: Use devm_iio_device_alloc Jonathan Cameron
5 siblings, 1 reply; 14+ messages in thread
From: Sachin Kamat @ 2013-07-30 8:44 UTC (permalink / raw)
To: linux-iio; +Cc: jic23, jic23, sachin.kamat, Johan Hovold
Using devm_iio_device_alloc makes code simpler.
Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Cc: Johan Hovold <jhovold@gmail.com>
---
drivers/iio/light/lm3533-als.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/drivers/iio/light/lm3533-als.c b/drivers/iio/light/lm3533-als.c
index 5fa31a4..c1aadc6 100644
--- a/drivers/iio/light/lm3533-als.c
+++ b/drivers/iio/light/lm3533-als.c
@@ -847,7 +847,7 @@ static int lm3533_als_probe(struct platform_device *pdev)
return -EINVAL;
}
- indio_dev = iio_device_alloc(sizeof(*als));
+ indio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(*als));
if (!indio_dev)
return -ENOMEM;
@@ -870,7 +870,7 @@ static int lm3533_als_probe(struct platform_device *pdev)
if (als->irq) {
ret = lm3533_als_setup_irq(als, indio_dev);
if (ret)
- goto err_free_dev;
+ return ret;
}
ret = lm3533_als_setup(als, pdata);
@@ -894,8 +894,6 @@ err_disable:
err_free_irq:
if (als->irq)
free_irq(als->irq, indio_dev);
-err_free_dev:
- iio_device_free(indio_dev);
return ret;
}
@@ -910,7 +908,6 @@ static int lm3533_als_remove(struct platform_device *pdev)
lm3533_als_disable(als);
if (als->irq)
free_irq(als->irq, indio_dev);
- iio_device_free(indio_dev);
return 0;
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 6/6] iio: light: tsl2563: Use devm_* APIs
2013-07-30 8:44 [PATCH 1/6] iio: imu: adis16400: Use devm_iio_device_alloc Sachin Kamat
` (3 preceding siblings ...)
2013-07-30 8:44 ` [PATCH 5/6] iio: light: lm3533-als: " Sachin Kamat
@ 2013-07-30 8:44 ` Sachin Kamat
2013-07-30 9:07 ` Amit Kucheria
2013-08-03 17:49 ` [PATCH 1/6] iio: imu: adis16400: Use devm_iio_device_alloc Jonathan Cameron
5 siblings, 1 reply; 14+ messages in thread
From: Sachin Kamat @ 2013-07-30 8:44 UTC (permalink / raw)
To: linux-iio; +Cc: jic23, jic23, sachin.kamat, Amit Kucheria
devm_* APIs are device managed and make code simpler.
Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Cc: Amit Kucheria <amit.kucheria@linaro.org>
---
drivers/iio/light/tsl2563.c | 25 ++++++++-----------------
1 file changed, 8 insertions(+), 17 deletions(-)
diff --git a/drivers/iio/light/tsl2563.c b/drivers/iio/light/tsl2563.c
index 1f529f3..ebb962c 100644
--- a/drivers/iio/light/tsl2563.c
+++ b/drivers/iio/light/tsl2563.c
@@ -702,7 +702,7 @@ static int tsl2563_probe(struct i2c_client *client,
int err = 0;
u8 id = 0;
- indio_dev = iio_device_alloc(sizeof(*chip));
+ indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*chip));
if (!indio_dev)
return -ENOMEM;
@@ -714,13 +714,13 @@ static int tsl2563_probe(struct i2c_client *client,
err = tsl2563_detect(chip);
if (err) {
dev_err(&client->dev, "detect error %d\n", -err);
- goto fail1;
+ return err;
}
err = tsl2563_read_id(chip, &id);
if (err) {
dev_err(&client->dev, "read id error %d\n", -err);
- goto fail1;
+ return err;
}
mutex_init(&chip->lock);
@@ -751,7 +751,7 @@ static int tsl2563_probe(struct i2c_client *client,
indio_dev->info = &tsl2563_info_no_irq;
if (client->irq) {
- err = request_threaded_irq(client->irq,
+ err = devm_request_threaded_irq(&client->dev, client->irq,
NULL,
&tsl2563_event_handler,
IRQF_TRIGGER_RISING | IRQF_ONESHOT,
@@ -759,14 +759,14 @@ static int tsl2563_probe(struct i2c_client *client,
indio_dev);
if (err) {
dev_err(&client->dev, "irq request error %d\n", -err);
- goto fail1;
+ return err;
}
}
err = tsl2563_configure(chip);
if (err) {
dev_err(&client->dev, "configure error %d\n", -err);
- goto fail2;
+ return err;
}
INIT_DELAYED_WORK(&chip->poweroff_work, tsl2563_poweroff_work);
@@ -777,19 +777,14 @@ static int tsl2563_probe(struct i2c_client *client,
err = iio_device_register(indio_dev);
if (err) {
dev_err(&client->dev, "iio registration error %d\n", -err);
- goto fail3;
+ goto fail;
}
return 0;
-fail3:
+fail:
cancel_delayed_work(&chip->poweroff_work);
flush_scheduled_work();
-fail2:
- if (client->irq)
- free_irq(client->irq, indio_dev);
-fail1:
- iio_device_free(indio_dev);
return err;
}
@@ -807,10 +802,6 @@ static int tsl2563_remove(struct i2c_client *client)
chip->intr);
flush_scheduled_work();
tsl2563_set_power(chip, 0);
- if (client->irq)
- free_irq(client->irq, indio_dev);
-
- iio_device_free(indio_dev);
return 0;
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH 6/6] iio: light: tsl2563: Use devm_* APIs
2013-07-30 8:44 ` [PATCH 6/6] iio: light: tsl2563: Use devm_* APIs Sachin Kamat
@ 2013-07-30 9:07 ` Amit Kucheria
2013-08-03 17:57 ` Jonathan Cameron
0 siblings, 1 reply; 14+ messages in thread
From: Amit Kucheria @ 2013-07-30 9:07 UTC (permalink / raw)
To: Sachin Kamat; +Cc: linux-iio, jic23, jic23
On Tue, Jul 30, 2013 at 2:14 PM, Sachin Kamat <sachin.kamat@linaro.org> wrote:
> devm_* APIs are device managed and make code simpler.
>
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
> Cc: Amit Kucheria <amit.kucheria@linaro.org>
Looks good. I don't have the device to test this on, though.
Reviewed-by: Amit Kucheria <amit.kucheria@linaro.org>
> ---
> drivers/iio/light/tsl2563.c | 25 ++++++++-----------------
> 1 file changed, 8 insertions(+), 17 deletions(-)
>
> diff --git a/drivers/iio/light/tsl2563.c b/drivers/iio/light/tsl2563.c
> index 1f529f3..ebb962c 100644
> --- a/drivers/iio/light/tsl2563.c
> +++ b/drivers/iio/light/tsl2563.c
> @@ -702,7 +702,7 @@ static int tsl2563_probe(struct i2c_client *client,
> int err = 0;
> u8 id = 0;
>
> - indio_dev = iio_device_alloc(sizeof(*chip));
> + indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*chip));
> if (!indio_dev)
> return -ENOMEM;
>
> @@ -714,13 +714,13 @@ static int tsl2563_probe(struct i2c_client *client,
> err = tsl2563_detect(chip);
> if (err) {
> dev_err(&client->dev, "detect error %d\n", -err);
> - goto fail1;
> + return err;
> }
>
> err = tsl2563_read_id(chip, &id);
> if (err) {
> dev_err(&client->dev, "read id error %d\n", -err);
> - goto fail1;
> + return err;
> }
>
> mutex_init(&chip->lock);
> @@ -751,7 +751,7 @@ static int tsl2563_probe(struct i2c_client *client,
> indio_dev->info = &tsl2563_info_no_irq;
>
> if (client->irq) {
> - err = request_threaded_irq(client->irq,
> + err = devm_request_threaded_irq(&client->dev, client->irq,
> NULL,
> &tsl2563_event_handler,
> IRQF_TRIGGER_RISING | IRQF_ONESHOT,
> @@ -759,14 +759,14 @@ static int tsl2563_probe(struct i2c_client *client,
> indio_dev);
> if (err) {
> dev_err(&client->dev, "irq request error %d\n", -err);
> - goto fail1;
> + return err;
> }
> }
>
> err = tsl2563_configure(chip);
> if (err) {
> dev_err(&client->dev, "configure error %d\n", -err);
> - goto fail2;
> + return err;
> }
>
> INIT_DELAYED_WORK(&chip->poweroff_work, tsl2563_poweroff_work);
> @@ -777,19 +777,14 @@ static int tsl2563_probe(struct i2c_client *client,
> err = iio_device_register(indio_dev);
> if (err) {
> dev_err(&client->dev, "iio registration error %d\n", -err);
> - goto fail3;
> + goto fail;
> }
>
> return 0;
>
> -fail3:
> +fail:
> cancel_delayed_work(&chip->poweroff_work);
> flush_scheduled_work();
> -fail2:
> - if (client->irq)
> - free_irq(client->irq, indio_dev);
> -fail1:
> - iio_device_free(indio_dev);
> return err;
> }
>
> @@ -807,10 +802,6 @@ static int tsl2563_remove(struct i2c_client *client)
> chip->intr);
> flush_scheduled_work();
> tsl2563_set_power(chip, 0);
> - if (client->irq)
> - free_irq(client->irq, indio_dev);
> -
> - iio_device_free(indio_dev);
>
> return 0;
> }
> --
> 1.7.9.5
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 4/6] iio: light: hid-sensor-als: Use devm_iio_device_alloc
2013-07-30 8:44 ` [PATCH 4/6] iio: light: hid-sensor-als: " Sachin Kamat
@ 2013-08-02 16:08 ` Srinivas Pandruvada
2013-08-03 17:54 ` Jonathan Cameron
0 siblings, 1 reply; 14+ messages in thread
From: Srinivas Pandruvada @ 2013-08-02 16:08 UTC (permalink / raw)
To: Sachin Kamat; +Cc: linux-iio, jic23, jic23, Srinivas Pandruvada
On 07/30/2013 01:44 AM, Sachin Kamat wrote:
> Using devm_iio_device_alloc makes code simpler.
>
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
> Cc: Srinivas Pandruvada <srinivas.pandruvada@intel.com>
> ---
> drivers/iio/light/hid-sensor-als.c | 17 +++++------------
> 1 file changed, 5 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/iio/light/hid-sensor-als.c b/drivers/iio/light/hid-sensor-als.c
> index 9adfef0..84cf004 100644
> --- a/drivers/iio/light/hid-sensor-als.c
> +++ b/drivers/iio/light/hid-sensor-als.c
> @@ -249,11 +249,9 @@ static int hid_als_probe(struct platform_device *pdev)
> struct hid_sensor_hub_device *hsdev = pdev->dev.platform_data;
> struct iio_chan_spec *channels;
>
> - indio_dev = iio_device_alloc(sizeof(struct als_state));
> - if (indio_dev == NULL) {
> - ret = -ENOMEM;
> - goto error_ret;
> - }
> + indio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(struct als_state));
> + if (!indio_dev)
> + return -ENOMEM;
> platform_set_drvdata(pdev, indio_dev);
>
> als_state = iio_priv(indio_dev);
> @@ -264,14 +262,13 @@ static int hid_als_probe(struct platform_device *pdev)
> &als_state->common_attributes);
> if (ret) {
> dev_err(&pdev->dev, "failed to setup common attributes\n");
> - goto error_free_dev;
> + return ret;
> }
>
> channels = kmemdup(als_channels, sizeof(als_channels), GFP_KERNEL);
> if (!channels) {
> - ret = -ENOMEM;
Don't we have to free indio_dev?
> dev_err(&pdev->dev, "failed to duplicate channels\n");
> - goto error_free_dev;
> + return -ENOMEM;
> }
>
> ret = als_parse_report(pdev, hsdev, channels,
Same here, What if any of the calls fail after this? free indio_dev?
> @@ -329,9 +326,6 @@ error_unreg_buffer_funcs:
> iio_triggered_buffer_cleanup(indio_dev);
> error_free_dev_mem:
> kfree(indio_dev->channels);
> -error_free_dev:
> - iio_device_free(indio_dev);
> -error_ret:
> return ret;
> }
>
> @@ -346,7 +340,6 @@ static int hid_als_remove(struct platform_device *pdev)
> hid_sensor_remove_trigger(indio_dev);
> iio_triggered_buffer_cleanup(indio_dev);
> kfree(indio_dev->channels);
> - iio_device_free(indio_dev);
>
> return 0;
> }
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 1/6] iio: imu: adis16400: Use devm_iio_device_alloc
2013-07-30 8:44 [PATCH 1/6] iio: imu: adis16400: Use devm_iio_device_alloc Sachin Kamat
` (4 preceding siblings ...)
2013-07-30 8:44 ` [PATCH 6/6] iio: light: tsl2563: Use devm_* APIs Sachin Kamat
@ 2013-08-03 17:49 ` Jonathan Cameron
5 siblings, 0 replies; 14+ messages in thread
From: Jonathan Cameron @ 2013-08-03 17:49 UTC (permalink / raw)
To: Sachin Kamat; +Cc: linux-iio, jic23, Manuel Stahl
On 07/30/13 09:44, Sachin Kamat wrote:
> Using devm_iio_device_alloc makes code simpler.
>
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
> Cc: Manuel Stahl <manuel.stahl@iis.fraunhofer.de>
Applied to the togreg branch of iio.git. Thanks
Jonathan
> ---
> This series compile tested on togreg branch of
> git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git
> ---
> drivers/iio/imu/adis16400_core.c | 10 +++-------
> 1 file changed, 3 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/iio/imu/adis16400_core.c b/drivers/iio/imu/adis16400_core.c
> index f60591f..3fb7757 100644
> --- a/drivers/iio/imu/adis16400_core.c
> +++ b/drivers/iio/imu/adis16400_core.c
> @@ -871,7 +871,7 @@ static int adis16400_probe(struct spi_device *spi)
> struct iio_dev *indio_dev;
> int ret;
>
> - indio_dev = iio_device_alloc(sizeof(*st));
> + indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
> if (indio_dev == NULL)
> return -ENOMEM;
>
> @@ -893,12 +893,12 @@ static int adis16400_probe(struct spi_device *spi)
>
> ret = adis_init(&st->adis, indio_dev, spi, &adis16400_data);
> if (ret)
> - goto error_free_dev;
> + return ret;
>
> ret = adis_setup_buffer_and_trigger(&st->adis, indio_dev,
> adis16400_trigger_handler);
> if (ret)
> - goto error_free_dev;
> + return ret;
>
> /* Get the device into a sane initial state */
> ret = adis16400_initial_setup(indio_dev);
> @@ -913,8 +913,6 @@ static int adis16400_probe(struct spi_device *spi)
>
> error_cleanup_buffer:
> adis_cleanup_buffer_and_trigger(&st->adis, indio_dev);
> -error_free_dev:
> - iio_device_free(indio_dev);
> return ret;
> }
>
> @@ -928,8 +926,6 @@ static int adis16400_remove(struct spi_device *spi)
>
> adis_cleanup_buffer_and_trigger(&st->adis, indio_dev);
>
> - iio_device_free(indio_dev);
> -
> return 0;
> }
>
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 2/6] iio: imu: adis16480: Use devm_iio_device_alloc
2013-07-30 8:44 ` [PATCH 2/6] iio: imu: adis16480: " Sachin Kamat
@ 2013-08-03 17:49 ` Jonathan Cameron
0 siblings, 0 replies; 14+ messages in thread
From: Jonathan Cameron @ 2013-08-03 17:49 UTC (permalink / raw)
To: Sachin Kamat; +Cc: linux-iio, jic23, Lars-Peter Clausen
On 07/30/13 09:44, Sachin Kamat wrote:
> Using devm_iio_device_alloc makes code simpler.
>
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
> Cc: Lars-Peter Clausen <lars@metafoo.de>
Applied to the togreg branch of iio.git.
Thanks,
Jonathan
> ---
> drivers/iio/imu/adis16480.c | 10 +++-------
> 1 file changed, 3 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/iio/imu/adis16480.c b/drivers/iio/imu/adis16480.c
> index b7db383..dd4206c 100644
> --- a/drivers/iio/imu/adis16480.c
> +++ b/drivers/iio/imu/adis16480.c
> @@ -839,7 +839,7 @@ static int adis16480_probe(struct spi_device *spi)
> struct adis16480 *st;
> int ret;
>
> - indio_dev = iio_device_alloc(sizeof(*st));
> + indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
> if (indio_dev == NULL)
> return -ENOMEM;
>
> @@ -857,11 +857,11 @@ static int adis16480_probe(struct spi_device *spi)
>
> ret = adis_init(&st->adis, indio_dev, spi, &adis16480_data);
> if (ret)
> - goto error_free_dev;
> + return ret;
>
> ret = adis_setup_buffer_and_trigger(&st->adis, indio_dev, NULL);
> if (ret)
> - goto error_free_dev;
> + return ret;
>
> ret = adis16480_initial_setup(indio_dev);
> if (ret)
> @@ -879,8 +879,6 @@ error_stop_device:
> adis16480_stop_device(indio_dev);
> error_cleanup_buffer:
> adis_cleanup_buffer_and_trigger(&st->adis, indio_dev);
> -error_free_dev:
> - iio_device_free(indio_dev);
> return ret;
> }
>
> @@ -894,8 +892,6 @@ static int adis16480_remove(struct spi_device *spi)
>
> adis_cleanup_buffer_and_trigger(&st->adis, indio_dev);
>
> - iio_device_free(indio_dev);
> -
> return 0;
> }
>
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 3/6] iio: imu: inv_mpu6050: Use devm_iio_device_alloc
2013-07-30 8:44 ` [PATCH 3/6] iio: imu: inv_mpu6050: " Sachin Kamat
@ 2013-08-03 17:50 ` Jonathan Cameron
0 siblings, 0 replies; 14+ messages in thread
From: Jonathan Cameron @ 2013-08-03 17:50 UTC (permalink / raw)
To: Sachin Kamat; +Cc: linux-iio, jic23
On 07/30/13 09:44, Sachin Kamat wrote:
> Using devm_iio_device_alloc makes code simpler. While at
> it include missing iio.h header file and do some cleanup.
>
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Applied to the togreg branch of iio.git
Thanks,
> ---
> drivers/iio/imu/inv_mpu6050/inv_mpu_core.c | 27 ++++++++++-----------------
> 1 file changed, 10 insertions(+), 17 deletions(-)
>
> diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c b/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
> index 6a1ff80..df7f1e1 100644
> --- a/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
> +++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
> @@ -23,6 +23,7 @@
> #include <linux/interrupt.h>
> #include <linux/kfifo.h>
> #include <linux/spinlock.h>
> +#include <linux/iio/iio.h>
> #include "inv_mpu_iio.h"
>
> /*
> @@ -663,16 +664,13 @@ static int inv_mpu_probe(struct i2c_client *client,
> int result;
>
> if (!i2c_check_functionality(client->adapter,
> - I2C_FUNC_SMBUS_I2C_BLOCK)) {
> + I2C_FUNC_SMBUS_I2C_BLOCK))
> + return -ENOSYS;
> +
> + indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*st));
> + if (!indio_dev)
> + return -ENOMEM;
>
> - result = -ENOSYS;
> - goto out_no_free;
> - }
> - indio_dev = iio_device_alloc(sizeof(*st));
> - if (indio_dev == NULL) {
> - result = -ENOMEM;
> - goto out_no_free;
> - }
> st = iio_priv(indio_dev);
> st->client = client;
> st->plat_data = *(struct inv_mpu6050_platform_data
> @@ -680,13 +678,13 @@ static int inv_mpu_probe(struct i2c_client *client,
> /* power is turned on inside check chip type*/
> result = inv_check_and_setup_chip(st, id);
> if (result)
> - goto out_free;
> + return result;
>
> result = inv_mpu6050_init_config(indio_dev);
> if (result) {
> dev_err(&client->dev,
> "Could not initialize device.\n");
> - goto out_free;
> + return result;
> }
>
> i2c_set_clientdata(client, indio_dev);
> @@ -705,7 +703,7 @@ static int inv_mpu_probe(struct i2c_client *client,
> if (result) {
> dev_err(&st->client->dev, "configure buffer fail %d\n",
> result);
> - goto out_free;
> + return result;
> }
> result = inv_mpu6050_probe_trigger(indio_dev);
> if (result) {
> @@ -727,10 +725,6 @@ out_remove_trigger:
> inv_mpu6050_remove_trigger(st);
> out_unreg_ring:
> iio_triggered_buffer_cleanup(indio_dev);
> -out_free:
> - iio_device_free(indio_dev);
> -out_no_free:
> -
> return result;
> }
>
> @@ -742,7 +736,6 @@ static int inv_mpu_remove(struct i2c_client *client)
> iio_device_unregister(indio_dev);
> inv_mpu6050_remove_trigger(st);
> iio_triggered_buffer_cleanup(indio_dev);
> - iio_device_free(indio_dev);
>
> return 0;
> }
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 4/6] iio: light: hid-sensor-als: Use devm_iio_device_alloc
2013-08-02 16:08 ` Srinivas Pandruvada
@ 2013-08-03 17:54 ` Jonathan Cameron
0 siblings, 0 replies; 14+ messages in thread
From: Jonathan Cameron @ 2013-08-03 17:54 UTC (permalink / raw)
To: Srinivas Pandruvada; +Cc: Sachin Kamat, linux-iio, jic23, Srinivas Pandruvada
On 08/02/13 17:08, Srinivas Pandruvada wrote:
> On 07/30/2013 01:44 AM, Sachin Kamat wrote:
>> Using devm_iio_device_alloc makes code simpler.
>>
>> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
>> Cc: Srinivas Pandruvada <srinivas.pandruvada@intel.com>
Applied to the togreg branch of iio.git.
>> ---
>> drivers/iio/light/hid-sensor-als.c | 17 +++++------------
>> 1 file changed, 5 insertions(+), 12 deletions(-)
>>
>> diff --git a/drivers/iio/light/hid-sensor-als.c b/drivers/iio/light/hid-sensor-als.c
>> index 9adfef0..84cf004 100644
>> --- a/drivers/iio/light/hid-sensor-als.c
>> +++ b/drivers/iio/light/hid-sensor-als.c
>> @@ -249,11 +249,9 @@ static int hid_als_probe(struct platform_device *pdev)
>> struct hid_sensor_hub_device *hsdev = pdev->dev.platform_data;
>> struct iio_chan_spec *channels;
>> - indio_dev = iio_device_alloc(sizeof(struct als_state));
>> - if (indio_dev == NULL) {
>> - ret = -ENOMEM;
>> - goto error_ret;
>> - }
>> + indio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(struct als_state));
>> + if (!indio_dev)
>> + return -ENOMEM;
>> platform_set_drvdata(pdev, indio_dev);
>> als_state = iio_priv(indio_dev);
>> @@ -264,14 +262,13 @@ static int hid_als_probe(struct platform_device *pdev)
>> &als_state->common_attributes);
>> if (ret) {
>> dev_err(&pdev->dev, "failed to setup common attributes\n");
>> - goto error_free_dev;
>> + return ret;
>> }
>> channels = kmemdup(als_channels, sizeof(als_channels), GFP_KERNEL);
>> if (!channels) {
>> - ret = -ENOMEM;
> Don't we have to free indio_dev?
Nope. Not having to do that is what we gain from the managed interfaces.
Basically anything allocated for a particular devices will be freed (in reverse
order) on that device being freed. The pdev->dev device will be freed if this
probe fails, taking everything else down with it.
Jonathan
>> dev_err(&pdev->dev, "failed to duplicate channels\n");
>> - goto error_free_dev;
>> + return -ENOMEM;
>> }
>> ret = als_parse_report(pdev, hsdev, channels,
>
> Same here, What if any of the calls fail after this? free indio_dev?
>> @@ -329,9 +326,6 @@ error_unreg_buffer_funcs:
>> iio_triggered_buffer_cleanup(indio_dev);
>> error_free_dev_mem:
>> kfree(indio_dev->channels);
>> -error_free_dev:
>> - iio_device_free(indio_dev);
>> -error_ret:
>> return ret;
>> }
>> @@ -346,7 +340,6 @@ static int hid_als_remove(struct platform_device *pdev)
>> hid_sensor_remove_trigger(indio_dev);
>> iio_triggered_buffer_cleanup(indio_dev);
>> kfree(indio_dev->channels);
>> - iio_device_free(indio_dev);
>> return 0;
>> }
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 5/6] iio: light: lm3533-als: Use devm_iio_device_alloc
2013-07-30 8:44 ` [PATCH 5/6] iio: light: lm3533-als: " Sachin Kamat
@ 2013-08-03 17:54 ` Jonathan Cameron
0 siblings, 0 replies; 14+ messages in thread
From: Jonathan Cameron @ 2013-08-03 17:54 UTC (permalink / raw)
To: Sachin Kamat; +Cc: linux-iio, jic23, Johan Hovold
On 07/30/13 09:44, Sachin Kamat wrote:
> Using devm_iio_device_alloc makes code simpler.
>
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
> Cc: Johan Hovold <jhovold@gmail.com>
Applied to the togreg branch of iio.git
> ---
> drivers/iio/light/lm3533-als.c | 7 ++-----
> 1 file changed, 2 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/iio/light/lm3533-als.c b/drivers/iio/light/lm3533-als.c
> index 5fa31a4..c1aadc6 100644
> --- a/drivers/iio/light/lm3533-als.c
> +++ b/drivers/iio/light/lm3533-als.c
> @@ -847,7 +847,7 @@ static int lm3533_als_probe(struct platform_device *pdev)
> return -EINVAL;
> }
>
> - indio_dev = iio_device_alloc(sizeof(*als));
> + indio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(*als));
> if (!indio_dev)
> return -ENOMEM;
>
> @@ -870,7 +870,7 @@ static int lm3533_als_probe(struct platform_device *pdev)
> if (als->irq) {
> ret = lm3533_als_setup_irq(als, indio_dev);
> if (ret)
> - goto err_free_dev;
> + return ret;
> }
>
> ret = lm3533_als_setup(als, pdata);
> @@ -894,8 +894,6 @@ err_disable:
> err_free_irq:
> if (als->irq)
> free_irq(als->irq, indio_dev);
> -err_free_dev:
> - iio_device_free(indio_dev);
>
> return ret;
> }
> @@ -910,7 +908,6 @@ static int lm3533_als_remove(struct platform_device *pdev)
> lm3533_als_disable(als);
> if (als->irq)
> free_irq(als->irq, indio_dev);
> - iio_device_free(indio_dev);
>
> return 0;
> }
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 6/6] iio: light: tsl2563: Use devm_* APIs
2013-07-30 9:07 ` Amit Kucheria
@ 2013-08-03 17:57 ` Jonathan Cameron
0 siblings, 0 replies; 14+ messages in thread
From: Jonathan Cameron @ 2013-08-03 17:57 UTC (permalink / raw)
To: Amit Kucheria; +Cc: Sachin Kamat, linux-iio, jic23
On 07/30/13 10:07, Amit Kucheria wrote:
> On Tue, Jul 30, 2013 at 2:14 PM, Sachin Kamat <sachin.kamat@linaro.org> wrote:
>> devm_* APIs are device managed and make code simpler.
>>
>> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
>> Cc: Amit Kucheria <amit.kucheria@linaro.org>
>
> Looks good. I don't have the device to test this on, though.
>
> Reviewed-by: Amit Kucheria <amit.kucheria@linaro.org>
>
Applied to the togreg branch of iio.git
Thanks,
>> ---
>> drivers/iio/light/tsl2563.c | 25 ++++++++-----------------
>> 1 file changed, 8 insertions(+), 17 deletions(-)
>>
>> diff --git a/drivers/iio/light/tsl2563.c b/drivers/iio/light/tsl2563.c
>> index 1f529f3..ebb962c 100644
>> --- a/drivers/iio/light/tsl2563.c
>> +++ b/drivers/iio/light/tsl2563.c
>> @@ -702,7 +702,7 @@ static int tsl2563_probe(struct i2c_client *client,
>> int err = 0;
>> u8 id = 0;
>>
>> - indio_dev = iio_device_alloc(sizeof(*chip));
>> + indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*chip));
>> if (!indio_dev)
>> return -ENOMEM;
>>
>> @@ -714,13 +714,13 @@ static int tsl2563_probe(struct i2c_client *client,
>> err = tsl2563_detect(chip);
>> if (err) {
>> dev_err(&client->dev, "detect error %d\n", -err);
>> - goto fail1;
>> + return err;
>> }
>>
>> err = tsl2563_read_id(chip, &id);
>> if (err) {
>> dev_err(&client->dev, "read id error %d\n", -err);
>> - goto fail1;
>> + return err;
>> }
>>
>> mutex_init(&chip->lock);
>> @@ -751,7 +751,7 @@ static int tsl2563_probe(struct i2c_client *client,
>> indio_dev->info = &tsl2563_info_no_irq;
>>
>> if (client->irq) {
>> - err = request_threaded_irq(client->irq,
>> + err = devm_request_threaded_irq(&client->dev, client->irq,
>> NULL,
>> &tsl2563_event_handler,
>> IRQF_TRIGGER_RISING | IRQF_ONESHOT,
>> @@ -759,14 +759,14 @@ static int tsl2563_probe(struct i2c_client *client,
>> indio_dev);
>> if (err) {
>> dev_err(&client->dev, "irq request error %d\n", -err);
>> - goto fail1;
>> + return err;
>> }
>> }
>>
>> err = tsl2563_configure(chip);
>> if (err) {
>> dev_err(&client->dev, "configure error %d\n", -err);
>> - goto fail2;
>> + return err;
>> }
>>
>> INIT_DELAYED_WORK(&chip->poweroff_work, tsl2563_poweroff_work);
>> @@ -777,19 +777,14 @@ static int tsl2563_probe(struct i2c_client *client,
>> err = iio_device_register(indio_dev);
>> if (err) {
>> dev_err(&client->dev, "iio registration error %d\n", -err);
>> - goto fail3;
>> + goto fail;
>> }
>>
>> return 0;
>>
>> -fail3:
>> +fail:
>> cancel_delayed_work(&chip->poweroff_work);
>> flush_scheduled_work();
>> -fail2:
>> - if (client->irq)
>> - free_irq(client->irq, indio_dev);
>> -fail1:
>> - iio_device_free(indio_dev);
>> return err;
>> }
>>
>> @@ -807,10 +802,6 @@ static int tsl2563_remove(struct i2c_client *client)
>> chip->intr);
>> flush_scheduled_work();
>> tsl2563_set_power(chip, 0);
>> - if (client->irq)
>> - free_irq(client->irq, indio_dev);
>> -
>> - iio_device_free(indio_dev);
>>
>> return 0;
>> }
>> --
>> 1.7.9.5
>>
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2013-08-03 16:57 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-07-30 8:44 [PATCH 1/6] iio: imu: adis16400: Use devm_iio_device_alloc Sachin Kamat
2013-07-30 8:44 ` [PATCH 2/6] iio: imu: adis16480: " Sachin Kamat
2013-08-03 17:49 ` Jonathan Cameron
2013-07-30 8:44 ` [PATCH 3/6] iio: imu: inv_mpu6050: " Sachin Kamat
2013-08-03 17:50 ` Jonathan Cameron
2013-07-30 8:44 ` [PATCH 4/6] iio: light: hid-sensor-als: " Sachin Kamat
2013-08-02 16:08 ` Srinivas Pandruvada
2013-08-03 17:54 ` Jonathan Cameron
2013-07-30 8:44 ` [PATCH 5/6] iio: light: lm3533-als: " Sachin Kamat
2013-08-03 17:54 ` Jonathan Cameron
2013-07-30 8:44 ` [PATCH 6/6] iio: light: tsl2563: Use devm_* APIs Sachin Kamat
2013-07-30 9:07 ` Amit Kucheria
2013-08-03 17:57 ` Jonathan Cameron
2013-08-03 17:49 ` [PATCH 1/6] iio: imu: adis16400: Use devm_iio_device_alloc Jonathan Cameron
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.