Re: [PATCH] livetree: add missing type markers in generated overlay properties

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



On Fri, May 17, 2019 at 2:28 PM Rob Herring <robh@xxxxxxxxxx> wrote:
>
> The YAML output fails for overlays and when symbol generation are enabled
> due to missing markers in the generated properties.
>
> Add type markers when generating properties under '__symbols__' and
> '__fixups__' nodes as well as target-path properties. As a side effect of
> append_to_property() changes, this also sets type markers in
> '__local_fixups__' node properties.
>
> Signed-off-by: Rob Herring <robh@xxxxxxxxxx>
> ---
>  dtc.h      |  3 ++-
>  livetree.c | 18 +++++++++++-------
>  2 files changed, 13 insertions(+), 8 deletions(-)

Ping.

>
> diff --git a/dtc.h b/dtc.h
> index 789e0b1bc057..0d5fa215ac87 100644
> --- a/dtc.h
> +++ b/dtc.h
> @@ -231,7 +231,8 @@ void add_child(struct node *parent, struct node *child);
>  void delete_node_by_name(struct node *parent, char *name);
>  void delete_node(struct node *node);
>  void append_to_property(struct node *node,
> -                       char *name, const void *data, int len);
> +                       char *name, const void *data, int len,
> +                       enum markertype type);
>
>  const char *get_unitname(struct node *node);
>  struct property *get_property(struct node *node, const char *propname);
> diff --git a/livetree.c b/livetree.c
> index 7a2e6446a17b..a18529f7474b 100644
> --- a/livetree.c
> +++ b/livetree.c
> @@ -249,6 +249,7 @@ struct node * add_orphan_node(struct node *dt, struct node *new_node, char *ref)
>         char *name;
>
>         if (ref[0] == '/') {
> +               d = data_add_marker(d, TYPE_STRING, ref);
>                 d = data_append_data(d, ref, strlen(ref) + 1);
>
>                 p = build_property("target-path", d, NULL);
> @@ -350,17 +351,20 @@ void delete_node(struct node *node)
>  }
>
>  void append_to_property(struct node *node,
> -                                   char *name, const void *data, int len)
> +                       char *name, const void *data, int len,
> +                       enum markertype type)
>  {
>         struct data d;
>         struct property *p;
>
>         p = get_property(node, name);
>         if (p) {
> -               d = data_append_data(p->val, data, len);
> +               d = data_add_marker(p->val, type, name);
> +               d = data_append_data(d, data, len);
>                 p->val = d;
>         } else {
> -               d = data_append_data(empty_data, data, len);
> +               d = data_add_marker(empty_data, type, name);
> +               d = data_append_data(d, data, len);
>                 p = build_property(name, d, NULL);
>                 add_property(node, p);
>         }
> @@ -858,8 +862,8 @@ static void generate_label_tree_internal(struct dt_info *dti,
>
>                         /* insert it */
>                         p = build_property(l->label,
> -                               data_copy_mem(node->fullpath,
> -                                               strlen(node->fullpath) + 1),
> +                               data_copy_escape_string(node->fullpath,
> +                                               strlen(node->fullpath)),
>                                 NULL);
>                         add_property(an, p);
>                 }
> @@ -910,7 +914,7 @@ static void add_fixup_entry(struct dt_info *dti, struct node *fn,
>
>         xasprintf(&entry, "%s:%s:%u",
>                         node->fullpath, prop->name, m->offset);
> -       append_to_property(fn, m->ref, entry, strlen(entry) + 1);
> +       append_to_property(fn, m->ref, entry, strlen(entry) + 1, TYPE_STRING);
>
>         free(entry);
>  }
> @@ -993,7 +997,7 @@ static void add_local_fixup_entry(struct dt_info *dti,
>         free(compp);
>
>         value_32 = cpu_to_fdt32(m->offset);
> -       append_to_property(wn, prop->name, &value_32, sizeof(value_32));
> +       append_to_property(wn, prop->name, &value_32, sizeof(value_32), TYPE_UINT32);
>  }
>
>  static void generate_local_fixups_tree_internal(struct dt_info *dti,
> --
> 2.20.1
>



[Index of Archives]     [Device Tree]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux