diff mbox series

[v9,1/3] media: dt-bindings: media: add bindings for Rockchip CIF

Message ID 5f83d60031320c4c7b0f0727604903f50ee49058.1698666612.git.mehdi.djait@bootlin.com (mailing list archive)
State New, archived
Headers show
Series media: rockchip: Add a driver for Rockchip's camera interface | expand

Commit Message

Mehdi Djait Oct. 30, 2023, 12:25 p.m. UTC
Add a documentation for the Rockchip Camera Interface
binding.

Signed-off-by: Mehdi Djait <mehdi.djait@bootlin.com>
---
v8=>v9:
dropped the "Reviewed-by: Rob Herring <robh@kernel.org>"
because of the following changes:
- changed the compatible to rk3066-cif: rk3066 is the earliest Rockchip SoC
  that uses cif and it is the first model starting the RK30 lineup.
- adjusted the description
- changed the node name to video-capture


 .../bindings/media/rockchip,rk3066-cif.yaml   | 96 +++++++++++++++++++
 1 file changed, 96 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/media/rockchip,rk3066-cif.yaml

Comments

Rob Herring (Arm) Oct. 30, 2023, 7:32 p.m. UTC | #1
On Mon, Oct 30, 2023 at 01:25:12PM +0100, Mehdi Djait wrote:
> Add a documentation for the Rockchip Camera Interface
> binding.
> 
> Signed-off-by: Mehdi Djait <mehdi.djait@bootlin.com>
> ---
> v8=>v9:
> dropped the "Reviewed-by: Rob Herring <robh@kernel.org>"
> because of the following changes:
> - changed the compatible to rk3066-cif: rk3066 is the earliest Rockchip SoC
>   that uses cif and it is the first model starting the RK30 lineup.

Is px30 compatible with rk3066? It's not clear because you didn't add 
rk3066 support. If not compatible, then add rk3066 when you have a user. 
If it is compatible, then you should have a fallback for px30.

> - adjusted the description
> - changed the node name to video-capture
> 
> 
>  .../bindings/media/rockchip,rk3066-cif.yaml   | 96 +++++++++++++++++++
>  1 file changed, 96 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/media/rockchip,rk3066-cif.yaml
> 
> diff --git a/Documentation/devicetree/bindings/media/rockchip,rk3066-cif.yaml b/Documentation/devicetree/bindings/media/rockchip,rk3066-cif.yaml
> new file mode 100644
> index 000000000000..be69e474ed26
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/media/rockchip,rk3066-cif.yaml
> @@ -0,0 +1,96 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/media/rockchip,rk3066-cif.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Rockchip CIF Camera Interface
> +
> +maintainers:
> +  - Mehdi Djait <mehdi.djait@bootlin.com>
> +
> +description: |

Don't need '|'

> +  CIF is a camera interface present on some rockchip SoCs. It
> +  receives the data from Camera sensor or CCIR656 encoder and
> +  transfers it into system main memory by AXI bus.

Wrap lines at 80.

