Hi Scott,<br><br><div class="gmail_quote">On Tue, Jul 10, 2012 at 11:23 PM, Scott Wood <span dir="ltr"><<a href="mailto:scottwood@freescale.com" target="_blank">scottwood@freescale.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">On 07/10/2012 07:10 AM, Simon Glass wrote:<br>
> Hi,<br>
><br>
> On Tue, Mar 13, 2012 at 5:16 AM, Grant Likely <<a href="mailto:grant.likely@secretlab.ca">grant.likely@secretlab.ca</a><br>
</div><div class="im">> <mailto:<a href="mailto:grant.likely@secretlab.ca">grant.likely@secretlab.ca</a>>> wrote:<br>
><br>
>     On Tue, 13 Mar 2012 04:17:39 +0100, Jean-Christophe PLAGNIOL-VILLARD<br>
</div><div><div class="h5">>     <<a href="mailto:plagnioj@jcrosoft.com">plagnioj@jcrosoft.com</a> <mailto:<a href="mailto:plagnioj@jcrosoft.com">plagnioj@jcrosoft.com</a>>> wrote:<br>
>     > On 14:39 Mon 12 Mar     , Scott Wood wrote:<br>
>     > > On 03/09/2012 10:36 AM, Jean-Christophe PLAGNIOL-VILLARD wrote:<br>
>     > > >>>> Ugh.  so any value other than 1 returns false?  I think<br>
>     that will surprise<br>
>     > > >>>> most people.<br>
>     > > >>>><br>
>     > > >>>> I don't like this api or binding.  If it is a bool<br>
>     property, then why isn't<br>
>     > > >>>> simply testing for the property existance sufficient?<br>
>     > > >>> no if you want to disable it<br>
>     > > >>><br>
>     > > >>> if a bool is define in the dtsi and want to disable it int<br>
>     the dts<br>
>     > > >>><br>
>     > > >>> if you we can do the the invert<br>
>     > > >>><br>
>     > > >>> if !0 => true<br>
>     > > >>><br>
>     > > >>> is-ok;                  => true<br>
>     > > >>> is-ok = <val != 0>;     => true<br>
>     > > >>> is-ok = <0>;            => false<br>
>     > > >><br>
>     > > >> This is a failure of the dtc tool, not the binding.<br>
>      Accepting this binding<br>
>     > > >> means we have to live with it for a very long time.  It needs<br>
>     to be fixed<br>
>     > > >> in dtc instead so that properties can be deleted instead of<br>
>     only modified.<br>
>     > > > I understand your idea but today if you put and value in the<br>
>     property it's true.<br>
>     > > ><br>
>     > > > So is-ok = <0>; is true also which is illogical as in any<br>
>     language a boolean is<br>
>     > > > true (1) or false (0). When I read the property I will<br>
>     understand false not true<br>
>     > ><br>
>     > > You could say similar things about is-ok = "no" or is-ok = "" or<br>
>     is-ok =<br>
>     > > "I'd rather you didn't"... it's expected that violating the<br>
>     binding may<br>
>     > > produce illogical results.<br>
>     > today is most of the binding people use a number whe the want to<br>
>     be able to<br>
>     > delete it and it's the same in most of the promgramming language<br>
><br>
>     It isn't yet a big pain point, so there isn't time pressure here.<br>
>      Fixing the tool<br>
>     is the better solution, and since the kernel carries a copy of the<br>
>     tool we don't<br>
>     need to worry about adding a feature that isn't available by the dtc<br>
>     packaged by<br>
>     a distribution.<br>
><br>
>     Fixing the tool is the correct thing to do.<br>
><br>
><br>
> I just wanted to pick up on this thread. Now in the kernel, absence of a<br>
> property indicates false, and presence indicates true. This is a kernel<br>
> convention, nothing to do with the dtb format.<br>
<br>
</div></div>It's an aspect of the device binding, and was used by Open Firmware<br>
bindings before Linux came up with flat device trees.<br></blockquote><div><br></div><div>OK. When I asked about the boolean property on the devicetree-discuss I understood that no one really cared, and it was a matter for Linux.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Also note that even non-boolean properties can mean something different<br>
when absent.  Sometimes this is a default value; sometimes, like with<br>
"ranges", it's something that can't be expressed with any value (empty<br>
ranges means all translations go straight through; no ranges means no<br>
translation is possible).<br></blockquote><div><br></div><div>That's fine, but I'm not sure I understand why that relates to boolean properties, which currently mean always the same thing (false) when absent. I don't think there is any intent to change that.</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im"><br>
> I think it is useful to<br>
> support a boolean with a non-null value which can be 0, meaning true as<br>
> Jean-Christophe says.<br>
><br>
> My reasons are:<br>
><br>
> 1. dtc does not have a way to delete a property and it isn't clear what<br>
> syntax could be used there.<br>
<br>
</div>Surely some syntax can be created for this.  E.g. /delete-prop/ foo;<br></blockquote><div><br></div><div>Yes, in fact I saw a patch after sending this email. So for normal values to change the value we do</div><div>
<br></div><div>   prop = <23>;</div><div><br></div><div>but for booleans we must do EITHER:</div><div><br></div><div>   bool;</div><div><br></div><div>or</div><div><br></div><div>   /delete-prop/ bool;</div><div><br>
</div><div>depending on whether we want the make it true or false? Ick.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im"><br>
> It also seems a little brittle to delete a<br>
> property in one place and define it in another (ordering? confusion when<br>
> people can't work out why it has gone?). So not only can dtc not do<br>
> this, but I'm not sure that it should.<br>
<br>
</div>I don't see how it's worse than defining it one place and then<br>
redefining it elsewhere.<br></blockquote><div><br></div><div>It seems worse to me, see above. Also if we end up with symbols it will be impossible to do something like:</div><div><br></div><div>   bool-property = <WIBBLE_VALUE>;</div>
<div><br></div><div>You will have to do:</div><div><br></div><div>if WIBBLE_VALUE == 0</div><div>  /delete-prop/ bool-property;</div><div>#else</div><div>  bool-property;</div><div>#endif</div><div><br></div><div>or whatever, or maybe I got that around the wrong way.... Not nice IMO.</div>
<div><br></div><div>(any comments on point 2?)</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im"><br>
> 3. Discoverability: it is nice to be able to see the possible options,<br>
> even if disabled.<br>
<br>
</div>This assumes the possible options were known in advance, or that you<br>
don't maintain compatibility with old device trees when a new option is<br>
added.<br></blockquote><div><br></div><div>You can still add the option with a zero value - or maybe I misunderstand what you mean.</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="im"><br>
> In particular, if a boolean value is true, and you<br>
> later decide with fdtput to turn it off, you effectively remove all<br>
> trace of it. This could be confusing for those who are looking for<br>
> available options.<br>
<br>
</div>There should still be a "trace of it" in the binding document.<br></blockquote><div><br></div><div>Yes true, that's the saving grace.</div><div><br></div><div>I'm not even saying that we ever use</div>
<div><br></div><div>   bool-prop = <1>;</div><div><br></div><div>Clearly that is redundant. I'm just agreeing with Jean-Chrstophe that it would be nice and clean to do something like:</div><div><br></div><div>   bool-prop = <0>;</div>
<div><br></div><div>and it will make it false.</div><div><br></div><div>Regards,</div><div>Simon</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span class="HOEnZb"><font color="#888888"><br>
-Scott<br>
<br>
</font></span></blockquote></div><br>