All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] dt-bindings: media: video-interfaces: Use documented bindings in example
@ 2021-03-16 19:51 Rob Herring
  2021-03-16 20:48 ` Laurent Pinchart
  0 siblings, 1 reply; 4+ messages in thread
From: Rob Herring @ 2021-03-16 19:51 UTC (permalink / raw)
  To: devicetree
  Cc: linux-kernel, Mauro Carvalho Chehab, Sakari Ailus,
	Laurent Pinchart, linux-media

The example in video-interfaces.yaml managed to use a bunch of undocumented
bindings. Update the example to use real bindings (and ones with a schema).

Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: Sakari Ailus <sakari.ailus@linux.intel.com>
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: linux-media@vger.kernel.org
Signed-off-by: Rob Herring <robh@kernel.org>
---
 .../bindings/media/video-interfaces.yaml      | 75 ++++++++-----------
 1 file changed, 33 insertions(+), 42 deletions(-)

diff --git a/Documentation/devicetree/bindings/media/video-interfaces.yaml b/Documentation/devicetree/bindings/media/video-interfaces.yaml
index 0a7a73fd59f2..f30b9b91717b 100644
--- a/Documentation/devicetree/bindings/media/video-interfaces.yaml
+++ b/Documentation/devicetree/bindings/media/video-interfaces.yaml
@@ -227,17 +227,12 @@ examples:
   # only one of the following data pipelines can be active:
   # ov772x -> ceu0 or imx074 -> csi2 -> ceu0.
   - |
+    #include <dt-bindings/clock/r8a7796-cpg-mssr.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/power/r8a7796-sysc.h>
+
     ceu@fe910000 {
-        compatible = "renesas,sh-mobile-ceu";
         reg = <0xfe910000 0xa0>;
-        interrupts = <0x880>;
-
-        mclk: master_clock {
-            compatible = "renesas,ceu-clock";
-            #clock-cells = <1>;
-            clock-frequency = <50000000>;  /* Max clock frequency */
-            clock-output-names = "mclk";
-        };
 
         port {
             #address-cells = <1>;
@@ -271,18 +266,14 @@ examples:
         #size-cells = <0>;
 
         camera@21 {
-            compatible = "ovti,ov772x";
+            compatible = "ovti,ov7720";
             reg = <0x21>;
-            vddio-supply = <&regulator1>;
-            vddcore-supply = <&regulator2>;
-
-            clock-frequency = <20000000>;
             clocks = <&mclk 0>;
-            clock-names = "xclk";
 
             port {
                 /* With 1 endpoint per port no need for addresses. */
                 ov772x_1_1: endpoint {
+                    bus-type = <5>;
                     bus-width = <8>;
                     remote-endpoint = <&ceu0_1>;
                     hsync-active = <1>;
@@ -295,48 +286,48 @@ examples:
         };
 
         camera@1a {
-            compatible = "sony,imx074";
+            compatible = "sony,imx334";
             reg = <0x1a>;
-            vddio-supply = <&regulator1>;
-            vddcore-supply = <&regulator2>;
 
-            clock-frequency = <30000000>;  /* Shared clock with ov772x_1 */
             clocks = <&mclk 0>;
-            clock-names = "sysclk";    /* Assuming this is the
-                       name in the datasheet */
+
             port {
-                imx074_1: endpoint {
+                imx334_1: endpoint {
                     clock-lanes = <0>;
                     data-lanes = <1 2>;
+                    link-frequencies = /bits/ 64 <891000000>;
                     remote-endpoint = <&csi2_1>;
                 };
             };
         };
     };
 
-    csi2: csi2@ffc90000 {
-        compatible = "renesas,sh-mobile-csi2";
-        reg = <0xffc90000 0x1000>;
-        interrupts = <0x17a0>;
-        #address-cells = <1>;
-        #size-cells = <0>;
+    csi2@fea80000 {
+        compatible = "renesas,r8a7796-csi2";
+        reg = <0xfea80000 0x10000>;
+        interrupts = <0 184 IRQ_TYPE_LEVEL_HIGH>;
+        clocks = <&cpg CPG_MOD 714>;
+        power-domains = <&sysc R8A7796_PD_ALWAYS_ON>;
+        resets = <&cpg 714>;
 
-        port@1 {
-            compatible = "renesas,csi2c";  /* One of CSI2I and CSI2C. */
-            reg = <1>;      /* CSI-2 PHY #1 of 2: PHY_S,
-                       PHY_M has port address 0,
-                       is unused. */
-            csi2_1: endpoint {
-                clock-lanes = <0>;
-                data-lanes = <2 1>;
-                remote-endpoint = <&imx074_1>;
+        ports {
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            port@0 {
+                reg = <0>;
+                csi2_1: endpoint {
+                    clock-lanes = <0>;
+                    data-lanes = <2 1>;
+                    remote-endpoint = <&imx334_1>;
+                };
             };
-        };
-        port@2 {
-            reg = <2>;      /* port 2: link to the CEU */
+            port@1 {
+                reg = <1>;
 
-            csi2_2: endpoint {
-                remote-endpoint = <&ceu0_0>;
+                csi2_2: endpoint {
+                    remote-endpoint = <&ceu0_0>;
+                };
             };
         };
     };
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] dt-bindings: media: video-interfaces: Use documented bindings in example
  2021-03-16 19:51 [PATCH] dt-bindings: media: video-interfaces: Use documented bindings in example Rob Herring
@ 2021-03-16 20:48 ` Laurent Pinchart
  2021-03-16 21:09   ` Rob Herring
  0 siblings, 1 reply; 4+ messages in thread
From: Laurent Pinchart @ 2021-03-16 20:48 UTC (permalink / raw)
  To: Rob Herring
  Cc: devicetree, linux-kernel, Mauro Carvalho Chehab, Sakari Ailus,
	linux-media

Hi Rob,

Thank you for the patch.

On Tue, Mar 16, 2021 at 01:51:00PM -0600, Rob Herring wrote:
> The example in video-interfaces.yaml managed to use a bunch of undocumented
> bindings. Update the example to use real bindings (and ones with a schema).
> 
> Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
> Cc: Sakari Ailus <sakari.ailus@linux.intel.com>
> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> Cc: linux-media@vger.kernel.org
> Signed-off-by: Rob Herring <robh@kernel.org>
> ---
>  .../bindings/media/video-interfaces.yaml      | 75 ++++++++-----------
>  1 file changed, 33 insertions(+), 42 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/media/video-interfaces.yaml b/Documentation/devicetree/bindings/media/video-interfaces.yaml
> index 0a7a73fd59f2..f30b9b91717b 100644
> --- a/Documentation/devicetree/bindings/media/video-interfaces.yaml
> +++ b/Documentation/devicetree/bindings/media/video-interfaces.yaml
> @@ -227,17 +227,12 @@ examples:
>    # only one of the following data pipelines can be active:
>    # ov772x -> ceu0 or imx074 -> csi2 -> ceu0.
>    - |
> +    #include <dt-bindings/clock/r8a7796-cpg-mssr.h>
> +    #include <dt-bindings/interrupt-controller/arm-gic.h>
> +    #include <dt-bindings/power/r8a7796-sysc.h>
> +
>      ceu@fe910000 {
> -        compatible = "renesas,sh-mobile-ceu";
>          reg = <0xfe910000 0xa0>;
> -        interrupts = <0x880>;
> -
> -        mclk: master_clock {
> -            compatible = "renesas,ceu-clock";
> -            #clock-cells = <1>;
> -            clock-frequency = <50000000>;  /* Max clock frequency */
> -            clock-output-names = "mclk";
> -        };
>  
>          port {
>              #address-cells = <1>;
> @@ -271,18 +266,14 @@ examples:
>          #size-cells = <0>;
>  
>          camera@21 {
> -            compatible = "ovti,ov772x";
> +            compatible = "ovti,ov7720";
>              reg = <0x21>;
> -            vddio-supply = <&regulator1>;
> -            vddcore-supply = <&regulator2>;
> -
> -            clock-frequency = <20000000>;
>              clocks = <&mclk 0>;
> -            clock-names = "xclk";
>  
>              port {
>                  /* With 1 endpoint per port no need for addresses. */
>                  ov772x_1_1: endpoint {
> +                    bus-type = <5>;
>                      bus-width = <8>;
>                      remote-endpoint = <&ceu0_1>;
>                      hsync-active = <1>;
> @@ -295,48 +286,48 @@ examples:
>          };
>  
>          camera@1a {
> -            compatible = "sony,imx074";
> +            compatible = "sony,imx334";
>              reg = <0x1a>;
> -            vddio-supply = <&regulator1>;
> -            vddcore-supply = <&regulator2>;
>  
> -            clock-frequency = <30000000>;  /* Shared clock with ov772x_1 */
>              clocks = <&mclk 0>;
> -            clock-names = "sysclk";    /* Assuming this is the
> -                       name in the datasheet */
> +
>              port {
> -                imx074_1: endpoint {
> +                imx334_1: endpoint {
>                      clock-lanes = <0>;
>                      data-lanes = <1 2>;
> +                    link-frequencies = /bits/ 64 <891000000>;
>                      remote-endpoint = <&csi2_1>;
>                  };
>              };
>          };
>      };
>  
> -    csi2: csi2@ffc90000 {
> -        compatible = "renesas,sh-mobile-csi2";
> -        reg = <0xffc90000 0x1000>;
> -        interrupts = <0x17a0>;
> -        #address-cells = <1>;
> -        #size-cells = <0>;
> +    csi2@fea80000 {
> +        compatible = "renesas,r8a7796-csi2";

That's certainly better, but the r8a7796 doesn't have a CEU :-) It has a
VIN. Maybe we could copy the last example from renesas,vin.yaml to
replace the CEU ?

> +        reg = <0xfea80000 0x10000>;
> +        interrupts = <0 184 IRQ_TYPE_LEVEL_HIGH>;
> +        clocks = <&cpg CPG_MOD 714>;
> +        power-domains = <&sysc R8A7796_PD_ALWAYS_ON>;
> +        resets = <&cpg 714>;
>  
> -        port@1 {
> -            compatible = "renesas,csi2c";  /* One of CSI2I and CSI2C. */
> -            reg = <1>;      /* CSI-2 PHY #1 of 2: PHY_S,
> -                       PHY_M has port address 0,
> -                       is unused. */
> -            csi2_1: endpoint {
> -                clock-lanes = <0>;
> -                data-lanes = <2 1>;
> -                remote-endpoint = <&imx074_1>;
> +        ports {
> +            #address-cells = <1>;
> +            #size-cells = <0>;
> +
> +            port@0 {
> +                reg = <0>;
> +                csi2_1: endpoint {
> +                    clock-lanes = <0>;
> +                    data-lanes = <2 1>;
> +                    remote-endpoint = <&imx334_1>;
> +                };
>              };
> -        };
> -        port@2 {
> -            reg = <2>;      /* port 2: link to the CEU */
> +            port@1 {
> +                reg = <1>;
>  
> -            csi2_2: endpoint {
> -                remote-endpoint = <&ceu0_0>;
> +                csi2_2: endpoint {
> +                    remote-endpoint = <&ceu0_0>;
> +                };
>              };
>          };
>      };

-- 
Regards,

Laurent Pinchart

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] dt-bindings: media: video-interfaces: Use documented bindings in example
  2021-03-16 20:48 ` Laurent Pinchart