> +
> +properties:
> +  compatible:
> +    enum:
> +      - rockchip,rk3066-cif
> +      - rockchip,px30-vip
> +
> +  reg:
> +    maxItems: 1
> +
> +  interrupts:
> +    maxItems: 1
> +
> +  clocks:
> +    items:
> +      - description: ACLK
> +      - description: HCLK
> +      - description: PCLK
> +
> +  clock-names:
> +    items:
> +      - const: aclk
> +      - const: hclk
> +      - const: pclk
> +
> +  resets:
> +    items:
> +      - description: AXI
> +      - description: AHB
> +      - description: PCLK IN
> +
> +  reset-names:
> +    items:
> +      - const: axi
> +      - const: ahb
> +      - const: pclkin
> +
> +  power-domains:
> +    maxItems: 1
> +
> +  port:
> +    $ref: /schemas/graph.yaml#/properties/port
> +    description: A connection to a sensor or decoder
> +
> +required:
> +  - compatible
> +  - reg
> +  - interrupts
> +  - clocks
> +  - port
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    #include <dt-bindings/interrupt-controller/arm-gic.h>
> +    #include <dt-bindings/clock/px30-cru.h>
> +    #include <dt-bindings/power/px30-power.h>
> +
> +    parent {
> +        #address-cells = <2>;
> +        #size-cells = <2>;
> +
> +        video-capture@ff490000 {
> +            compatible = "rockchip,px30-vip";
> +            reg = <0x0 0xff490000 0x0 0x200>;
> +            interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
> +            clocks = <&cru ACLK_CIF>, <&cru HCLK_CIF>, <&cru PCLK_CIF>;
> +            clock-names = "aclk", "hclk", "pclk";
> +            resets = <&cru SRST_CIF_A>, <&cru SRST_CIF_H>, <&cru SRST_CIF_PCLKIN>;
> +            reset-names = "axi", "ahb", "pclkin";
> +            power-domains = <&power PX30_PD_VI>;
> +
> +            port {
> +                endpoint {
> +                    remote-endpoint = <&tw9900_out>;
> +                };
> +            };
> +        };
> +    };
> +...
> -- 
> 2.41.0
>
Paul Kocialkowski Oct. 31, 2023, 9:51 a.m. UTC | #2
Hi Rob,

On Mon 30 Oct 23, 14:32, Rob Herring wrote:
> On Mon, Oct 30, 2023 at 01:25:12PM +0100, Mehdi Djait wrote:
> > Add a documentation for the Rockchip Camera Interface
> > binding.
> > 
> > Signed-off-by: Mehdi Djait <mehdi.djait@bootlin.com>
> > ---
> > v8=>v9:
> > dropped the "Reviewed-by: Rob Herring <robh@kernel.org>"
> > because of the following changes:
> > - changed the compatible to rk3066-cif: rk3066 is the earliest Rockchip SoC
> >   that uses cif and it is the first model starting the RK30 lineup.
> 
> Is px30 compatible with rk3066? It's not clear because you didn't add 
> rk3066 support. If not compatible, then add rk3066 when you have a user. 
> If it is compatible, then you should have a fallback for px30.

Just to clarify here: we haven't checked that rk3066 uses the exact same
programming model as px30 (so there should be no fallback compatible), but it
is definitely the same unit (in a different version).

Since the yaml binding document will apply to all generations of the unit,
the name of the file should be the first generation (rk3066) instead of the
px30 which is just one of the many iterations of the unit.

It would be both confusing and irrelevant to pick px30 just because it happens
to be the first generation supported in the Linux driver (and described in
the binding).

Cheers,

Paul

