diff mbox series

media: dt-bindings: media: renesas,csi2: Update data-lanes property

Message ID 20220113103215.27080-1-prabhakar.mahadev-lad.rj@bp.renesas.com (mailing list archive)
State New, archived
Headers show
Series media: dt-bindings: media: renesas,csi2: Update data-lanes property | expand

Commit Message

Lad Prabhakar Jan. 13, 2022, 10:32 a.m. UTC
CSI-2 (CSI4LNK0) on R-Car and RZ/G2 supports 4-lane mode which is already
handled by rcar-csi2.c driver. This patch updates the data-lanes property
to describe the same.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 .../devicetree/bindings/media/renesas,csi2.yaml          | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

Comments

Jacopo Mondi Jan. 17, 2022, 8:11 a.m. UTC | #1
Hello Prabhakar,

On Thu, Jan 13, 2022 at 10:32:14AM +0000, Lad Prabhakar wrote:
> CSI-2 (CSI4LNK0) on R-Car and RZ/G2 supports 4-lane mode which is already
> handled by rcar-csi2.c driver. This patch updates the data-lanes property
> to describe the same.
>
> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> ---
>  .../devicetree/bindings/media/renesas,csi2.yaml          | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/devicetree/bindings/media/renesas,csi2.yaml b/Documentation/devicetree/bindings/media/renesas,csi2.yaml
> index e6a036721082..064a0a4c5737 100644
> --- a/Documentation/devicetree/bindings/media/renesas,csi2.yaml
> +++ b/Documentation/devicetree/bindings/media/renesas,csi2.yaml
> @@ -67,7 +67,14 @@ properties:
>                  maxItems: 1
>
>                data-lanes:
> -                maxItems: 1
> +                items:
> +                  minItems: 1
> +                  maxItems: 4
> +                  items:
> +                    - const: 1
> +                    - const: 2
> +                    - const: 3
> +                    - const: 4

Seeing "maxItems: 1" there confuses me too, as the property is an
array of data-lanes, but I'm afraid your change does not what you
intend as it would allow you to specify the number of data lanes as an
integer rather than as an array.

I think it would probably be correct to set

                data-lanes: true

(maybe maxItems: 1 is correct already)

And restrict the number of valid combinations in the board DTS file
with a construct like:

    data-lanes:
      oneOf:
        - items:
            - const: 1
            - const: 2
            - const: 3
            - const: 4
        - items:
            - const: 1
            - const: 2

Thanks
   j

>
>              required:
>                - clock-lanes
> --
> 2.17.1
>
Niklas Söderlund Jan. 17, 2022, 9:23 a.m. UTC | #2
Hello Jacopo,

On 2022-01-17 09:11:10 +0100, Jacopo Mondi wrote:
> Hello Prabhakar,
> 
> On Thu, Jan 13, 2022 at 10:32:14AM +0000, Lad Prabhakar wrote:
> > CSI-2 (CSI4LNK0) on R-Car and RZ/G2 supports 4-lane mode which is already
> > handled by rcar-csi2.c driver. This patch updates the data-lanes property
> > to describe the same.
> >
> > Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> > ---
> >  .../devicetree/bindings/media/renesas,csi2.yaml          | 9 ++++++++-
> >  1 file changed, 8 insertions(+), 1 deletion(-)
> >
> > diff --git a/Documentation/devicetree/bindings/media/renesas,csi2.yaml b/Documentation/devicetree/bindings/media/renesas,csi2.yaml
> > index e6a036721082..064a0a4c5737 100644
> > --- a/Documentation/devicetree/bindings/media/renesas,csi2.yaml
> > +++ b/Documentation/devicetree/bindings/media/renesas,csi2.yaml
> > @@ -67,7 +67,14 @@ properties:
> >                  maxItems: 1
> >
> >                data-lanes:
> > -                maxItems: 1
> > +                items:
> > +                  minItems: 1
> > +                  maxItems: 4
> > +                  items:
> > +                    - const: 1
> > +                    - const: 2
> > +                    - const: 3
> > +                    - const: 4
> 
> Seeing "maxItems: 1" there confuses me too, as the property is an
> array of data-lanes, but I'm afraid your change does not what you
> intend as it would allow you to specify the number of data lanes as an
> integer rather than as an array.
> 
> I think it would probably be correct to set
> 
>                 data-lanes: true
> 
> (maybe maxItems: 1 is correct already)
> 
> And restrict the number of valid combinations in the board DTS file
> with a construct like:
> 
>     data-lanes:
>       oneOf:
>         - items:
>             - const: 1
>             - const: 2
>             - const: 3
>             - const: 4
>         - items:
>             - const: 1
>             - const: 2