@ 2021-03-16 21:09   ` Rob Herring
  2021-03-16 21:15     ` Laurent Pinchart
  0 siblings, 1 reply; 4+ messages in thread
From: Rob Herring @ 2021-03-16 21:09 UTC (permalink / raw)
  To: Laurent Pinchart
  Cc: devicetree, linux-kernel, Mauro Carvalho Chehab, Sakari Ailus,
	Linux Media Mailing List

On Tue, Mar 16, 2021 at 2:48 PM Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
>
> Hi Rob,
>
> Thank you for the patch.
>
> On Tue, Mar 16, 2021 at 01:51:00PM -0600, Rob Herring wrote:
> > The example in video-interfaces.yaml managed to use a bunch of undocumented
> > bindings. Update the example to use real bindings (and ones with a schema).
> >
> > Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
> > Cc: Sakari Ailus <sakari.ailus@linux.intel.com>
> > Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > Cc: linux-media@vger.kernel.org
> > Signed-off-by: Rob Herring <robh@kernel.org>
> > ---
> >  .../bindings/media/video-interfaces.yaml      | 75 ++++++++-----------
> >  1 file changed, 33 insertions(+), 42 deletions(-)
> >
> > diff --git a/Documentation/devicetree/bindings/media/video-interfaces.yaml b/Documentation/devicetree/bindings/media/video-interfaces.yaml
> > index 0a7a73fd59f2..f30b9b91717b 100644
> > --- a/Documentation/devicetree/bindings/media/video-interfaces.yaml
> > +++ b/Documentation/devicetree/bindings/media/video-interfaces.yaml
> > @@ -227,17 +227,12 @@ examples:
> >    # only one of the following data pipelines can be active:
> >    # ov772x -> ceu0 or imx074 -> csi2 -> ceu0.
> >    - |
> > +    #include <dt-bindings/clock/r8a7796-cpg-mssr.h>
> > +    #include <dt-bindings/interrupt-controller/arm-gic.h>
> > +    #include <dt-bindings/power/r8a7796-sysc.h>
> > +
> >      ceu@fe910000 {
> > -        compatible = "renesas,sh-mobile-ceu";
> >          reg = <0xfe910000 0xa0>;
> > -        interrupts = <0x880>;
> > -
> > -        mclk: master_clock {
> > -            compatible = "renesas,ceu-clock";
> > -            #clock-cells = <1>;
> > -            clock-frequency = <50000000>;  /* Max clock frequency */
> > -            clock-output-names = "mclk";
> > -        };
> >
> >          port {
> >              #address-cells = <1>;
> > @@ -271,18 +266,14 @@ examples:
> >          #size-cells = <0>;
> >
> >          camera@21 {
> > -            compatible = "ovti,ov772x";
> > +            compatible = "ovti,ov7720";
> >              reg = <0x21>;
> > -            vddio-supply = <&regulator1>;
> > -            vddcore-supply = <&regulator2>;
> > -
> > -            clock-frequency = <20000000>;
> >              clocks = <&mclk 0>;
> > -            clock-names = "xclk";
> >
> >              port {
> >                  /* With 1 endpoint per port no need for addresses. */
> >                  ov772x_1_1: endpoint {
> > +                    bus-type = <5>;
> >                      bus-width = <8>;
> >                      remote-endpoint = <&ceu0_1>;
> >                      hsync-active = <1>;
> > @@ -295,48 +286,48 @@ examples:
> >          };
> >
> >          camera@1a {
> > -            compatible = "sony,imx074";
> > +            compatible = "sony,imx334";
> >              reg = <0x1a>;
> > -            vddio-supply = <&regulator1>;
> > -            vddcore-supply = <&regulator2>;
> >
> > -            clock-frequency = <30000000>;  /* Shared clock with ov772x_1 */
> >              clocks = <&mclk 0>;
> > -            clock-names = "sysclk";    /* Assuming this is the
> > -                       name in the datasheet */
> > +
> >              port {
> > -                imx074_1: endpoint {
> > +                imx334_1: endpoint {
> >                      clock-lanes = <0>;
> >                      data-lanes = <1 2>;
> > +                    link-frequencies = /bits/ 64 <891000000>;
> >                      remote-endpoint = <&csi2_1>;
> >                  };
> >              };
> >          };
> >      };
> >
> > -    csi2: csi2@ffc90000 {
> > -        compatible = "renesas,sh-mobile-csi2";
> > -        reg = <0xffc90000 0x1000>;
> > -        interrupts = <0x17a0>;
> > -        #address-cells = <1>;
> > -        #size-cells = <0>;
> > +    csi2@fea80000 {
> > +        compatible = "renesas,r8a7796-csi2";
>
> That's certainly better, but the r8a7796 doesn't have a CEU :-) It has a
> VIN. Maybe we could copy the last example from renesas,vin.yaml to
> replace the CEU ?

What about just removing the example here? It bothers me to have 2
copies (maybe 3 with sensor schemas) of an example and we should have
plenty of examples. On the flip side, it's nice to have this stand on
its own. Another option would be just remove compatibles and make the
example barebones with only what's defined in video-interfaces.yaml.
But then it's not validated at all.

Rob

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] dt-bindings: media: video-interfaces: Use documented bindings in example
  2021-03-16 21:09   ` Rob Herring
@ 2021-03-16 21:15     ` Laurent Pinchart
  0 siblings, 0 replies; 4+ messages in thread
From: Laurent Pinchart @ 2021-03-16 21:15 UTC (permalink / raw)
  To: Rob Herring
  Cc: devicetree, linux-kernel, Mauro Carvalho Chehab, Sakari Ailus,
	Linux Media Mailing List

Hi Rob,

On Tue, Mar 16, 2021 at 03:09:10PM -0600, Rob Herring wrote:
> On Tue, Mar 16, 2021 at 2:48 PM Laurent Pinchart wrote:
> > On Tue, Mar 16, 2021 at 01:51:00PM -0600, Rob Herring wrote:
> > > The example in video-interfaces.yaml managed to use a bunch of undocumented
> > > bindings. Update the example to use real bindings (and ones with a schema).
> > >
> > > Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
> > > Cc: Sakari Ailus <sakari.ailus@linux.intel.com>
> > > Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > Cc: linux-media@vger.kernel.org
> > > Signed-off-by: Rob Herring <robh@kernel.org>
> > > ---
> > >  .../bindings/media/video-interfaces.yaml      | 75 ++++++++-----------
> > >  1 file changed, 33 insertions(+), 42 deletions(-)
> > >
> > > diff --git a/Documentation/devicetree/bindings/media/video-interfaces.yaml b/Documentation/devicetree/bindings/media/video-interfaces.yaml
> > > index 0a7a73fd59f2..f30b9b91717b 100644
> > > --- a/Documentation/devicetree/bindings/media/video-interfaces.yaml
> > > +++ b/Documentation/devicetree/bindings/media/video-interfaces.yaml
> > > @@ -227,17 +227,12 @@ examples:
> > >    # only one of the following data pipelines can be active:
> > >    # ov772x -> ceu0 or imx074 -> csi2 -> ceu0.
> > >    - |
> > > +    #include <dt-bindings/clock/r8a7796-cpg-mssr.h>
> > > +    #include <dt-bindings/interrupt-controller/arm-gic.h>
> > > +    #include <dt-bindings/power/r8a7796-sysc.h>
> > > +
> > >      ceu@fe910000 {
> > > -        compatible = "renesas,sh-mobile-ceu";
> > >          reg = <0xfe910000 0xa0>;
> > > -        interrupts = <0x880>;
> > > -
> > > -        mclk: master_clock {
> > > -            compatible = "renesas,ceu-clock";
> > > -            #clock-cells = <1>;
> > > -            clock-frequency = <50000000>;  /* Max clock frequency */
> > > -            clock-output-names = "mclk";
> > > -        };
> > >
> > >          port {
> > >              #address-cells = <1>;
> > > @@ -271,18 +266,14 @@ examples:
> > >          #size-cells = <0>;
> > >
> > >          camera@21 {
> > > -            compatible = "ovti,ov772x";
> > > +            compatible = "ovti,ov7720";
> > >              reg = <0x21>;
> > > -            vddio-supply = <&regulator1>;
> > > -            vddcore-supply = <&regulator2>;
> > > -
> > > -            clock-frequency = <20000000>;
> > >              clocks = <&mclk 0>;
> > > -            clock-names = "xclk";
> > >
> > >              port {
> > >                  /* With 1 endpoint per port no need for addresses. */
> > >                  ov772x_1_1: endpoint {
> > > +                    bus-type = <5>;
> > >                      bus-width = <8>;
> > >                      remote-endpoint = <&ceu0_1>;
> > >                      hsync-active = <1>;
> > > @@ -295,48 +286,48 @@ examples:
> > >          };
> > >
> > >          camera@1a {
> > > -            compatible = "sony,imx074";
> > > +            compatible = "sony,imx334";
> > >              reg = <0x1a>;
> > > -            vddio-supply = <&regulator1>;
> > > -            vddcore-supply = <&regulator2>;
> > >
> > > -            clock-frequency = <30000000>;  /* Shared clock with ov772x_1 */
> > >              clocks = <&mclk 0>;
> > > -            clock-names = "sysclk";    /* Assuming this is the
> > > -                       name in the datasheet */
> > > +
> > >              port {
> > > -                imx074_1: endpoint {
> > > +                imx334_1: endpoint {
> > >                      clock-lanes = <0>;
> > >                      data-lanes = <1 2>;
> > > +                    link-frequencies = /bits/ 64 <891000000>;
> > >                      remote-endpoint = <&csi2_1>;
> > >                  };
> > >              };
> > >          };
> > >      };
> > >
> > > -    csi2: csi2@ffc90000 {
> > > -        compatible = "renesas,sh-mobile-csi2";
> > > -        reg = <0xffc90000 0x1000>;
> > > -        interrupts = <0x17a0>;
> > > -        #address-cells = <1>;
> > > -        #size-cells = <0>;
> > > +    csi2@fea80000 {
> > > +        compatible = "renesas,r8a7796-csi2";
> >
> > That's certainly better, but the r8a7796 doesn't have a CEU :-) It has a
> > VIN. Maybe we could copy the last example from renesas,vin.yaml to
> > replace the CEU ?
> 
> What about just removing the example here? It bothers me to have 2
> copies (maybe 3 with sensor schemas) of an example and we should have
> plenty of examples.

I'd be fine with that.

> On the flip side, it's nice to have this stand on its own. Another
> option would be just remove compatibles and make the example barebones
> with only what's defined in video-interfaces.yaml.

Abstract examples seem good in this context.

> But then it's not validated at all.

But this part isn't nice :-(

If we keep examples that use real bindings, they should match the real
hardware platforms. Other than that, I have no strong preference, it's
up to you.

-- 
Regards,

Laurent Pinchart

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-03-16 21:17 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-16 19:51 [PATCH] dt-bindings: media: video-interfaces: Use documented bindings in example Rob Herring
2021-03-16 20:48 ` Laurent Pinchart
2021-03-16 21:09   ` Rob Herring
2021-03-16 21:15     ` Laurent Pinchart

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.