On Wed, Sep 16, 2015 at 11:09 AM, Pantelis Antoniou <pantelis.antoniou@xxxxxxxxxxxx> wrote: > The two default overlay attributes are: > > * A targets sysfs attribute listing the targets of the installed > overlay. The targets list the path on the kernel's device tree > where each overlay fragment is applied to > > * A per overlay can_remove sysfs attribute that reports whether > the overlay can be removed or not due to another overlapping overlay. > > Signed-off-by: Pantelis Antoniou <pantelis.antoniou@xxxxxxxxxxxx> > --- How about an answer to my v4 questions? Rob > drivers/of/overlay.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 53 insertions(+) > > diff --git a/drivers/of/overlay.c b/drivers/of/overlay.c > index 62cfb99..cff3c05 100644 > --- a/drivers/of/overlay.c > +++ b/drivers/of/overlay.c > @@ -373,8 +373,61 @@ static const struct attribute *overlay_global_attrs[] = { > NULL > }; > > +static ssize_t can_remove_show(struct kobject *kobj, > + struct kobj_attribute *attr, char *buf) > +{ > + struct of_overlay *ov = kobj_to_overlay(kobj); > + > + return snprintf(buf, PAGE_SIZE, "%d\n", overlay_removal_is_ok(ov)); > +} > + > +static ssize_t targets_show(struct kobject *kobj, > + struct kobj_attribute *attr, char *buf) > +{ > + struct of_overlay *ov = kobj_to_overlay(kobj); > + struct of_overlay_info *ovinfo; > + char *s, *e; > + ssize_t ret; > + int i, len; > + > + s = buf; > + e = buf + PAGE_SIZE; > + > + mutex_lock(&of_mutex); > + > + /* targets */ > + for (i = 0; i < ov->count; i++) { > + ovinfo = &ov->ovinfo_tab[i]; > + > + len = snprintf(s, e - s, "%s\n", > + of_node_full_name(ovinfo->target)); > + if (len == 0) { > + ret = -ENOSPC; > + goto err; > + } > + s += len; > + } > + > + /* the buffer is zero terminated */ > + ret = s - buf; > +err: > + mutex_unlock(&of_mutex); > + return ret; > +} > + > +static struct kobj_attribute can_remove_attr = __ATTR_RO(can_remove); > +static struct kobj_attribute targets_attr = __ATTR_RO(targets); > + > +static struct attribute *overlay_attrs[] = { > + &can_remove_attr.attr, > + &targets_attr.attr, > + NULL > +}; > + > static struct kobj_type of_overlay_ktype = { > .release = of_overlay_release, > + .sysfs_ops = &kobj_sysfs_ops, /* default kobj sysfs ops */ > + .default_attrs = overlay_attrs, > }; > > static struct kset *ov_kset; > -- > 1.7.12 > -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html