I don't think this is correct, what if data lanes 2 and 3 are used?

> 
> Thanks
>    j
> 
> >
> >              required:
> >                - clock-lanes
> > --
> > 2.17.1
> >
Jacopo Mondi Jan. 17, 2022, 10 a.m. UTC | #3
Hi Niklas,

On Mon, Jan 17, 2022 at 10:23:28AM +0100, Niklas Söderlund wrote:
> Hello Jacopo,
>
> On 2022-01-17 09:11:10 +0100, Jacopo Mondi wrote:
> > Hello Prabhakar,
> >
> > On Thu, Jan 13, 2022 at 10:32:14AM +0000, Lad Prabhakar wrote:
> > > CSI-2 (CSI4LNK0) on R-Car and RZ/G2 supports 4-lane mode which is already
> > > handled by rcar-csi2.c driver. This patch updates the data-lanes property
> > > to describe the same.
> > >
> > > Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> > > ---
> > >  .../devicetree/bindings/media/renesas,csi2.yaml          | 9 ++++++++-
> > >  1 file changed, 8 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/Documentation/devicetree/bindings/media/renesas,csi2.yaml b/Documentation/devicetree/bindings/media/renesas,csi2.yaml
> > > index e6a036721082..064a0a4c5737 100644
> > > --- a/Documentation/devicetree/bindings/media/renesas,csi2.yaml
> > > +++ b/Documentation/devicetree/bindings/media/renesas,csi2.yaml
> > > @@ -67,7 +67,14 @@ properties:
> > >                  maxItems: 1
> > >
> > >                data-lanes:
> > > -                maxItems: 1
> > > +                items:
> > > +                  minItems: 1
> > > +                  maxItems: 4
> > > +                  items:
> > > +                    - const: 1
> > > +                    - const: 2
> > > +                    - const: 3
> > > +                    - const: 4
> >
> > Seeing "maxItems: 1" there confuses me too, as the property is an
> > array of data-lanes, but I'm afraid your change does not what you
> > intend as it would allow you to specify the number of data lanes as an
> > integer rather than as an array.
> >
> > I think it would probably be correct to set
> >
> >                 data-lanes: true
> >
> > (maybe maxItems: 1 is correct already)
> >
> > And restrict the number of valid combinations in the board DTS file
> > with a construct like:
> >
> >     data-lanes:
> >       oneOf:
> >         - items:
> >             - const: 1
> >             - const: 2
> >             - const: 3
> >             - const: 4
> >         - items:
> >             - const: 1
> >             - const: 2
>
> I don't think this is correct, what if data lanes 2 and 3 are used?
>

These were examples that allow you to accept <1 2> and <1 2 3 4> as
valid properties. If other combinations are accepted they can be
specified there, in your example, <2 3> with

             - items:
               - const: 2
               - const: 3

As lane re-reordering is quite unusual as a feature (afaik) there are
usually just an handful of supported combinations for 1, 2 and 4 data
lanes setups.

If full lane re-ordering is supported then it's enough to set
data-lanes: true and accepts all combinations.

Also, the reason why imho the property should go in the board DTS and
not in the SoC .dtsi is that not all the available data lanes of the
IP-core might be routed out on a specific board.

That's at least my understanding which I would be glad to be disproved
as specifying the valid combinations in each board dts is rather
un-convenient.

Thanks
   j

> >
> > Thanks
> >    j
> >
> > >
> > >              required:
> > >                - clock-lanes
> > > --
> > > 2.17.1
> > >
>
> --
> Kind Regards,
> Niklas Söderlund
Lad, Prabhakar Jan. 18, 2022, 9:11 a.m. UTC | #4
Hi Jacopo,

Thank you for the review.

