* [PATCH] hwmon: (iio_hwmon) Use devm functions
@ 2018-07-20 14:46 Maxime Roussin-Bélanger
2018-07-20 22:11 ` Guenter Roeck
0 siblings, 1 reply; 3+ messages in thread
From: Maxime Roussin-Bélanger @ 2018-07-20 14:46 UTC (permalink / raw)
To: Jean Delvare, Guenter Roeck
Cc: linux-hwmon, Jonathan Cameron, Maxime Roussin-Bélanger
Use devm_iio_channel_get_all() to automatically release
channels.
Use devm_hwmon_device_register_with_groups() to
automatically unregister the device.
Signed-off-by: Maxime Roussin-Bélanger <maxime.roussinbelanger@gmail.com>
---
drivers/hwmon/iio_hwmon.c | 43 ++++++++++-----------------------------
1 file changed, 11 insertions(+), 32 deletions(-)
diff --git a/drivers/hwmon/iio_hwmon.c b/drivers/hwmon/iio_hwmon.c
index 69031a0f7ed2..5cbd87b00ce0 100644
--- a/drivers/hwmon/iio_hwmon.c
+++ b/drivers/hwmon/iio_hwmon.c
@@ -73,17 +73,16 @@ static int iio_hwmon_probe(struct platform_device *pdev)
if (dev->of_node && dev->of_node->name)
name = dev->of_node->name;
- channels = iio_channel_get_all(dev);
+ channels = devm_iio_channel_get_all(dev);
if (IS_ERR(channels)) {
if (PTR_ERR(channels) == -ENODEV)
return -EPROBE_DEFER;
return PTR_ERR(channels);
}
st = devm_kzalloc(dev, sizeof(*st), GFP_KERNEL);
if (st == NULL) {
- ret = -ENOMEM;
- goto error_release_channels;
+ return -ENOMEM;
}
st->channels = channels;
@@ -96,21 +95,19 @@ static int iio_hwmon_probe(struct platform_device *pdev)
st->num_channels + 1, sizeof(*st->attrs),
GFP_KERNEL);
if (st->attrs == NULL) {
- ret = -ENOMEM;
- goto error_release_channels;
+ return -ENOMEM;
}
for (i = 0; i < st->num_channels; i++) {
a = devm_kzalloc(dev, sizeof(*a), GFP_KERNEL);
if (a == NULL) {
- ret = -ENOMEM;
- goto error_release_channels;
+ return -ENOMEM;
}
sysfs_attr_init(&a->dev_attr.attr);
ret = iio_get_channel_type(&st->channels[i], &type);
if (ret < 0)
- goto error_release_channels;
+ return ret;
switch (type) {
case IIO_VOLTAGE:
@@ -134,12 +131,10 @@ static int iio_hwmon_probe(struct platform_device *pdev)
humidity_i++);
break;
default:
- ret = -EINVAL;
- goto error_release_channels;
+ return -EINVAL;
}
if (a->dev_attr.attr.name == NULL) {
- ret = -ENOMEM;
- goto error_release_channels;
+ return -ENOMEM;
}
a->dev_attr.show = iio_hwmon_read_val;
a->dev_attr.attr.mode = S_IRUGO;
@@ -152,31 +147,16 @@ static int iio_hwmon_probe(struct platform_device *pdev)
sname = devm_kstrdup(dev, name, GFP_KERNEL);
if (!sname) {
- ret = -ENOMEM;
- goto error_release_channels;
+ return -ENOMEM;
}
strreplace(sname, '-', '_');
- st->hwmon_dev = hwmon_device_register_with_groups(dev, sname, st,
- st->groups);
+ st->hwmon_dev = devm_hwmon_device_register_with_groups(dev, sname, st,
+ st->groups);
if (IS_ERR(st->hwmon_dev)) {
- ret = PTR_ERR(st->hwmon_dev);
- goto error_release_channels;
+ return PTR_ERR(st->hwmon_dev);
}
platform_set_drvdata(pdev, st);
- return 0;
-
-error_release_channels:
- iio_channel_release_all(channels);
- return ret;
-}
-
-static int iio_hwmon_remove(struct platform_device *pdev)
-{
- struct iio_hwmon_state *st = platform_get_drvdata(pdev);
-
- hwmon_device_unregister(st->hwmon_dev);
- iio_channel_release_all(st->channels);
return 0;
}
@@ -193,7 +173,6 @@ static struct platform_driver __refdata iio_hwmon_driver = {
.of_match_table = iio_hwmon_of_match,
},
.probe = iio_hwmon_probe,
- .remove = iio_hwmon_remove,
};
module_platform_driver(iio_hwmon_driver);
--
2.18.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] hwmon: (iio_hwmon) Use devm functions
2018-07-20 14:46 [PATCH] hwmon: (iio_hwmon) Use devm functions Maxime Roussin-Bélanger
@ 2018-07-20 22:11 ` Guenter Roeck
2018-07-21 18:16 ` Jonathan Cameron
0 siblings, 1 reply; 3+ messages in thread
From: Guenter Roeck @ 2018-07-20 22:11 UTC (permalink / raw)
To: Maxime Roussin-Bélanger, Jean Delvare; +Cc: linux-hwmon, Jonathan Cameron
On 07/20/2018 07:46 AM, Maxime Roussin-Bélanger wrote:
> Use devm_iio_channel_get_all() to automatically release
> channels.
>
> Use devm_hwmon_device_register_with_groups() to
> automatically unregister the device.
>
> Signed-off-by: Maxime Roussin-Bélanger <maxime.roussinbelanger@gmail.com>
> ---
> drivers/hwmon/iio_hwmon.c | 43 ++++++++++-----------------------------
> 1 file changed, 11 insertions(+), 32 deletions(-)
>
> diff --git a/drivers/hwmon/iio_hwmon.c b/drivers/hwmon/iio_hwmon.c
> index 69031a0f7ed2..5cbd87b00ce0 100644
> --- a/drivers/hwmon/iio_hwmon.c
> +++ b/drivers/hwmon/iio_hwmon.c
> @@ -73,17 +73,16 @@ static int iio_hwmon_probe(struct platform_device *pdev)
> if (dev->of_node && dev->of_node->name)
> name = dev->of_node->name;
>
> - channels = iio_channel_get_all(dev);
> + channels = devm_iio_channel_get_all(dev);
> if (IS_ERR(channels)) {
> if (PTR_ERR(channels) == -ENODEV)
> return -EPROBE_DEFER;
> return PTR_ERR(channels);
> }
>
> st = devm_kzalloc(dev, sizeof(*st), GFP_KERNEL);
> if (st == NULL) {
> - ret = -ENOMEM;
> - goto error_release_channels;
> + return -ENOMEM;
> }
>
The { } is now no longer necessary. Please drop. Same almost everywhere below.
Thanks,
Guenter
> st->channels = channels;
> @@ -96,21 +95,19 @@ static int iio_hwmon_probe(struct platform_device *pdev)
> st->num_channels + 1, sizeof(*st->attrs),
> GFP_KERNEL);
> if (st->attrs == NULL) {
> - ret = -ENOMEM;
> - goto error_release_channels;
> + return -ENOMEM;
> }
>
> for (i = 0; i < st->num_channels; i++) {
> a = devm_kzalloc(dev, sizeof(*a), GFP_KERNEL);
> if (a == NULL) {
> - ret = -ENOMEM;
> - goto error_release_channels;
> + return -ENOMEM;
> }
>
> sysfs_attr_init(&a->dev_attr.attr);
> ret = iio_get_channel_type(&st->channels[i], &type);
> if (ret < 0)
> - goto error_release_channels;
> + return ret;
>
> switch (type) {
> case IIO_VOLTAGE:
> @@ -134,12 +131,10 @@ static int iio_hwmon_probe(struct platform_device *pdev)
> humidity_i++);
> break;
> default:
> - ret = -EINVAL;
> - goto error_release_channels;
> + return -EINVAL;
> }
> if (a->dev_attr.attr.name == NULL) {
> - ret = -ENOMEM;
> - goto error_release_channels;
> + return -ENOMEM;
> }
> a->dev_attr.show = iio_hwmon_read_val;
> a->dev_attr.attr.mode = S_IRUGO;
> @@ -152,31 +147,16 @@ static int iio_hwmon_probe(struct platform_device *pdev)
>
> sname = devm_kstrdup(dev, name, GFP_KERNEL);
> if (!sname) {
> - ret = -ENOMEM;
> - goto error_release_channels;
> + return -ENOMEM;
> }
>
> strreplace(sname, '-', '_');
> - st->hwmon_dev = hwmon_device_register_with_groups(dev, sname, st,
> - st->groups);
> + st->hwmon_dev = devm_hwmon_device_register_with_groups(dev, sname, st,
> + st->groups);
> if (IS_ERR(st->hwmon_dev)) {
> - ret = PTR_ERR(st->hwmon_dev);
> - goto error_release_channels;
> + return PTR_ERR(st->hwmon_dev);
> }
> platform_set_drvdata(pdev, st);
> - return 0;
> -
> -error_release_channels:
> - iio_channel_release_all(channels);
> - return ret;
> -}
> -
> -static int iio_hwmon_remove(struct platform_device *pdev)
> -{
> - struct iio_hwmon_state *st = platform_get_drvdata(pdev);
> -
> - hwmon_device_unregister(st->hwmon_dev);
> - iio_channel_release_all(st->channels);
>
> return 0;
> }
> @@ -193,7 +173,6 @@ static struct platform_driver __refdata iio_hwmon_driver = {
> .of_match_table = iio_hwmon_of_match,
> },
> .probe = iio_hwmon_probe,
> - .remove = iio_hwmon_remove,
> };
>
> module_platform_driver(iio_hwmon_driver);
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] hwmon: (iio_hwmon) Use devm functions
2018-07-20 22:11 ` Guenter Roeck
@ 2018-07-21 18:16 ` Jonathan Cameron
0 siblings, 0 replies; 3+ messages in thread
From: Jonathan Cameron @ 2018-07-21 18:16 UTC (permalink / raw)
To: Guenter Roeck; +Cc: Maxime Roussin-Bélanger, Jean Delvare, linux-hwmon
On Fri, 20 Jul 2018 15:11:32 -0700
Guenter Roeck <linux@roeck-us.net> wrote:
> On 07/20/2018 07:46 AM, Maxime Roussin-Bélanger wrote:
> > Use devm_iio_channel_get_all() to automatically release
> > channels.
> >
> > Use devm_hwmon_device_register_with_groups() to
> > automatically unregister the device.
> >
> > Signed-off-by: Maxime Roussin-Bélanger <maxime.roussinbelanger@gmail.com>
Other than Guenter's comment, looks good.
Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Thanks,
Jonathan
> > ---
> > drivers/hwmon/iio_hwmon.c | 43 ++++++++++-----------------------------
> > 1 file changed, 11 insertions(+), 32 deletions(-)
> >
> > diff --git a/drivers/hwmon/iio_hwmon.c b/drivers/hwmon/iio_hwmon.c
> > index 69031a0f7ed2..5cbd87b00ce0 100644
> > --- a/drivers/hwmon/iio_hwmon.c
> > +++ b/drivers/hwmon/iio_hwmon.c
> > @@ -73,17 +73,16 @@ static int iio_hwmon_probe(struct platform_device *pdev)
> > if (dev->of_node && dev->of_node->name)
> > name = dev->of_node->name;
> >
> > - channels = iio_channel_get_all(dev);
> > + channels = devm_iio_channel_get_all(dev);
> > if (IS_ERR(channels)) {
> > if (PTR_ERR(channels) == -ENODEV)
> > return -EPROBE_DEFER;
> > return PTR_ERR(channels);
> > }
> >
> > st = devm_kzalloc(dev, sizeof(*st), GFP_KERNEL);
> > if (st == NULL) {
> > - ret = -ENOMEM;
> > - goto error_release_channels;
> > + return -ENOMEM;
> > }
> >
> The { } is now no longer necessary. Please drop. Same almost everywhere below.
>
> Thanks,
> Guenter
>
> > st->channels = channels;
> > @@ -96,21 +95,19 @@ static int iio_hwmon_probe(struct platform_device *pdev)
> > st->num_channels + 1, sizeof(*st->attrs),
> > GFP_KERNEL);
> > if (st->attrs == NULL) {
> > - ret = -ENOMEM;
> > - goto error_release_channels;
> > + return -ENOMEM;
> > }
> >
> > for (i = 0; i < st->num_channels; i++) {
> > a = devm_kzalloc(dev, sizeof(*a), GFP_KERNEL);
> > if (a == NULL) {
> > - ret = -ENOMEM;
> > - goto error_release_channels;
> > + return -ENOMEM;
> > }
> >
> > sysfs_attr_init(&a->dev_attr.attr);
> > ret = iio_get_channel_type(&st->channels[i], &type);
> > if (ret < 0)
> > - goto error_release_channels;
> > + return ret;
> >
> > switch (type) {
> > case IIO_VOLTAGE:
> > @@ -134,12 +131,10 @@ static int iio_hwmon_probe(struct platform_device *pdev)
> > humidity_i++);
> > break;
> > default:
> > - ret = -EINVAL;
> > - goto error_release_channels;
> > + return -EINVAL;
> > }
> > if (a->dev_attr.attr.name == NULL) {
> > - ret = -ENOMEM;
> > - goto error_release_channels;
> > + return -ENOMEM;
> > }
> > a->dev_attr.show = iio_hwmon_read_val;
> > a->dev_attr.attr.mode = S_IRUGO;
> > @@ -152,31 +147,16 @@ static int iio_hwmon_probe(struct platform_device *pdev)
> >
> > sname = devm_kstrdup(dev, name, GFP_KERNEL);
> > if (!sname) {
> > - ret = -ENOMEM;
> > - goto error_release_channels;
> > + return -ENOMEM;
> > }
> >
> > strreplace(sname, '-', '_');
> > - st->hwmon_dev = hwmon_device_register_with_groups(dev, sname, st,
> > - st->groups);
> > + st->hwmon_dev = devm_hwmon_device_register_with_groups(dev, sname, st,
> > + st->groups);
> > if (IS_ERR(st->hwmon_dev)) {
> > - ret = PTR_ERR(st->hwmon_dev);
> > - goto error_release_channels;
> > + return PTR_ERR(st->hwmon_dev);
> > }
> > platform_set_drvdata(pdev, st);
> > - return 0;
> > -
> > -error_release_channels:
> > - iio_channel_release_all(channels);
> > - return ret;
> > -}
> > -
> > -static int iio_hwmon_remove(struct platform_device *pdev)
> > -{
> > - struct iio_hwmon_state *st = platform_get_drvdata(pdev);
> > -
> > - hwmon_device_unregister(st->hwmon_dev);
> > - iio_channel_release_all(st->channels);
> >
> > return 0;
> > }
> > @@ -193,7 +173,6 @@ static struct platform_driver __refdata iio_hwmon_driver = {
> > .of_match_table = iio_hwmon_of_match,
> > },
> > .probe = iio_hwmon_probe,
> > - .remove = iio_hwmon_remove,
> > };
> >
> > module_platform_driver(iio_hwmon_driver);
> >
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2018-07-21 19:10 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-07-20 14:46 [PATCH] hwmon: (iio_hwmon) Use devm functions Maxime Roussin-Bélanger
2018-07-20 22:11 ` Guenter Roeck
2018-07-21 18:16 ` Jonathan Cameron
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox