return of_changeset_add_prop_helper(ocs, np, &prop);
 }
 EXPORT_SYMBOL_GPL(of_changeset_add_prop_bool);
+
+static int of_changeset_update_prop_helper(struct of_changeset *ocs,
+                                          struct device_node *np,
+                                          const struct property *pp)
+{
+       struct property *new_pp;
+       int ret;
+
+       new_pp = __of_prop_dup(pp, GFP_KERNEL);
+       if (!new_pp)
+               return -ENOMEM;
+
+       ret = of_changeset_update_property(ocs, np, new_pp);
+       if (ret)
+               __of_prop_free(new_pp);
+
+       return ret;
+}
+
+/**
+ * of_changeset_update_prop_string - Add a string property update to a changeset
+ *
+ * @ocs:       changeset pointer
+ * @np:                device node pointer
+ * @prop_name: name of the property to be updated
+ * @str:       pointer to null terminated string
+ *
+ * Create a string property to be updated and add it to a changeset.
+ *
+ * Return: 0 on success, a negative error value in case of an error.
+ */
+int of_changeset_update_prop_string(struct of_changeset *ocs,
+                                   struct device_node *np,
+                                   const char *prop_name, const char *str)
+{
+       struct property prop = {
+               .name = (char *)prop_name,
+               .length = strlen(str) + 1,
+               .value = (void *)str,
+       };
+
+       return of_changeset_update_prop_helper(ocs, np, &prop);
+}
+EXPORT_SYMBOL_GPL(of_changeset_update_prop_string);
 
        return of_changeset_add_prop_u32_array(ocs, np, prop_name, &val, 1);
 }
 
+int of_changeset_update_prop_string(struct of_changeset *ocs,
+                                   struct device_node *np,
+                                   const char *prop_name, const char *str);
+
 int of_changeset_add_prop_bool(struct of_changeset *ocs, struct device_node *np,
                               const char *prop_name);