On Mon, Jan 17, 2022 at 8:11 AM Jacopo Mondi <jacopo@jmondi.org> wrote:
>
> Hello Prabhakar,
>
> On Thu, Jan 13, 2022 at 10:32:14AM +0000, Lad Prabhakar wrote:
> > CSI-2 (CSI4LNK0) on R-Car and RZ/G2 supports 4-lane mode which is already
> > handled by rcar-csi2.c driver. This patch updates the data-lanes property
> > to describe the same.
> >
> > Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> > ---
> >  .../devicetree/bindings/media/renesas,csi2.yaml          | 9 ++++++++-
> >  1 file changed, 8 insertions(+), 1 deletion(-)
> >
> > diff --git a/Documentation/devicetree/bindings/media/renesas,csi2.yaml b/Documentation/devicetree/bindings/media/renesas,csi2.yaml
> > index e6a036721082..064a0a4c5737 100644
> > --- a/Documentation/devicetree/bindings/media/renesas,csi2.yaml
> > +++ b/Documentation/devicetree/bindings/media/renesas,csi2.yaml
> > @@ -67,7 +67,14 @@ properties:
> >                  maxItems: 1
> >
> >                data-lanes:
> > -                maxItems: 1
> > +                items:
> > +                  minItems: 1
> > +                  maxItems: 4
> > +                  items:
> > +                    - const: 1
> > +                    - const: 2
> > +                    - const: 3
> > +                    - const: 4
>
> Seeing "maxItems: 1" there confuses me too, as the property is an
> array of data-lanes, but I'm afraid your change does not what you
> intend as it would allow you to specify the number of data lanes as an
> integer rather than as an array.
>
Agreed, what do you think of the below instead?

            properties:
              data-lanes:
                minItems: 1
                maxItems: 4
                items:
                  maximum: 4

The above should handle all the possible mix and match of the lanes.

> I think it would probably be correct to set
>
>                 data-lanes: true
>
> (maybe maxItems: 1 is correct already)
>
> And restrict the number of valid combinations in the board DTS file
> with a construct like:
>
>     data-lanes:
>       oneOf:
>         - items:
>             - const: 1
>             - const: 2
>             - const: 3
>             - const: 4
>         - items:
>             - const: 1
>             - const: 2
>
I haven't come across dts files having such constraints is it allowed,
could you point me to a example.

Cheers,
Prabhakar
Niklas Söderlund Jan. 18, 2022, 10:33 a.m. UTC | #5
Hi Jacopo,

Thanks for your feedback.

On 2022-01-17 11:00:40 +0100, Jacopo Mondi wrote:
> Hi Niklas,
> 
> On Mon, Jan 17, 2022 at 10:23:28AM +0100, Niklas Söderlund wrote:
> > Hello Jacopo,
> >
> > On 2022-01-17 09:11:10 +0100, Jacopo Mondi wrote:
> > > Hello Prabhakar,
> > >
> > > On Thu, Jan 13, 2022 at 10:32:14AM +0000, Lad Prabhakar wrote:
> > > > CSI-2 (CSI4LNK0) on R-Car and RZ/G2 supports 4-lane mode which is already
> > > > handled by rcar-csi2.c driver. This patch updates the data-lanes property
> > > > to describe the same.
> > > >
> > > > Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> > > > ---
> > > >  .../devicetree/bindings/media/renesas,csi2.yaml          | 9 ++++++++-
> > > >  1 file changed, 8 insertions(+), 1 deletion(-)
> > > >
> > > > diff --git a/Documentation/devicetree/bindings/media/renesas,csi2.yaml b/Documentation/devicetree/bindings/media/renesas,csi2.yaml
> > > > index e6a036721082..064a0a4c5737 100644
> > > > --- a/Documentation/devicetree/bindings/media/renesas,csi2.yaml
> > > > +++ b/Documentation/devicetree/bindings/media/renesas,csi2.yaml
> > > > @@ -67,7 +67,14 @@ properties:
> > > >                  maxItems: 1
> > > >
> > > >                data-lanes:
> > > > -                maxItems: 1
> > > > +                items:
> > > > +                  minItems: 1
> > > > +                  maxItems: 4
> > > > +                  items:
> > > > +                    - const: 1
> > > > +                    - const: 2
> > > > +                    - const: 3
> > > > +                    - const: 4
> > >
> > > Seeing "maxItems: 1" there confuses me too, as the property is an
> > > array of data-lanes, but I'm afraid your change does not what you
> > > intend as it would allow you to specify the number of data lanes as an
> > > integer rather than as an array.
> > >
> > > I think it would probably be correct to set
> > >
> > >                 data-lanes: true
> > >
> > > (maybe maxItems: 1 is correct already)
> > >
> > > And restrict the number of valid combinations in the board DTS file
> > > with a construct like:
> > >
> > >     data-lanes:
> > >       oneOf:
> > >         - items:
> > >             - const: 1
> > >             - const: 2
> > >             - const: 3
> > >             - const: 4
> > >         - items:
> > >             - const: 1
> > >             - const: 2
> >
> > I don't think this is correct, what if data lanes 2 and 3 are used?
> >
> 
> These were examples that allow you to accept <1 2> and <1 2 3 4> as
> valid properties. If other combinations are accepted they can be
> specified there, in your example, <2 3> with
> 
>              - items:
>                - const: 2
>                - const: 3
> 
> As lane re-reordering is quite unusual as a feature (afaik) there are
> usually just an handful of supported combinations for 1, 2 and 4 data
> lanes setups.

