[PATCH 1/1] of: introduce helper to manage boolean
Simon Glass
sjg at chromium.org
Thu Jul 12 01:27:50 EDT 2012
Hi Scott,
On Wed, Jul 11, 2012 at 1:11 AM, Scott Wood <scottwood at freescale.com> wrote:
> On 07/10/2012 05:53 PM, Simon Glass wrote:
>> Hi Scott,
>>
>> On Tue, Jul 10, 2012 at 11:23 PM, Scott Wood <scottwood at freescale.com
>> <mailto:scottwood at freescale.com>> wrote:
>>
>> Also note that even non-boolean properties can mean something different
>> when absent. Sometimes this is a default value; sometimes, like with
>> "ranges", it's something that can't be expressed with any value (empty
>> ranges means all translations go straight through; no ranges means no
>> translation is possible).
>>
>>
>> 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.
>
> The point was this isn't the only scenario where the absence of a
> property means something, and where you might want to delete the property.
OK I see. We don't have that option for booleans, since absence will
always mean false.
>
>> > I think it is useful to
>> > support a boolean with a non-null value which can be 0, meaning
>> true as
>> > Jean-Christophe says.
>> >
>> > My reasons are:
>> >
>> > 1. dtc does not have a way to delete a property and it isn't clear
>> what
>> > syntax could be used there.
>>
>> Surely some syntax can be created for this. E.g. /delete-prop/ foo;
>>
>>
>> Yes, in fact I saw a patch after sending this email. So for normal
>> values to change the value we do
>>
>> prop = <23>;
>>
>> but for booleans we must do EITHER:
>>
>> bool;
>>
>> or
>>
>> /delete-prop/ bool;
>>
>> depending on whether we want the make it true or false? Ick.
>
> Doesn't seem that bad to me except in the case you show below where
> you're trying to do it programmatically.
>
>> It seems worse to me, see above. Also if we end up with symbols it will
> *> be impossible to do something like:
>>
>> bool-property = <WIBBLE_VALUE>;
>>
>> You will have to do:
>>
>> if WIBBLE_VALUE == 0
>> /delete-prop/ bool-property;
>> #else
>> bool-property;
>> #endif
>>
>> or whatever, or maybe I got that around the wrong way.... Not nice IMO.
>
> Yeah, that's unpleasant.
>
> I don't hugely object to a new boolean type for use in new bindings,
> where <0> or absence can both be used to indicate false, as long as it's
> clearly documented. I'm hesitant to start doing this on existing
> bindings, though, and in any case would like to see support for
> property/node deletion in dtc.
Fair enough. Jean-Christophe's patch certainly changes existing
behaviour, and without that it might be confusing - we don't want two
functions for reading boolean properties. The only plus is that
(perhaps) no one expects "bool-prop = <0>" to mean true, so it might
be safe.
>
>> (any comments on point 2?)
>
> It's basically the same as the above, right?
Yes, and you commented above.
>
>> > 3. Discoverability: it is nice to be able to see the possible options,
>> > even if disabled.
>>
>> This assumes the possible options were known in advance, or that you
>> don't maintain compatibility with old device trees when a new option is
>> added.
>>
>>
>> You can still add the option with a zero value - or maybe I
>> misunderstand what you mean.
>
> We normally want to work with existing device trees (which could be
> partially produced by firmware, so changing can be unpleasant), so the
> absence of the property is still going to be a possibility. Plus
> enumerating every possibility, no matter how rarely used, in every node
> of a certain type seems excessively verbose. It's not like these are
> user configuration knobs.
Yes agreed. The point of this is just to make it easier (I think) to
make a boolean value false either in the source, or later using
fdtput.
So what do we need to do? Take a vote? Revisit Jean-Christophe's patch?
>
> -Scott
>
Regards,
Simon
More information about the linux-arm-kernel
mailing list