[PATCH 1/1] of: introduce helper to manage boolean
Jean-Christophe PLAGNIOL-VILLARD
plagnioj at jcrosoft.com
Fri Mar 9 11:36:08 EST 2012
> > > > +int of_property_read_bool(const struct device_node *np, const char *propname)
> > > > +{
> > > > + u32 reg;
> > > > + int ret = of_property_read_u32(np, propname, ®);
> > > > +
> > > > + switch (ret) {
> > > > + case -EINVAL:
> > > > + return false;
> > > > + case -ENODATA:
> > > > + return true;
> > > > + case 0:
> > > > + return reg == 1;
> > >
> > > Ugh. so any value other than 1 returns false? I think that will surprise
> > > most people.
> > >
> > > I don't like this api or binding. If it is a bool property, then why isn't
> > > simply testing for the property existance sufficient?
> > no if you want to disable it
> >
> > if a bool is define in the dtsi and want to disable it int the dts
> >
> > if you we can do the the invert
> >
> > if !0 => true
> >
> > is-ok; => true
> > is-ok = <val != 0>; => true
> > is-ok = <0>; => false
>
> This is a failure of the dtc tool, not the binding. Accepting this binding
> means we have to live with it for a very long time. It needs to be fixed
> in dtc instead so that properties can be deleted instead of only modified.
I understand your idea but today if you put and value in the property it's true.
So is-ok = <0>; is true also which is illogical as in any language a boolean is
true (1) or false (0). When I read the property I will understand false not true
And I see no good way to add the "delete" in dtc.
Best Regards,
J.
More information about the linux-arm-kernel
mailing list