R-Car CSI-2 hardware and driver supports full lane swapping, see the 
LSWAP register and usage of struct rcar_csi2.lane_swap.

I think it's a good idea to extend the binding description to limit the 
data-lanes property to an array of max 4 items where each value use is 
ether a 1, 2, 3 or 4. But it must allow for any combination of the 
values.

> 
> If full lane re-ordering is supported then it's enough to set
> data-lanes: true and accepts all combinations.
> 
> Also, the reason why imho the property should go in the board DTS and
> not in the SoC .dtsi is that not all the available data lanes of the
> IP-core might be routed out on a specific board.
> 
> That's at least my understanding which I would be glad to be disproved
> as specifying the valid combinations in each board dts is rather
> un-convenient.
> 
> Thanks
>    j
> 
> > >
> > > Thanks
> > >    j
> > >
> > > >
> > > >              required:
> > > >                - clock-lanes
> > > > --
> > > > 2.17.1
> > > >
> >
> > --
> > Kind Regards,
> > Niklas Söderlund
Lad, Prabhakar Jan. 18, 2022, 10:55 a.m. UTC | #6
On Tue, Jan 18, 2022 at 9:11 AM Lad, Prabhakar
<prabhakar.csengg@gmail.com> wrote:
>
> Hi Jacopo,
>
> Thank you for the review.
>
> On Mon, Jan 17, 2022 at 8:11 AM Jacopo Mondi <jacopo@jmondi.org> wrote:
> >
> > Hello Prabhakar,
> >
> > On Thu, Jan 13, 2022 at 10:32:14AM +0000, Lad Prabhakar wrote:
> > > CSI-2 (CSI4LNK0) on R-Car and RZ/G2 supports 4-lane mode which is already
> > > handled by rcar-csi2.c driver. This patch updates the data-lanes property
> > > to describe the same.
> > >
> > > Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> > > ---
> > >  .../devicetree/bindings/media/renesas,csi2.yaml          | 9 ++++++++-
> > >  1 file changed, 8 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/Documentation/devicetree/bindings/media/renesas,csi2.yaml b/Documentation/devicetree/bindings/media/renesas,csi2.yaml
> > > index e6a036721082..064a0a4c5737 100644
> > > --- a/Documentation/devicetree/bindings/media/renesas,csi2.yaml
> > > +++ b/Documentation/devicetree/bindings/media/renesas,csi2.yaml
> > > @@ -67,7 +67,14 @@ properties:
> > >                  maxItems: 1
> > >
> > >                data-lanes:
> > > -                maxItems: 1
> > > +                items:
> > > +                  minItems: 1
> > > +                  maxItems: 4
> > > +                  items:
> > > +                    - const: 1
> > > +                    - const: 2
> > > +                    - const: 3
> > > +                    - const: 4
> >
> > Seeing "maxItems: 1" there confuses me too, as the property is an
> > array of data-lanes, but I'm afraid your change does not what you
> > intend as it would allow you to specify the number of data lanes as an
> > integer rather than as an array.
> >
> Agreed, what do you think of the below instead?
>
>             properties:
>               data-lanes:
>                 minItems: 1
>                 maxItems: 4
uniqueItems: true