> > - adjusted the description
> > - changed the node name to video-capture
> > 
> > 
> >  .../bindings/media/rockchip,rk3066-cif.yaml   | 96 +++++++++++++++++++
> >  1 file changed, 96 insertions(+)
> >  create mode 100644 Documentation/devicetree/bindings/media/rockchip,rk3066-cif.yaml
> > 
> > diff --git a/Documentation/devicetree/bindings/media/rockchip,rk3066-cif.yaml b/Documentation/devicetree/bindings/media/rockchip,rk3066-cif.yaml
> > new file mode 100644
> > index 000000000000..be69e474ed26
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/media/rockchip,rk3066-cif.yaml
> > @@ -0,0 +1,96 @@
> > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/media/rockchip,rk3066-cif.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: Rockchip CIF Camera Interface
> > +
> > +maintainers:
> > +  - Mehdi Djait <mehdi.djait@bootlin.com>
> > +
> > +description: |
> 
> Don't need '|'
> 
> > +  CIF is a camera interface present on some rockchip SoCs. It
> > +  receives the data from Camera sensor or CCIR656 encoder and
> > +  transfers it into system main memory by AXI bus.
> 
> Wrap lines at 80.
> 
> > +
> > +properties:
> > +  compatible:
> > +    enum:
> > +      - rockchip,rk3066-cif
> > +      - rockchip,px30-vip
> > +
> > +  reg:
> > +    maxItems: 1
> > +
> > +  interrupts:
> > +    maxItems: 1
> > +
> > +  clocks:
> > +    items:
> > +      - description: ACLK
> > +      - description: HCLK
> > +      - description: PCLK
> > +
> > +  clock-names:
> > +    items:
> > +      - const: aclk
> > +      - const: hclk
> > +      - const: pclk
> > +
> > +  resets:
> > +    items:
> > +      - description: AXI
> > +      - description: AHB
> > +      - description: PCLK IN
> > +
> > +  reset-names:
> > +    items:
> > +      - const: axi
> > +      - const: ahb
> > +      - const: pclkin
> > +
> > +  power-domains:
> > +    maxItems: 1
> > +
> > +  port:
> > +    $ref: /schemas/graph.yaml#/properties/port
> > +    description: A connection to a sensor or decoder
> > +
> > +required:
> > +  - compatible
> > +  - reg
> > +  - interrupts
> > +  - clocks
> > +  - port
> > +
> > +additionalProperties: false
> > +
> > +examples:
> > +  - |
> > +    #include <dt-bindings/interrupt-controller/arm-gic.h>
> > +    #include <dt-bindings/clock/px30-cru.h>
> > +    #include <dt-bindings/power/px30-power.h>
> > +
> > +    parent {
> > +        #address-cells = <2>;
> > +        #size-cells = <2>;
> > +
> > +        video-capture@ff490000 {
> > +            compatible = "rockchip,px30-vip";
> > +            reg = <0x0 0xff490000 0x0 0x200>;
> > +            interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
> > +            clocks = <&cru ACLK_CIF>, <&cru HCLK_CIF>, <&cru PCLK_CIF>;
> > +            clock-names = "aclk", "hclk", "pclk";
> > +            resets = <&cru SRST_CIF_A>, <&cru SRST_CIF_H>, <&cru SRST_CIF_PCLKIN>;
> > +            reset-names = "axi", "ahb", "pclkin";
> > +            power-domains = <&power PX30_PD_VI>;
> > +
> > +            port {
> > +                endpoint {
> > +                    remote-endpoint = <&tw9900_out>;
> > +                };
> > +            };
> > +        };
> > +    };
> > +...
> > -- 
> > 2.41.0
> >
Conor Dooley Nov. 1, 2023, 3:44 p.m. UTC | #3
On Tue, Oct 31, 2023 at 10:51:07AM +0100, Paul Kocialkowski wrote:
> Hi Rob,
> 
> On Mon 30 Oct 23, 14:32, Rob Herring wrote:
> > On Mon, Oct 30, 2023 at 01:25:12PM +0100, Mehdi Djait wrote:
> > > Add a documentation for the Rockchip Camera Interface
> > > binding.
> > > 
> > > Signed-off-by: Mehdi Djait <mehdi.djait@bootlin.com>
> > > ---
> > > v8=>v9:
> > > dropped the "Reviewed-by: Rob Herring <robh@kernel.org>"
> > > because of the following changes:
> > > - changed the compatible to rk3066-cif: rk3066 is the earliest Rockchip SoC
> > >   that uses cif and it is the first model starting the RK30 lineup.
> > 
> > Is px30 compatible with rk3066? It's not clear because you didn't add 
> > rk3066 support. If not compatible, then add rk3066 when you have a user. 
> > If it is compatible, then you should have a fallback for px30.
> 
> Just to clarify here: we haven't checked that rk3066 uses the exact same
> programming model as px30 (so there should be no fallback compatible), but it
> is definitely the same unit (in a different version).

If you aren't sure about the programming model, are you sure about the
number of clocks, resets etc that it has? Same IP in a different SoC
could be integrated differently, right?

> Since the yaml binding document will apply to all generations of the unit,
> the name of the file should be the first generation (rk3066) instead of the
> px30 which is just one of the many iterations of the unit.
> 
> It would be both confusing and irrelevant to pick px30 just because it happens
> to be the first generation supported in the Linux driver (and described in
> the binding).
Paul Kocialkowski Nov. 1, 2023, 4:56 p.m. UTC | #4
Hi Conor,

On Wed 01 Nov 23, 15:44, Conor Dooley wrote:
> On Tue, Oct 31, 2023 at 10:51:07AM +0100, Paul Kocialkowski wrote:
> > Hi Rob,
> > 
> > On Mon 30 Oct 23, 14:32, Rob Herring wrote:
> > > On Mon, Oct 30, 2023 at 01:25:12PM +0100, Mehdi Djait wrote:
> > > > Add a documentation for the Rockchip Camera Interface
> > > > binding.
> > > > 
> > > > Signed-off-by: Mehdi Djait <mehdi.djait@bootlin.com>
> > > > ---
> > > > v8=>v9:
> > > > dropped the "Reviewed-by: Rob Herring <robh@kernel.org>"
> > > > because of the following changes:
> > > > - changed the compatible to rk3066-cif: rk3066 is the earliest Rockchip SoC
> > > >   that uses cif and it is the first model starting the RK30 lineup.
> > > 
> > > Is px30 compatible with rk3066? It's not clear because you didn't add 
> > > rk3066 support. If not compatible, then add rk3066 when you have a user. 
> > > If it is compatible, then you should have a fallback for px30.
> > 
> > Just to clarify here: we haven't checked that rk3066 uses the exact same
> > programming model as px30 (so there should be no fallback compatible), but it
> > is definitely the same unit (in a different version).
> 
> If you aren't sure about the programming model, are you sure about the
> number of clocks, resets etc that it has? Same IP in a different SoC
> could be integrated differently, right?

Yes absolutely there might be differences in these areas. But we can always add
conditionals in the binding to take care of different cases later.

My main concern is to avoid giving px30 too much importance just because it
happens to be the first platform supported by the Linux driver.

Cheers,

Paul

> > Since the yaml binding document will apply to all generations of the unit,
> > the name of the file should be the first generation (rk3066) instead of the
> > px30 which is just one of the many iterations of the unit.
> > 
> > It would be both confusing and irrelevant to pick px30 just because it happens
> > to be the first generation supported in the Linux driver (and described in
> > the binding).
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/media/rockchip,rk3066-cif.yaml b/Documentation/devicetree/bindings/media/rockchip,rk3066-cif.yaml
new file mode 100644
index 000000000000..be69e474ed26
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/rockchip,rk3066-cif.yaml
@@ -0,0 +1,96 @@ 
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/rockchip,rk3066-cif.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Rockchip CIF Camera Interface
+
+maintainers:
+  - Mehdi Djait <mehdi.djait@bootlin.com>
+
+description: |
+  CIF is a camera interface present on some rockchip SoCs. It
+  receives the data from Camera sensor or CCIR656 encoder and
+  transfers it into system main memory by AXI bus.
+
+properties:
+  compatible:
+    enum:
+      - rockchip,rk3066-cif
+      - rockchip,px30-vip
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: ACLK
+      - description: HCLK
+      - description: PCLK
+
+  clock-names:
+    items:
+      - const: aclk
+      - const: hclk
+      - const: pclk
+
+  resets:
+    items:
+      - description: AXI
+      - description: AHB
+      - description: PCLK IN
+
+  reset-names:
+    items:
+      - const: axi
+      - const: ahb
+      - const: pclkin
+
+  power-domains:
+    maxItems: 1
+
+  port:
+    $ref: /schemas/graph.yaml#/properties/port
+    description: A connection to a sensor or decoder
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - port
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/clock/px30-cru.h>
+    #include <dt-bindings/power/px30-power.h>
+
+    parent {
+        #address-cells = <2>;
+        #size-cells = <2>;
+
+        video-capture@ff490000 {
+            compatible = "rockchip,px30-vip";
+            reg = <0x0 0xff490000 0x0 0x200>;
+            interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
+            clocks = <&cru ACLK_CIF>, <&cru HCLK_CIF>, <&cru PCLK_CIF>;
+            clock-names = "aclk", "hclk", "pclk";
+            resets = <&cru SRST_CIF_A>, <&cru SRST_CIF_H>, <&cru SRST_CIF_PCLKIN>;
+            reset-names = "axi", "ahb", "pclkin";
+            power-domains = <&power PX30_PD_VI>;
+
+            port {
+                endpoint {
+                    remote-endpoint = <&tw9900_out>;
+                };
+            };
+        };
+    };
+...