summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSanchayan Maity <maitysanchayan@gmail.com>2016-02-16 10:30:53 +0530
committerGuenter Roeck <linux@roeck-us.net>2016-03-05 06:25:34 -0800
commitb92fe9e3379c8dc885eefb254c3da94c13cc1b6d (patch)
treeaf7bf92e2bc14b18dad64957c90a035f3deaa6f3
parentdf922703574ebe9035045f7c7242a0ec0e11b980 (diff)
downloadop-kernel-dev-b92fe9e3379c8dc885eefb254c3da94c13cc1b6d.zip
op-kernel-dev-b92fe9e3379c8dc885eefb254c3da94c13cc1b6d.tar.gz
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. Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
-rw-r--r--drivers/hwmon/iio_hwmon.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/hwmon/iio_hwmon.c b/drivers/hwmon/iio_hwmon.c
index 17ae2eb..b550ba5 100644
--- a/drivers/hwmon/iio_hwmon.c
+++ b/drivers/hwmon/iio_hwmon.c
@@ -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);
OpenPOWER on IntegriCloud