can go in as well, to avoid duplicate lane numbers.

>                 items:
>                   maximum: 4
>
Cheers,
Prabhakar
Jacopo Mondi Jan. 18, 2022, 4:22 p.m. UTC | #7
Hi Niklas,

On Tue, Jan 18, 2022 at 11:33:08AM +0100, Niklas Söderlund wrote:
> Hi Jacopo,
>
> Thanks for your feedback.
>
> On 2022-01-17 11:00:40 +0100, Jacopo Mondi wrote:
> > Hi Niklas,
> >
> > On Mon, Jan 17, 2022 at 10:23:28AM +0100, Niklas Söderlund wrote:
> > > Hello Jacopo,
> > >
> > > On 2022-01-17 09:11:10 +0100, Jacopo Mondi wrote:
> > > > Hello Prabhakar,
> > > >
> > > > On Thu, Jan 13, 2022 at 10:32:14AM +0000, Lad Prabhakar wrote:
> > > > > CSI-2 (CSI4LNK0) on R-Car and RZ/G2 supports 4-lane mode which is already
> > > > > handled by rcar-csi2.c driver. This patch updates the data-lanes property
> > > > > to describe the same.
> > > > >
> > > > > Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> > > > > ---
> > > > >  .../devicetree/bindings/media/renesas,csi2.yaml          | 9 ++++++++-
> > > > >  1 file changed, 8 insertions(+), 1 deletion(-)
> > > > >
> > > > > diff --git a/Documentation/devicetree/bindings/media/renesas,csi2.yaml b/Documentation/devicetree/bindings/media/renesas,csi2.yaml
> > > > > index e6a036721082..064a0a4c5737 100644
> > > > > --- a/Documentation/devicetree/bindings/media/renesas,csi2.yaml
> > > > > +++ b/Documentation/devicetree/bindings/media/renesas,csi2.yaml
> > > > > @@ -67,7 +67,14 @@ properties:
> > > > >                  maxItems: 1
> > > > >
> > > > >                data-lanes:
> > > > > -                maxItems: 1
> > > > > +                items:
> > > > > +                  minItems: 1
> > > > > +                  maxItems: 4
> > > > > +                  items:
> > > > > +                    - const: 1
> > > > > +                    - const: 2
> > > > > +                    - const: 3
> > > > > +                    - const: 4
> > > >
> > > > Seeing "maxItems: 1" there confuses me too, as the property is an
> > > > array of data-lanes, but I'm afraid your change does not what you
> > > > intend as it would allow you to specify the number of data lanes as an
> > > > integer rather than as an array.
> > > >
> > > > I think it would probably be correct to set
> > > >
> > > >                 data-lanes: true
> > > >
> > > > (maybe maxItems: 1 is correct already)
> > > >
> > > > And restrict the number of valid combinations in the board DTS file
> > > > with a construct like:
> > > >
> > > >     data-lanes:
> > > >       oneOf:
> > > >         - items:
> > > >             - const: 1
> > > >             - const: 2
> > > >             - const: 3
> > > >             - const: 4
> > > >         - items:
> > > >             - const: 1
> > > >             - const: 2
> > >
> > > I don't think this is correct, what if data lanes 2 and 3 are used?
> > >
> >
> > These were examples that allow you to accept <1 2> and <1 2 3 4> as
> > valid properties. If other combinations are accepted they can be
> > specified there, in your example, <2 3> with
> >
> >              - items:
> >                - const: 2
> >                - const: 3
> >
> > As lane re-reordering is quite unusual as a feature (afaik) there are
> > usually just an handful of supported combinations for 1, 2 and 4 data
> > lanes setups.
>
> R-Car CSI-2 hardware and driver supports full lane swapping, see the
> LSWAP register and usage of struct rcar_csi2.lane_swap.

Uh, I missed that. So indeed restricting the possible combinations in
the .dts file is a no-go :0

