Allow iio_hwmon to accept hypen in node names
Subsystems (4)
v3 cover Allow iio_hwmon to accept hypen in node names
Hello,
Initial versions of the patchset intended to introduce the use of iio_hwmon for Vybrid SoC's. Currently the iio_hwmon driver has two users and as per the binding documentation, the node names use the underscore. Use of hypen in device tree node names is acceptable, however currently the hwmon core code rejects it due to perhaps user space not liking the hypen and getting confused.
As per Guenter Roeck's suggestion, the first patch looks for a hypen and replaces it with a underscore in the probe call of iio_hwmon driver before calling hwmon_device_register_with_groups for registration. Any users of iio_hwmon driver can now use hypen in the node name.
As per Shawn's suggestion, the existing users have been changed to use the hypen instead of the underscore and the iio-bindings document updated. Third patch introduces the usage for Vybrid itself.
Patchset is based on top of shawn's for-next branch.
Feedbacks and comments most welcome. Thank you for feedbacks.
@Guenter
I hope I understood and implemented correctly what you had in mind.
Sample Output from Toradex Colibri VF50 module
root at colibri-vf:/sys/class/hwmon/hwmon0# ls
device name of_node power subsystem temp1_input temp2_input uevent
root at colibri-vf:/sys/class/hwmon/hwmon0# cat nameiio_hwmon
root at colibri-vf:/sys/class/hwmon/hwmon0# uname -a
Linux colibri-vf 4.5.0-rc1-12868-g88b677c #48 SMP Tue Feb 16 10:05:28 IST 2016 armv7l GNU/Linux
v1:
https://lkml.org/lkml/2015/9/16/932
v2:
https://lkml.org/lkml/2016/2/12/168
Thanks & Regards,
Sanchayan Maity.
Sanchayan Maity (3):
hwmon: iio_hwmon: Allow the driver to accept hypen in device tree node names
ARM: dts: Change iio_hwmon nodes to use hypen in node names
ARM: dts: vfxxx: Add iio_hwmon node for ADC temperature channel
Documentation/devicetree/bindings/iio/iio-bindings.txt | 2 +- arch/arm/boot/dts/imx23.dtsi | 2 +- arch/arm/boot/dts/imx28.dtsi | 2 +- arch/arm/boot/dts/vfxxx.dtsi | 5 +++++ drivers/hwmon/iio_hwmon.c | 11 ++++++++++- 5 files changed, 18 insertions(+), 4 deletions(-)
Signature · 1 line
2.7.1
PATCH v3 1/3 hwmon: iio_hwmon: Allow the driver to accept hypen in device tree node names
Currently the driver calls hwmon_device_register_with_groups which does not accept hypen in node name and returns EINVAL. Use of hypen in device tree node name results in probe failure., however use of hypen in device tree node name is perfectly acceptable.
Change this by allocating a duplicate managed string, replacing hypen with underscore and then calling hwmon_device_register_with_groups. This allows the use of hypen in device tree node name while maintaining backwards compatibility and preventing any possible regressions with user space.
--- drivers/hwmon/iio_hwmon.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-)
drivers/hwmon/iio_hwmon.c +10 -1
@@ -67,6 +67,7 @@ static int iio_hwmon_probe(struct platform_device *pdev)enum iio_chan_type type;struct iio_channel *channels;const char *name ="iio_hwmon" ; +char *sname;if (dev->of_node && dev->of_node->name) name = dev->of_node->name;
@@ -144,7 +145,15 @@ static int iio_hwmon_probe(struct platform_device *pdev) st->attr_group.attrs = st->attrs; st->groups[0 ] = &st->attr_group; - st->hwmon_dev =hwmon_device_register_with_groups (dev, name, st, + + sname =devm_kstrdup (dev, name,GFP_KERNEL ); +if (!sname) { + ret = -ENOMEM ; + goto error_release_channels; + } + +strreplace (sname,'-' ,'_' ); + st->hwmon_dev =hwmon_device_register_with_groups (dev, sname, st, st->groups);if (IS_ERR (st->hwmon_dev)) { ret =PTR_ERR (st->hwmon_dev);
Signature · 1 line
2.7.1
PATCH v3 2/3 ARM: dts: Change iio_hwmon nodes to use hypen in node names
In reply to Sanchayan MaityChange iio_hwmon nodes to use hypen in node names instead of underscore.
--- Documentation/devicetree/bindings/iio/iio-bindings.txt | 2 +- arch/arm/boot/dts/imx23.dtsi | 2 +- arch/arm/boot/dts/imx28.dtsi | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-)
Documentation/devicetree/bindings/iio/iio-bindings.txt +1 -1
@@ -82,7 +82,7 @@ vdd channel is connected to output 0 of the &ref device. ... - iio_hwmon { + iio-hwmon { compatible = "iio-hwmon"; io-channels = <&adc 0>, <&adc 1>, <&adc 2>, <&adc 3>, <&adc 4>, <&adc 5>,
arch/arm/boot/dts/imx23.dtsi +1 -1
@@ -569,7 +569,7 @@ }; }; - iio_hwmon { + iio-hwmon { compatible = "iio-hwmon"; io-channels = <&lradc 8>; };
arch/arm/boot/dts/imx28.dtsi +1 -1
@@ -1256,7 +1256,7 @@ }; }; - iio_hwmon { + iio-hwmon { compatible = "iio-hwmon"; io-channels = <&lradc 8>; };
Signature · 1 line
2.7.1
PATCH v3 3/3 ARM: dts: vfxxx: Add iio_hwmon node for ADC temperature channel
In reply to Sanchayan MaityAdd iio-hwmon node to expose the temperature channel on Vybrid as hardware monitor device using the iio_hwmon driver.
--- arch/arm/boot/dts/vfxxx.dtsi | 5 +++++ 1 file changed, 5 insertions(+)
arch/arm/boot/dts/vfxxx.dtsi +5 -0
@@ -673,5 +673,10 @@ status = "disabled"; }; }; + + iio-hwmon { + compatible = "iio-hwmon"; + io-channels = <&adc0 16>, <&adc1 16>; + }; }; };
Signature · 1 line
2.7.1
Re: [PATCH v3 3/3] ARM: dts: vfxxx: Add iio_hwmon node for ADC temperature channel
Quoted 4 lines · Sanchayan Maity
Add iio-hwmon node to expose the temperature channel on Vybrid as hardware monitor device using the
iio_hwmondriver.Signed-off-by Sanchayan Maity <[email protected]>
Quoted 19 lines
--- arch/arm/boot/dts/vfxxx.dtsi | 5 +++++ 1 file changed, 5 insertions(+)arch/arm/boot/dts/vfxxx.dtsi +5
-0@@ -673,5 +673,10 @@ status = "disabled"; }; }; + + iio-hwmon { + compatible = "iio-hwmon"; + io-channels = <&adc0 16>, <&adc1 16>; + }; }; };
Guenter Roeck
maintainerQuoted 18 lines · Sanchayan Maity
Hello,
Initial versions of the patchset intended to introduce the use of
iio_hwmonfor Vybrid SoC's. Currently theiio_hwmondriver has two users and as per the binding documentation, the node names use the underscore. Use of hypen in device tree node names is acceptable, however currently the hwmon core code rejects it due to perhaps user space not liking the hypen and getting confused.As per Guenter Roeck's suggestion, the first patch looks for a hypen and replaces it with a underscore in the probe call of
iio_hwmondriver before callinghwmon_device_register_with_groupsfor registration. Any users ofiio_hwmondriver can now use hypen in the node name.As per Shawn's suggestion, the existing users have been changed to use the hypen instead of the underscore and the iio-bindings document updated. Third patch introduces the usage for Vybrid itself.
Quoted 7 lines
Patchset is based on top of shawn's for-next branch.
Feedbacks and comments most welcome. Thank you for feedbacks.
@Guenter
I hope I understood and implemented correctly what you had in mind.
Yes.
Series applied to hwmon-next (if the dts changes also end up in an arm branch, no harm done).
Thanks,
Guenter
Rob Herring
maintainerRe: [PATCH v3 2/3] ARM: dts: Change iio_hwmon nodes to use hypen in node names
In reply to Sanchayan MaityQuoted 9 lines · Sanchayan Maity
Change
iio_hwmonnodes to use hypen in node names instead of underscore.Signed-off-by Sanchayan Maity <[email protected]>--- Documentation/devicetree/bindings/iio/iio-bindings.txt | 2 +- arch/arm/boot/dts/imx23.dtsi | 2 +- arch/arm/boot/dts/imx28.dtsi | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-)
No real objection here though I don't think this is really necessary. While we prefer '-' to '_' it's not really strong enough to change. It bothers me more that the node name leaks to userspace.
Rob