ALSA: aoa: Remove direct OF name and type accesses
authorRob Herring <robh@kernel.org>
Wed, 5 Dec 2018 19:50:48 +0000 (13:50 -0600)
committerTakashi Iwai <tiwai@suse.de>
Thu, 6 Dec 2018 09:54:28 +0000 (10:54 +0100)
Convert soundbus uevent and sysfs OF node name and device type usage to
use printf specifier and helper functions instead of directly accessing
the name and type pointers. This will allow the eventual removal of the
pointers.

Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/aoa/soundbus/core.c
sound/aoa/soundbus/sysfs.c

index f3076a3f7f2fc562c420aa01961d7889d4627499..065d3a55725edf3aa42fdfaed1667ba712c149c0 100644 (file)
@@ -74,7 +74,7 @@ static int soundbus_uevent(struct device *dev, struct kobj_uevent_env *env)
        of = &soundbus_dev->ofdev;
 
        /* stuff we want to pass to /sbin/hotplug */
-       retval = add_uevent_var(env, "OF_NAME=%s", of->dev.of_node->name);
+       retval = add_uevent_var(env, "OF_NAME=%pOFn", of->dev.of_node);
        if (retval)
                return retval;
 
index 81da020bddef6ddbfc2d056361302bb36233f0fd..a2d55e15afbb8a6754fab387bae16cc7be064beb 100644 (file)
@@ -1,18 +1,10 @@
 // SPDX-License-Identifier: GPL-2.0
 #include <linux/kernel.h>
+#include <linux/of.h>
 #include <linux/stat.h>
 /* FIX UP */
 #include "soundbus.h"
 
-#define soundbus_config_of_attr(field, format_string)                  \
-static ssize_t                                                         \
-field##_show (struct device *dev, struct device_attribute *attr,       \
-              char *buf)                                               \
-{                                                                      \
-       struct soundbus_dev *mdev = to_soundbus_device (dev);           \
-       return sprintf (buf, format_string, mdev->ofdev.dev.of_node->field); \
-}
-
 static ssize_t modalias_show(struct device *dev, struct device_attribute *attr,
                             char *buf)
 {
@@ -25,17 +17,33 @@ static ssize_t modalias_show(struct device *dev, struct device_attribute *attr,
                strcat(buf, "\n");
                length = strlen(buf);
        } else {
-               length = sprintf(buf, "of:N%sT%s\n",
-                                of->dev.of_node->name, of->dev.of_node->type);
+               length = sprintf(buf, "of:N%pOFn%c%s\n",
+                                of->dev.of_node, 'T',
+                                 of_node_get_device_type(of->dev.of_node));
        }
 
        return length;
 }
 static DEVICE_ATTR_RO(modalias);
 
-soundbus_config_of_attr (name, "%s\n");
+static ssize_t name_show(struct device *dev,
+                        struct device_attribute *attr, char *buf)
+{
+       struct soundbus_dev *sdev = to_soundbus_device(dev);
+       struct platform_device *of = &sdev->ofdev;
+
+       return sprintf(buf, "%pOFn\n", of->dev.of_node);
+}
 static DEVICE_ATTR_RO(name);
-soundbus_config_of_attr (type, "%s\n");
+
+static ssize_t type_show(struct device *dev,
+                        struct device_attribute *attr, char *buf)
+{
+       struct soundbus_dev *sdev = to_soundbus_device(dev);
+       struct platform_device *of = &sdev->ofdev;
+
+       return sprintf(buf, "%s\n", of_node_get_device_type(of->dev.of_node));
+}
 static DEVICE_ATTR_RO(type);
 
 struct attribute *soundbus_dev_attrs[] = {