Grant Likely wrote:
On Wed, Jan 13, 2010 at 11:02 AM, Scott Wood <[email protected]> wrote:
Grant Likely wrote:
It's not worth toying with. Just create a new compatible value for this
new binding and be done with
it. When a driver gets modified to handle the new behaviour, then it
can be also changed to bind against the new compatible value too.
I agree that a new compatible is warranted from a theoretical perspetive,
though from a practical compatibility perspective one should consider the
odds of something breaking because old code chokes on the new bits, versus
the old code not recognizing the new compatible and thus not binding the
device at all.
Letting old drivers bind against new bindings that aren't actually
the same isn't good practice and leaves little recourse if we really
do need to differentiate between them in the future. Teaching the
current driver to match against the new value is a one line change.
Choosing a new compatible value is so inexpensive, trivial, and safe
that I think it is a no-brainer decision.
Yes, I said that it's theoretically a bad thing to do, but in practice I
really don't see what it would break that wouldn't be just as broken by
a change in compatible -- unless we leave in the device_type that the
kernel actually binds on at the moment :-P -- and I can see cases where
it would improve compatibility. Making that one-line change without a
time machine won't stop the e-mails asking why an old kernel won't boot
with a new device tree, especially if we ever get to the point where
we're sharing device tree source fragments and don't want to keep
separate old-binding and new-binding fragments for each device.
I really don't see anyone supporting both bindings and doing something
different with one versus the other. It's not like we're talking about
leaving out chip information where there might be hardware quirks to be
dealt with. It's just a use of previously unused bits (check against
zero if you care), or additional cells (check #interrupt-cells if you
care). The only thing that makes it a bit questionable is the ambiguity
about whether the existing values are the low two bits of a cell, or a
whole-cell enumeration of configurations -- the odd, non-orthogonal
encoding does point to the latter.
Is there any interest in standardizing this with a new compatible, or should
it be FSL-only?
Instead of trying to come up with a new "generic/standard" compatible
value, just adopt the name of the first part to use the new binding as
the standard compatible value. If the binding catches on then great,
new parts will just claim compatibility with the old.
Assuming new parts are compatible with the previous part, which is less
likely than being compatible with the base openpic design.
But even if there's nothing generic to match on, it would be nice if
different openpic implementations didn't do gratuitously different
things in their bindings, hence the RFC.
This also has the advantage of the meaning of a fsl,p4080-mpic
compatible device is grounded in some real piece of hardware, not in
something made up who's definition can change over time.
Because nothing ever changes in new chip revisions of the same name. :-)
-Scott
_______________________________________________
devicetree-discuss mailing list
[email protected]
https://lists.ozlabs.org/listinfo/devicetree-discuss