>
> I think it's a good idea to extend the binding description to limit the
> data-lanes property to an array of max 4 items where each value use is
> ether a 1, 2, 3 or 4. But it must allow for any combination of the
> values.
>

Agreed then.

Looking at the definition in video-interfaces.txt
  data-lanes:
    $ref: /schemas/types.yaml#/definitions/uint32-array
    minItems: 1
    maxItems: 8
    items:
      # Assume up to 9 physical lane indices
      maximum: 8

Should the R-Car CSI-2 bindings report (validated with
dt_binding_check)

      data-lanes:
        maxItems: 4
        items:
          maximum: 4

Thanks
   j

> >
> > If full lane re-ordering is supported then it's enough to set
> > data-lanes: true and accepts all combinations.
> >
> > Also, the reason why imho the property should go in the board DTS and
> > not in the SoC .dtsi is that not all the available data lanes of the
> > IP-core might be routed out on a specific board.
> >
> > That's at least my understanding which I would be glad to be disproved
> > as specifying the valid combinations in each board dts is rather
> > un-convenient.
> >
> > Thanks
> >    j
> >
> > > >
> > > > Thanks
> > > >    j
> > > >
> > > > >
> > > > >              required:
> > > > >                - clock-lanes
> > > > > --
> > > > > 2.17.1
> > > > >
> > >
> > > --
> > > Kind Regards,
> > > Niklas Söderlund
>
> --
> Kind Regards,
> Niklas Söderlund
Jacopo Mondi Jan. 18, 2022, 4:34 p.m. UTC | #8
Hi Prabhakar

On Tue, Jan 18, 2022 at 09:11:42AM +0000, Lad, Prabhakar wrote:
> Hi Jacopo,
>
> Thank you for the review.
>
> On Mon, Jan 17, 2022 at 8:11 AM Jacopo Mondi <jacopo@jmondi.org> wrote:
> >
> > Hello Prabhakar,
> >
> > On Thu, Jan 13, 2022 at 10:32:14AM +0000, Lad Prabhakar wrote:
> > > CSI-2 (CSI4LNK0) on R-Car and RZ/G2 supports 4-lane mode which is already
> > > handled by rcar-csi2.c driver. This patch updates the data-lanes property
> > > to describe the same.
> > >
> > > Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> > > ---
> > >  .../devicetree/bindings/media/renesas,csi2.yaml          | 9 ++++++++-
> > >  1 file changed, 8 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/Documentation/devicetree/bindings/media/renesas,csi2.yaml b/Documentation/devicetree/bindings/media/renesas,csi2.yaml
> > > index e6a036721082..064a0a4c5737 100644
> > > --- a/Documentation/devicetree/bindings/media/renesas,csi2.yaml
> > > +++ b/Documentation/devicetree/bindings/media/renesas,csi2.yaml
> > > @@ -67,7 +67,14 @@ properties:
> > >                  maxItems: 1
> > >
> > >                data-lanes:
> > > -                maxItems: 1
> > > +                items:
> > > +                  minItems: 1
> > > +                  maxItems: 4
> > > +                  items:
> > > +                    - const: 1
> > > +                    - const: 2
> > > +                    - const: 3
> > > +                    - const: 4
> >
> > Seeing "maxItems: 1" there confuses me too, as the property is an
> > array of data-lanes, but I'm afraid your change does not what you
> > intend as it would allow you to specify the number of data lanes as an
> > integer rather than as an array.
> >
> Agreed, what do you think of the below instead?
>
>             properties:
>               data-lanes:
>                 minItems: 1
>                 maxItems: 4
>                 items:
>                   maximum: 4
>

Sorry, I should have read your reply first :)
even better with your suggested uniqueItems

> The above should handle all the possible mix and match of the lanes.
>
> > I think it would probably be correct to set
> >
> >                 data-lanes: true
> >
> > (maybe maxItems: 1 is correct already)
> >
> > And restrict the number of valid combinations in the board DTS file
> > with a construct like:
> >
> >     data-lanes:
> >       oneOf:
> >         - items:
> >             - const: 1
> >             - const: 2
> >             - const: 3
> >             - const: 4
> >         - items:
> >             - const: 1
> >             - const: 2
> >
> I haven't come across dts files having such constraints is it allowed,
> could you point me to a example.

