linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH] iio: core: provide a default value `label` property
@ 2022-02-16 13:56 Nandor Han
  2022-02-20 13:18 ` Jonathan Cameron
  0 siblings, 1 reply; 6+ messages in thread
From: Nandor Han @ 2022-02-16 13:56 UTC (permalink / raw)
  To: jic23, lars, linux-iio; +Cc: Nandor Han, linux-kernel

The label property is used to correctly identify the same IIO device
over reboots. The implementation requires that a value will be provided
through device-tree. This sometime could requires many changes to
device-trees when multiple devices want to use the label property.
In order to prevent this, we could use the device-tree node
name as default value. The device-tree node name is unique and
also reflects the device which makes it a good choice as default value.
This change is backward compatible since doesn't affect the users that
do configure a label using the device-tree or the ones that are not
using the labels at all.

Use the device-tree node name as a default value for `label` property,
in case there isn't one configured through device-tree.

Signed-off-by: Nandor Han <nandor.han@vaisala.com>
---

Notes:
    Testing
    -------
    Using mx6sxsabresd dev board with device-tree:
    ```
    &adc1 {
        vref-supply = <&reg_vref_3v3>;
        label = "adc1";
        status = "okay";
    };
    
    &adc2 {
        vref-supply = <&reg_vref_3v3>;
        status = "okay";
    };
    ```
    1. Verify that label property is visible and readable:PASS
    > iio:device0 # ls -la label
    -r--r--r--    1 root     root          4096 Jan  1 00:00 label
    > iio:device0 # cat label
    adc1
    ```
    2. Verify that default label property is used for adc2 device: PASS
    ```
    > iio:device1 # cat label
    adc@2284000
    ```

 drivers/iio/industrialio-core.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
index e1ed44dec2ab..bd26df90ce41 100644
--- a/drivers/iio/industrialio-core.c
+++ b/drivers/iio/industrialio-core.c
@@ -1895,6 +1895,7 @@ int __iio_device_register(struct iio_dev *indio_dev, struct module *this_mod)
 {
 	struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
 	const char *label;
+	const char *node_name;
 	int ret;
 
 	if (!indio_dev->info)
@@ -1906,8 +1907,13 @@ int __iio_device_register(struct iio_dev *indio_dev, struct module *this_mod)
 		indio_dev->dev.of_node = indio_dev->dev.parent->of_node;
 
 	label = of_get_property(indio_dev->dev.of_node, "label", NULL);
-	if (label)
+	if (label) {
 		indio_dev->label = label;
+	} else {
+		node_name = of_node_full_name(indio_dev->dev.of_node);
+		if (node_name)
+			indio_dev->label = node_name;
+	}
 
 	ret = iio_check_unique_scan_index(indio_dev);
 	if (ret < 0)
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-02-23  9:26 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-02-16 13:56 [RFC PATCH] iio: core: provide a default value `label` property Nandor Han
2022-02-20 13:18 ` Jonathan Cameron
2022-02-20 13:50   ` Lars-Peter Clausen
2022-02-22  7:42   ` Nandor Han
2022-02-22 16:36     ` Jonathan Cameron
2022-02-23  9:26       ` Nandor Han

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).