From: Pawel Moll <pawel.moll@arm.com>
To: Guenter Roeck <linux@roeck-us.net>
Cc: "arm@kernel.org" <arm@kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Jean Delvare <jdelvare@suse.de>,
"lm-sensors@lm-sensors.org" <lm-sensors@lm-sensors.org>
Subject: Re: [lm-sensors] [PATCH 09/12] hwmon: vexpress: Use devm helper for hwmon device registration
Date: Wed, 12 Feb 2014 11:56:36 +0000 [thread overview]
Message-ID: <1392206196.848.18.camel@hornet> (raw)
In-Reply-To: <20140212024904.GA19352@roeck-us.net>
On Wed, 2014-02-12 at 02:49 +0000, Guenter Roeck wrote:
> On Tue, Feb 11, 2014 at 05:10:33PM +0000, Pawel Moll wrote:
> > Use devm_hwmon_device_register_with_groups instead of
> > the old-style manual attributes and hwmon device registration.
> >
>
> [ ... ]
>
> > static int vexpress_hwmon_probe(struct platform_device *pdev)
> > {
> > - int err;
> > const struct of_device_id *match;
> > struct vexpress_hwmon_data *data;
> > + const char *name;
> > + const struct attribute_group **groups;
> >
> > data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL);
> > if (!data)
> > @@ -176,42 +151,19 @@ static int vexpress_hwmon_probe(struct platform_device *pdev)
> > return -ENODEV;
> >
>
> There is a leftover platform_set_drvdata() above which you can remove;
> attributes are now attached to the hwmon device and no longer
> to the platform device.
Right, missed this fact. Will remove.
BTW. It's cool that the attributes live in the class device now. You
probably don't remember, but in the very first version of the driver I
was trying to get this point with some tricks that weren't taken
nicely ;-)
> > - match = of_match_device(vexpress_hwmon_of_match, &pdev->dev);
> > - sysfs_remove_group(&pdev->dev.kobj, match->data);
> > + name = of_get_property(pdev->dev.of_node, "compatible", NULL);
>
> Couple of problems, two of which escaped me earlier.
> First, can of_get_property ever return NULL ? I think not, just wondering.
Generally it can, but not in this particular case, no. The device
wouldn't get bound to the driver if it lacked the "compatible" property.
> Second is a real problem. You have a '-' in the compatible property which is
> illegal for the 'name' attribute in hwmon devices. It messes up libsensors
> and thus every application using it. Not sure what a good fix (or name)
> would be; simplest might be to copy the name string and replace it with '_'.
> Sorry for not noticing this earlier; it might actually make sense to submit
> a separate patch to address this so we can apply it to the current kernel
> and if necessary patch it into earlier kernels.
Ok, will do. Either with s/-/_/ or with a name lookup table.
Interestingly enough I never observed any problem with libsensors (3.3.2
was the one I used) on my board...
> Third, I noticed that the 'label' attribute is always created but returns
> -ENOENT if there is no label. A much better implementation would be to use
> .is_visible and not create the label attribute if its devicetree entry
> does not exist. I don't know how libsensors reacts to -ENOENT on a read,
> but no matter how it does react, it is pretty much undefined.
> Again, that should be handled in a separate patch.
> I agree with Arnd that it would be nice to get rid of the local macro,
> but I won't mandate that.
I actually prefer to have the structures unfolded, but was just trying
to mimic the trend in other hwmon drivers. No problem - will change this
gladly.
Pawel
_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors
WARNING: multiple messages have this Message-ID (diff)
From: pawel.moll@arm.com (Pawel Moll)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 09/12] hwmon: vexpress: Use devm helper for hwmon device registration
Date: Wed, 12 Feb 2014 11:56:36 +0000 [thread overview]
Message-ID: <1392206196.848.18.camel@hornet> (raw)
In-Reply-To: <20140212024904.GA19352@roeck-us.net>
On Wed, 2014-02-12 at 02:49 +0000, Guenter Roeck wrote:
> On Tue, Feb 11, 2014 at 05:10:33PM +0000, Pawel Moll wrote:
> > Use devm_hwmon_device_register_with_groups instead of
> > the old-style manual attributes and hwmon device registration.
> >
>
> [ ... ]
>
> > static int vexpress_hwmon_probe(struct platform_device *pdev)
> > {
> > - int err;
> > const struct of_device_id *match;
> > struct vexpress_hwmon_data *data;
> > + const char *name;
> > + const struct attribute_group **groups;
> >
> > data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL);
> > if (!data)
> > @@ -176,42 +151,19 @@ static int vexpress_hwmon_probe(struct platform_device *pdev)
> > return -ENODEV;
> >
>
> There is a leftover platform_set_drvdata() above which you can remove;
> attributes are now attached to the hwmon device and no longer
> to the platform device.
Right, missed this fact. Will remove.
BTW. It's cool that the attributes live in the class device now. You
probably don't remember, but in the very first version of the driver I
was trying to get this point with some tricks that weren't taken
nicely ;-)
> > - match = of_match_device(vexpress_hwmon_of_match, &pdev->dev);
> > - sysfs_remove_group(&pdev->dev.kobj, match->data);
> > + name = of_get_property(pdev->dev.of_node, "compatible", NULL);
>
> Couple of problems, two of which escaped me earlier.
> First, can of_get_property ever return NULL ? I think not, just wondering.
Generally it can, but not in this particular case, no. The device
wouldn't get bound to the driver if it lacked the "compatible" property.
> Second is a real problem. You have a '-' in the compatible property which is
> illegal for the 'name' attribute in hwmon devices. It messes up libsensors
> and thus every application using it. Not sure what a good fix (or name)
> would be; simplest might be to copy the name string and replace it with '_'.
> Sorry for not noticing this earlier; it might actually make sense to submit
> a separate patch to address this so we can apply it to the current kernel
> and if necessary patch it into earlier kernels.
Ok, will do. Either with s/-/_/ or with a name lookup table.
Interestingly enough I never observed any problem with libsensors (3.3.2
was the one I used) on my board...
> Third, I noticed that the 'label' attribute is always created but returns
> -ENOENT if there is no label. A much better implementation would be to use
> .is_visible and not create the label attribute if its devicetree entry
> does not exist. I don't know how libsensors reacts to -ENOENT on a read,
> but no matter how it does react, it is pretty much undefined.
> Again, that should be handled in a separate patch.
> I agree with Arnd that it would be nice to get rid of the local macro,
> but I won't mandate that.
I actually prefer to have the structures unfolded, but was just trying
to mimic the trend in other hwmon drivers. No problem - will change this
gladly.
Pawel
WARNING: multiple messages have this Message-ID (diff)
From: Pawel Moll <pawel.moll@arm.com>
To: Guenter Roeck <linux@roeck-us.net>
Cc: "arm@kernel.org" <arm@kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Jean Delvare <jdelvare@suse.de>,
"lm-sensors@lm-sensors.org" <lm-sensors@lm-sensors.org>
Subject: Re: [PATCH 09/12] hwmon: vexpress: Use devm helper for hwmon device registration
Date: Wed, 12 Feb 2014 11:56:36 +0000 [thread overview]
Message-ID: <1392206196.848.18.camel@hornet> (raw)
In-Reply-To: <20140212024904.GA19352@roeck-us.net>
On Wed, 2014-02-12 at 02:49 +0000, Guenter Roeck wrote:
> On Tue, Feb 11, 2014 at 05:10:33PM +0000, Pawel Moll wrote:
> > Use devm_hwmon_device_register_with_groups instead of
> > the old-style manual attributes and hwmon device registration.
> >
>
> [ ... ]
>
> > static int vexpress_hwmon_probe(struct platform_device *pdev)
> > {
> > - int err;
> > const struct of_device_id *match;
> > struct vexpress_hwmon_data *data;
> > + const char *name;
> > + const struct attribute_group **groups;
> >
> > data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL);
> > if (!data)
> > @@ -176,42 +151,19 @@ static int vexpress_hwmon_probe(struct platform_device *pdev)
> > return -ENODEV;
> >
>
> There is a leftover platform_set_drvdata() above which you can remove;
> attributes are now attached to the hwmon device and no longer
> to the platform device.
Right, missed this fact. Will remove.
BTW. It's cool that the attributes live in the class device now. You
probably don't remember, but in the very first version of the driver I
was trying to get this point with some tricks that weren't taken
nicely ;-)
> > - match = of_match_device(vexpress_hwmon_of_match, &pdev->dev);
> > - sysfs_remove_group(&pdev->dev.kobj, match->data);
> > + name = of_get_property(pdev->dev.of_node, "compatible", NULL);
>
> Couple of problems, two of which escaped me earlier.
> First, can of_get_property ever return NULL ? I think not, just wondering.
Generally it can, but not in this particular case, no. The device
wouldn't get bound to the driver if it lacked the "compatible" property.
> Second is a real problem. You have a '-' in the compatible property which is
> illegal for the 'name' attribute in hwmon devices. It messes up libsensors
> and thus every application using it. Not sure what a good fix (or name)
> would be; simplest might be to copy the name string and replace it with '_'.
> Sorry for not noticing this earlier; it might actually make sense to submit
> a separate patch to address this so we can apply it to the current kernel
> and if necessary patch it into earlier kernels.
Ok, will do. Either with s/-/_/ or with a name lookup table.
Interestingly enough I never observed any problem with libsensors (3.3.2
was the one I used) on my board...
> Third, I noticed that the 'label' attribute is always created but returns
> -ENOENT if there is no label. A much better implementation would be to use
> .is_visible and not create the label attribute if its devicetree entry
> does not exist. I don't know how libsensors reacts to -ENOENT on a read,
> but no matter how it does react, it is pretty much undefined.
> Again, that should be handled in a separate patch.
> I agree with Arnd that it would be nice to get rid of the local macro,
> but I won't mandate that.
I actually prefer to have the structures unfolded, but was just trying
to mimic the trend in other hwmon drivers. No problem - will change this
gladly.
Pawel
next prev parent reply other threads:[~2014-02-12 11:56 UTC|newest]
Thread overview: 112+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-11 17:10 [lm-sensors] [PATCH 00/12] Versatile Express updates Pawel Moll
2014-02-11 17:10 ` Pawel Moll
2014-02-11 17:10 ` Pawel Moll
2014-02-11 17:10 ` [PATCH 01/12] misc: vexpress-syscfg: Add udelay-based delay Pawel Moll
2014-02-11 17:10 ` Pawel Moll
2014-02-15 19:19 ` Greg Kroah-Hartman
2014-02-15 19:19 ` Greg Kroah-Hartman
2014-02-11 17:10 ` [PATCH 02/12] power/reset: vexpress: Use udelay instead of timers Pawel Moll
2014-02-11 17:10 ` Pawel Moll
2014-02-11 20:59 ` Arnd Bergmann
2014-02-11 20:59 ` Arnd Bergmann
2014-02-12 11:56 ` Pawel Moll
2014-02-12 11:56 ` Pawel Moll
2014-02-11 17:10 ` [PATCH 03/12] clk: versatile: Split config options for sp810 and vexpress_osc Pawel Moll
2014-02-11 17:10 ` Pawel Moll
2014-02-11 17:10 ` [PATCH 04/12] clocksource: Sched clock source for Versatile Express Pawel Moll
2014-02-11 17:10 ` Pawel Moll
2014-04-16 13:56 ` Rob Herring
2014-04-16 13:56 ` Rob Herring
2014-04-16 14:22 ` Pawel Moll
2014-04-16 14:22 ` Pawel Moll
2014-04-16 14:45 ` Rob Herring
2014-04-16 14:45 ` Rob Herring
2014-04-16 15:05 ` Pawel Moll
2014-04-16 15:05 ` Pawel Moll
2014-05-02 22:14 ` Linus Walleij
2014-05-02 22:14 ` Linus Walleij
2014-05-07 9:57 ` Pawel Moll
2014-05-07 9:57 ` Pawel Moll
2014-05-13 8:47 ` Linus Walleij
2014-05-13 8:47 ` Linus Walleij
2014-02-11 17:10 ` [PATCH 05/12] GPIO: gpio-generic: Add label to platform data Pawel Moll
2014-02-11 17:10 ` Pawel Moll
2014-02-11 17:17 ` Lee Jones
2014-02-11 17:17 ` Lee Jones
2014-02-11 17:20 ` Pawel Moll
2014-02-11 17:20 ` Pawel Moll
2014-02-11 17:29 ` Pawel Moll
2014-02-11 17:29 ` Pawel Moll
2014-02-11 17:46 ` Lee Jones
2014-02-11 17:46 ` Lee Jones
2014-02-11 17:10 ` [PATCH 06/12] mfd: vexpress-sysreg: Add labels to gpio banks Pawel Moll
2014-02-11 17:10 ` Pawel Moll
2014-02-11 17:19 ` Lee Jones
2014-02-11 17:19 ` Lee Jones
2014-02-13 13:08 ` Linus Walleij
2014-02-13 13:08 ` Linus Walleij
2014-02-13 13:11 ` Pawel Moll
2014-02-13 13:11 ` Pawel Moll
2014-02-11 17:10 ` [PATCH 07/12] mfd: syscon: Consider platform data a regmap config name Pawel Moll
2014-02-11 17:10 ` Pawel Moll
2014-02-11 17:24 ` Lee Jones
2014-02-11 17:24 ` Lee Jones
2014-02-12 7:09 ` Alexander Shiyan
2014-02-12 7:09 ` Alexander Shiyan
2014-02-12 8:26 ` Lee Jones
2014-02-12 8:26 ` Lee Jones
2014-02-12 11:06 ` Pawel Moll
2014-02-12 11:06 ` Pawel Moll
2014-02-12 11:18 ` Lee Jones
2014-02-12 11:18 ` Lee Jones
2014-02-12 11:27 ` Alexander Shiyan
2014-02-12 11:27 ` Alexander Shiyan
2014-02-12 11:43 ` Pawel Moll
2014-02-12 11:43 ` Pawel Moll
2014-02-11 17:10 ` [PATCH 08/12] mfd: vexpress-sysreg: Add syscon labels as platform data Pawel Moll
2014-02-11 17:10 ` Pawel Moll
2014-02-11 17:29 ` Lee Jones
2014-02-11 17:29 ` Lee Jones
2014-02-11 17:32 ` Pawel Moll
2014-02-11 17:32 ` Pawel Moll
2014-02-11 17:48 ` Lee Jones
2014-02-11 17:48 ` Lee Jones
2014-02-11 17:52 ` [PATCH v2 1/2] mfd: syscon: Add platform data with a regmap config name Pawel Moll
2014-02-11 17:52 ` Pawel Moll
2014-02-11 17:52 ` [PATCH v2 2/2] mfd: vexpress-sysreg: Add syscon labels as platform data Pawel Moll
2014-02-11 17:52 ` Pawel Moll
2014-02-12 11:20 ` Lee Jones
2014-02-12 11:20 ` Lee Jones
2014-02-11 17:55 ` [PATCH v2 1/2] mfd: syscon: Add platform data with a regmap config name Pawel Moll
2014-02-11 17:55 ` Pawel Moll
2014-02-12 11:19 ` Lee Jones
2014-02-12 11:19 ` Lee Jones
2014-02-11 17:10 ` [lm-sensors] [PATCH 09/12] hwmon: vexpress: Use devm helper for hwmon device registration Pawel Moll
2014-02-11 17:10 ` Pawel Moll
2014-02-11 17:10 ` Pawel Moll
2014-02-11 20:57 ` [lm-sensors] " Arnd Bergmann
2014-02-11 20:57 ` Arnd Bergmann
2014-02-11 20:57 ` Arnd Bergmann
2014-02-12 2:49 ` [lm-sensors] " Guenter Roeck
2014-02-12 2:49 ` Guenter Roeck
2014-02-12 11:56 ` Pawel Moll [this message]
2014-02-12 11:56 ` Pawel Moll
2014-02-12 11:56 ` Pawel Moll
2014-02-12 11:59 ` [lm-sensors] " Pawel Moll
2014-02-12 11:59 ` Pawel Moll
2014-02-12 11:59 ` Pawel Moll
2014-02-12 16:41 ` [lm-sensors] " Guenter Roeck
2014-02-12 16:41 ` Guenter Roeck
2014-02-12 16:41 ` Guenter Roeck
2014-02-11 17:10 ` [PATCH 10/12] ARM: vexpress: remove redundant vexpress_dt_cpus_num to get cpu count Pawel Moll
2014-02-11 17:10 ` Pawel Moll
2014-02-11 17:10 ` [PATCH 11/12] ARM: vexpress: Simplify SMP operations for DT-powered system Pawel Moll
2014-02-11 17:10 ` Pawel Moll
2014-02-11 17:10 ` [PATCH 12/12] ARM: vexpress: move HBI check to sysreg driver Pawel Moll
2014-02-11 17:10 ` Pawel Moll
2014-02-11 19:28 ` [lm-sensors] [PATCH 00/12] Versatile Express updates Arnd Bergmann
2014-02-11 19:28 ` Arnd Bergmann
2014-02-11 19:28 ` Arnd Bergmann
2014-02-12 12:30 ` [lm-sensors] " Pawel Moll
2014-02-12 12:30 ` Pawel Moll
2014-02-12 12:30 ` Pawel Moll
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1392206196.848.18.camel@hornet \
--to=pawel.moll@arm.com \
--cc=arm@kernel.org \
--cc=jdelvare@suse.de \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=lm-sensors@lm-sensors.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.