Skip to contentSkip to conversation

Allow iio_hwmon to accept hypen in node names

PATCH In review Sanchayan Maity 4 participants 7 messages Feb 16, 2016 – Feb 22, 2016

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

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 name
iio_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
#1 lore raw

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
index 17ae2eb..b550ba5 100644
@@ -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
#2 lore raw

PATCH v3 2/3 ARM: dts: Change iio_hwmon nodes to use hypen in node names

In reply to Sanchayan Maity

Change 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
index 0b447d9..68d6f8c 100644
@@ -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
index 1c6c075..302d116 100644
@@ -569,7 +569,7 @@
 		};
 	};
 
-	iio_hwmon {
+	iio-hwmon {
 		compatible = "iio-hwmon";
 		io-channels = <&lradc 8>;
 	};
arch/arm/boot/dts/imx28.dtsi +1 -1
index fae7b90..f637ec9 100644
@@ -1256,7 +1256,7 @@
 		};
 	};
 
-	iio_hwmon {
+	iio-hwmon {
 		compatible = "iio-hwmon";
 		io-channels = <&lradc 8>;
 	};
Signature · 1 line
2.7.1
#4 lore raw

PATCH v3 3/3 ARM: dts: vfxxx: Add iio_hwmon node for ADC temperature channel

In reply to Sanchayan Maity

Add 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
index a5f07e3..24ac5b1 100644
@@ -673,5 +673,10 @@
 				status = "disabled";
 			};
 		};
+
+		iio-hwmon {
+			compatible = "iio-hwmon";
+			io-channels = <&adc0 16>, <&adc1 16>;
+		};
 	};
 };
Signature · 1 line
2.7.1
Acked-by on v3 3/3
#5 lore raw

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_hwmon driver.

Quoted 19 lines
---
 arch/arm/boot/dts/vfxxx.dtsi | 5 +++++
 1 file changed, 5 insertions(+)
arch/arm/boot/dts/vfxxx.dtsi +5 -0
index a5f07e3..24ac5b1 100644
@@ -673,5 +673,10 @@
 				status = "disabled";
 			};
 		};
+
+		iio-hwmon {
+			compatible = "iio-hwmon";
+			io-channels = <&adc0 16>, <&adc1 16>;
+		};
 	};
 };
maintainer
#6 lore raw
In reply to Sanchayan Maity
Quoted 18 lines · Sanchayan Maity

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.

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

maintainer
#3 lore raw

Re: [PATCH v3 2/3] ARM: dts: Change iio_hwmon nodes to use hypen in node names

In reply to Sanchayan Maity
Quoted 9 lines · Sanchayan Maity

Change 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(-)

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