Hi Doug,
On Tue, May 05, 2020 at 05:18:48PM -0700, Doug Anderson wrote:
On Tue, May 5, 2020 at 2:24 PM Doug Anderson wrote:
On Tue, May 5, 2020 at 2:14 PM Laurent Pinchart wrote:
I'll add this documentation into the comments of the yaml, but I'm not going to try to implement enforcement at the yaml level.
Why not ? :-)
Because trying to describe anything in the yaml bindings that doesn't fit in the exact pattern of things that the yaml bindings are designed to check is like constructing the empire state building with only toothpicks.
If you want to suggest some syntax that would actually make this doable without blowing out the yaml bindings then I'm happy to add it. Me being naive would assume that we'd need to do an exhaustive list of the OK combinations. That would be fine for the 1-land and 2-lane cases, but for 4 lanes that means adding 256 entries to the bindings.
I think the correct way to do this would require adding code in the https://github.com/devicetree-org/dt-schema project but that's really only done for generic subsystem-level concepts and not for a single driver.
OK. Looked at your review of the .yaml and the "uniqueItems" is probably the bit I didn't think of. With that I can limit this but it's still a little awkward. I still haven't figured out how to force data-lanes and lane-polarities to have the same number of items, too. I'll add this as an add-on patch to my v2 and folks can decide if they like it or hate it.
Thanks for looking into it. Looks good to me. Regarding the same number of items I would assume it should be possible, I would be surprised if the schemas allowed a different number of items for clocks and clock-names for instance, but maybe that's not implemented yet. In any case, no big deal.
# See ../../media/video-interface.txt for details. data-lanes: oneOf: - minItems: 1 maxItems: 1 uniqueItems: true items: enum: - 0 - 1 description: If you have 1 logical lane it can go to either physical port 0 or port 1. Port 0 is suggested.
- minItems: 2 maxItems: 2 uniqueItems: true items: enum: - 0 - 1 description: If you have 2 logical lanes they can be reordered on physical ports 0 and 1. - minItems: 4 maxItems: 4 uniqueItems: true items: enum: - 0 - 1 - 2 - 3 description: If you have 4 logical lanes they can be reordered on in any way.