device property: Read strings using string array reading functions
authorSakari Ailus <sakari.ailus@linux.intel.com>
Tue, 28 Mar 2017 12:26:22 +0000 (15:26 +0300)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 29 Mar 2017 20:59:40 +0000 (22:59 +0200)
Always read strings using of_property_read_string_array() instead of
of_property_read_string(). This allows using a single operation struct
callback for accessing strings.

Same for pset_prop_read_string_array() and pset_prop_read_string().

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/base/property.c

index 71520454c0380ae472f966d021834e10420f21ea..149de311a10e63fc9636401771365684985f18a3 100644 (file)
@@ -180,31 +180,6 @@ static int pset_prop_read_string_array(struct property_set *pset,
        return array_len;
 }
 
-static int pset_prop_read_string(struct property_set *pset,
-                                const char *propname, const char **strings)
-{
-       const struct property_entry *prop;
-       const char * const *pointer;
-
-       prop = pset_prop_get(pset, propname);
-       if (!prop)
-               return -EINVAL;
-       if (!prop->is_string)
-               return -EILSEQ;
-       if (prop->is_array) {
-               pointer = prop->pointer.str;
-               if (!pointer)
-                       return -ENODATA;
-       } else {
-               pointer = &prop->value.str;
-               if (*pointer && strnlen(*pointer, prop->length) >= prop->length)
-                       return -EILSEQ;
-       }
-
-       *strings = *pointer;
-       return 0;
-}
-
 struct fwnode_handle *dev_fwnode(struct device *dev)
 {
        return IS_ENABLED(CONFIG_OF) && dev->of_node ?
@@ -582,19 +557,6 @@ static int __fwnode_property_read_string_array(struct fwnode_handle *fwnode,
        return -ENXIO;
 }
 
-static int __fwnode_property_read_string(struct fwnode_handle *fwnode,
-                                        const char *propname, const char **val)
-{
-       if (is_of_node(fwnode))
-               return of_property_read_string(to_of_node(fwnode), propname, val);
-       else if (is_acpi_node(fwnode))
-               return acpi_node_prop_read(fwnode, propname, DEV_PROP_STRING,
-                                          val, 1);
-       else if (is_pset_node(fwnode))
-               return pset_prop_read_string(to_pset_node(fwnode), propname, val);
-       return -ENXIO;
-}
-
 /**
  * fwnode_property_read_string_array - return string array property of a node
  * @fwnode: Firmware node to get the property of
@@ -646,13 +608,8 @@ EXPORT_SYMBOL_GPL(fwnode_property_read_string_array);
 int fwnode_property_read_string(struct fwnode_handle *fwnode,
                                const char *propname, const char **val)
 {
-       int ret;
+       int ret = fwnode_property_read_string_array(fwnode, propname, val, 1);
 
-       ret = __fwnode_property_read_string(fwnode, propname, val);
-       if (ret == -EINVAL && !IS_ERR_OR_NULL(fwnode) &&
-           !IS_ERR_OR_NULL(fwnode->secondary))
-               ret = __fwnode_property_read_string(fwnode->secondary,
-                                                   propname, val);
        return ret < 0 ? ret : 0;
 }
 EXPORT_SYMBOL_GPL(fwnode_property_read_string);