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 ?
        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
 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);