|
Jiri Slaby |
c769f2 |
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
|
|
Jiri Slaby |
c769f2 |
Date: Wed, 18 Jan 2023 12:06:23 +0200
|
|
Jiri Slaby |
c769f2 |
Subject: [PATCH] iio: adc: qcom-spmi-adc5: Fix the channel name
|
|
Jiri Slaby |
c769f2 |
References: bsc#1012628
|
|
Jiri Slaby |
c769f2 |
Patch-mainline: 6.2.11
|
|
Jiri Slaby |
c769f2 |
Git-commit: 701c875aded880013aacac608832995c4b052257
|
|
Jiri Slaby |
c769f2 |
|
|
Jiri Slaby |
c769f2 |
commit 701c875aded880013aacac608832995c4b052257 upstream.
|
|
Jiri Slaby |
c769f2 |
|
|
Jiri Slaby |
c769f2 |
The node name can contain an address part which is unused
|
|
Jiri Slaby |
c769f2 |
by the driver. Moreover, this string is propagated into
|
|
Jiri Slaby |
c769f2 |
the userspace label, sysfs filenames *and breaking ABI*.
|
|
Jiri Slaby |
c769f2 |
|
|
Jiri Slaby |
c769f2 |
Cut the address part out before assigning the channel name.
|
|
Jiri Slaby |
c769f2 |
|
|
Jiri Slaby |
c769f2 |
Fixes: 4f47a236a23d ("iio: adc: qcom-spmi-adc5: convert to device properties")
|
|
Jiri Slaby |
c769f2 |
Reported-by: Marijn Suijten <marijn.suijten@somainline.org>
|
|
Jiri Slaby |
c769f2 |
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
|
|
Jiri Slaby |
c769f2 |
Reviewed-by: Marijn Suijten <marijn.suijten@somainline.org>
|
|
Jiri Slaby |
c769f2 |
Link: https://lore.kernel.org/r/20230118100623.42255-1-andriy.shevchenko@linux.intel.com
|
|
Jiri Slaby |
c769f2 |
Cc: <Stable@vger.kernel.org>
|
|
Jiri Slaby |
c769f2 |
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
|
|
Jiri Slaby |
c769f2 |
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
Jiri Slaby |
c769f2 |
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
|
|
Jiri Slaby |
c769f2 |
---
|
|
Jiri Slaby |
c769f2 |
drivers/iio/adc/qcom-spmi-adc5.c | 10 +++++++++-
|
|
Jiri Slaby |
c769f2 |
1 file changed, 9 insertions(+), 1 deletion(-)
|
|
Jiri Slaby |
c769f2 |
|
|
Jiri Slaby |
c769f2 |
diff --git a/drivers/iio/adc/qcom-spmi-adc5.c b/drivers/iio/adc/qcom-spmi-adc5.c
|
|
Jiri Slaby |
c769f2 |
index 821fee60..d1b86570 100644
|
|
Jiri Slaby |
c769f2 |
--- a/drivers/iio/adc/qcom-spmi-adc5.c
|
|
Jiri Slaby |
c769f2 |
+++ b/drivers/iio/adc/qcom-spmi-adc5.c
|
|
Jiri Slaby |
c769f2 |
@@ -626,12 +626,20 @@ static int adc5_get_fw_channel_data(struct adc5_chip *adc,
|
|
Jiri Slaby |
c769f2 |
struct fwnode_handle *fwnode,
|
|
Jiri Slaby |
c769f2 |
const struct adc5_data *data)
|
|
Jiri Slaby |
c769f2 |
{
|
|
Jiri Slaby |
c769f2 |
- const char *name = fwnode_get_name(fwnode), *channel_name;
|
|
Jiri Slaby |
c769f2 |
+ const char *channel_name;
|
|
Jiri Slaby |
c769f2 |
+ char *name;
|
|
Jiri Slaby |
c769f2 |
u32 chan, value, varr[2];
|
|
Jiri Slaby |
c769f2 |
u32 sid = 0;
|
|
Jiri Slaby |
c769f2 |
int ret;
|
|
Jiri Slaby |
c769f2 |
struct device *dev = adc->dev;
|
|
Jiri Slaby |
c769f2 |
|
|
Jiri Slaby |
c769f2 |
+ name = devm_kasprintf(dev, GFP_KERNEL, "%pfwP", fwnode);
|
|
Jiri Slaby |
c769f2 |
+ if (!name)
|
|
Jiri Slaby |
c769f2 |
+ return -ENOMEM;
|
|
Jiri Slaby |
c769f2 |
+
|
|
Jiri Slaby |
c769f2 |
+ /* Cut the address part */
|
|
Jiri Slaby |
c769f2 |
+ name[strchrnul(name, '@') - name] = '\0';
|
|
Jiri Slaby |
c769f2 |
+
|
|
Jiri Slaby |
c769f2 |
ret = fwnode_property_read_u32(fwnode, "reg", &chan);
|
|
Jiri Slaby |
c769f2 |
if (ret) {
|
|
Jiri Slaby |
c769f2 |
dev_err(dev, "invalid channel number %s\n", name);
|
|
Jiri Slaby |
c769f2 |
--
|
|
Jiri Slaby |
c769f2 |
2.35.3
|
|
Jiri Slaby |
c769f2 |
|