Hi Rob, > On Oct 21, 2015, at 00:04 , Rob Herring <robherring2@xxxxxxxxx> wrote: > > On Tue, Oct 20, 2015 at 2:13 PM, Pantelis Antoniou > <pantelis.antoniou@xxxxxxxxxxxx> wrote: >> * A per overlay can_remove sysfs attribute that reports whether >> the overlay can be removed or not due to another overlapping overlay. >> >> * A target sysfs attribute listing the target of each fragment, >> in a group named after the name of the fragment. >> >> Signed-off-by: Pantelis Antoniou <pantelis.antoniou@xxxxxxxxxxxx> >> --- >> drivers/of/overlay.c | 103 +++++++++++++++++++++++++++++++++++++++++++++++++-- >> 1 file changed, 99 insertions(+), 4 deletions(-) >> >> diff --git a/drivers/of/overlay.c b/drivers/of/overlay.c >> index 067404e..2d51d9e2 100644 >> --- a/drivers/of/overlay.c >> +++ b/drivers/of/overlay.c >> @@ -25,8 +25,23 @@ >> >> #include "of_private.h" >> >> +/* fwd. decl */ >> +struct of_overlay; >> +struct of_overlay_info; >> + >> +/* an attribute for each fragment */ >> +struct fragment_attribute { >> + struct attribute attr; >> + ssize_t (*show)(struct kobject *kobj, struct fragment_attribute *fattr, >> + char *buf); >> + ssize_t (*store)(struct kobject *kobj, struct fragment_attribute *fattr, >> + const char *buf, size_t count); >> + struct of_overlay_info *ovinfo; >> +}; >> + >> /** >> * struct of_overlay_info - Holds a single overlay info >> + * @info: info node that contains the target and overlay >> * @target: target of the overlay operation >> * @overlay: pointer to the overlay contents node >> * >> @@ -34,8 +49,13 @@ >> * records. >> */ >> struct of_overlay_info { >> + struct of_overlay *ov; >> + struct device_node *info; >> struct device_node *target; >> struct device_node *overlay; >> + struct attribute_group attr_group; >> + struct attribute *attrs[2]; >> + struct fragment_attribute target_attr; >> }; >> >> /** >> @@ -52,6 +72,7 @@ struct of_overlay { >> struct list_head node; >> int count; >> struct of_overlay_info *ovinfo_tab; >> + const struct attribute_group **attr_groups; >> struct of_changeset cset; >> struct kobject kobj; >> }; >> @@ -245,6 +266,8 @@ static int of_fill_overlay_info(struct of_overlay *ov, >> if (ovinfo->target == NULL) >> goto err_fail; >> >> + ovinfo->info = of_node_get(info_node); >> + >> return 0; >> >> err_fail: >> @@ -255,6 +278,17 @@ err_fail: >> return -EINVAL; >> } >> >> +static ssize_t target_show(struct kobject *kobj, >> + struct fragment_attribute *fattr, char *buf) >> +{ >> + struct of_overlay_info *ovinfo = fattr->ovinfo; >> + >> + return snprintf(buf, PAGE_SIZE, "%s\n", >> + of_node_full_name(ovinfo->target)); > > This can be a link to the node itself, can't it? > Yes. Do you want it like this? > Rob Regards — Pantelis -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html