I see some

Documentation/devicetree/bindings/media/i2c/hynix,hi846.yaml-        properties:
Documentation/devicetree/bindings/media/i2c/hynix,hi846.yaml:          data-lanes:
Documentation/devicetree/bindings/media/i2c/hynix,hi846.yaml-            oneOf:
Documentation/devicetree/bindings/media/i2c/hynix,hi846.yaml-              - items:
Documentation/devicetree/bindings/media/i2c/hynix,hi846.yaml-                  - const: 1
Documentation/devicetree/bindings/media/i2c/hynix,hi846.yaml-                  - const: 2
Documentation/devicetree/bindings/media/i2c/hynix,hi846.yaml-                  - const: 3
Documentation/devicetree/bindings/media/i2c/hynix,hi846.yaml-                  - const: 4
Documentation/devicetree/bindings/media/i2c/hynix,hi846.yaml-              - items:
Documentation/devicetree/bindings/media/i2c/hynix,hi846.yaml-                  - const: 1
Documentation/devicetree/bindings/media/i2c/hynix,hi846.yaml-                  - const: 2
Documentation/devicetree/bindings/media/i2c/hynix,hi846.yaml-

Documentation/devicetree/bindings/media/i2c/imx258.yaml-        properties:
Documentation/devicetree/bindings/media/i2c/imx258.yaml:          data-lanes:
Documentation/devicetree/bindings/media/i2c/imx258.yaml-            oneOf:
Documentation/devicetree/bindings/media/i2c/imx258.yaml-              - items:
Documentation/devicetree/bindings/media/i2c/imx258.yaml-                  - const: 1
Documentation/devicetree/bindings/media/i2c/imx258.yaml-                  - const: 2
Documentation/devicetree/bindings/media/i2c/imx258.yaml-                  - const: 3
Documentation/devicetree/bindings/media/i2c/imx258.yaml-                  - const: 4
Documentation/devicetree/bindings/media/i2c/imx258.yaml-              - items:
Documentation/devicetree/bindings/media/i2c/imx258.yaml-                  - const: 1
Documentation/devicetree/bindings/media/i2c/imx258.yaml-                  - const: 2

Documentation/devicetree/bindings/media/i2c/sony,imx214.yaml-        properties:
Documentation/devicetree/bindings/media/i2c/sony,imx214.yaml:          data-lanes:
Documentation/devicetree/bindings/media/i2c/sony,imx214.yaml-            anyOf:
Documentation/devicetree/bindings/media/i2c/sony,imx214.yaml-              - items:
Documentation/devicetree/bindings/media/i2c/sony,imx214.yaml-                  - const: 1
Documentation/devicetree/bindings/media/i2c/sony,imx214.yaml-                  - const: 2
Documentation/devicetree/bindings/media/i2c/sony,imx214.yaml-              - items:
Documentation/devicetree/bindings/media/i2c/sony,imx214.yaml-                  - const: 1
Documentation/devicetree/bindings/media/i2c/sony,imx214.yaml-                  - const: 2
Documentation/devicetree/bindings/media/i2c/sony,imx214.yaml-                  - const: 3
Documentation/devicetree/bindings/media/i2c/sony,imx214.yaml-                  - const: 4

But yes, most bindings simply report

              data-lanes:
                minItems: 1
                maxItems: 4

Which allows all combinations, including repetitions, so they're
probably wrong.

Thanks
  j

>
> Cheers,
> Prabhakar
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/media/renesas,csi2.yaml b/Documentation/devicetree/bindings/media/renesas,csi2.yaml
index e6a036721082..064a0a4c5737 100644
--- a/Documentation/devicetree/bindings/media/renesas,csi2.yaml
+++ b/Documentation/devicetree/bindings/media/renesas,csi2.yaml
@@ -67,7 +67,14 @@  properties:
                 maxItems: 1
 
               data-lanes:
-                maxItems: 1
+                items:
+                  minItems: 1
+                  maxItems: 4
+                  items:
+                    - const: 1
+                    - const: 2
+                    - const: 3
+                    - const: 4
 
             required:
               - clock-lanes