Message ID | 20191108021748.2584486-1-niklas.soderlund+renesas@ragnatech.se (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | dt-bindings: rcar-csi2: Convert bindings to json-schema | expand |
On 11/8/19 3:17 AM, Niklas Söderlund wrote: > Convert Renesas R-Car MIPI CSI-2 receiver bindings documentation to > json-schema. > > Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> > --- > .../bindings/media/renesas,csi2.txt | 107 ---------- > .../bindings/media/renesas,csi2.yaml | 200 ++++++++++++++++++ > 2 files changed, 200 insertions(+), 107 deletions(-) > delete mode 100644 Documentation/devicetree/bindings/media/renesas,csi2.txt > create mode 100644 Documentation/devicetree/bindings/media/renesas,csi2.yaml Please update MAINTAINERS as well since it still refers to the old .txt file. Regards, Hans > > diff --git a/Documentation/devicetree/bindings/media/renesas,csi2.txt b/Documentation/devicetree/bindings/media/renesas,csi2.txt > deleted file mode 100644 > index 2da6f60b2b5659f6..0000000000000000 > --- a/Documentation/devicetree/bindings/media/renesas,csi2.txt > +++ /dev/null > @@ -1,107 +0,0 @@ > -Renesas R-Car MIPI CSI-2 > ------------------------- > - > -The R-Car CSI-2 receiver device provides MIPI CSI-2 capabilities for the > -Renesas R-Car and RZ/G2 family of devices. It is used in conjunction with the > -R-Car VIN module, which provides the video capture capabilities. > - > -Mandatory properties > --------------------- > - - compatible: Must be one or more of the following > - - "renesas,r8a774a1-csi2" for the R8A774A1 device. > - - "renesas,r8a774b1-csi2" for the R8A774B1 device. > - - "renesas,r8a774c0-csi2" for the R8A774C0 device. > - - "renesas,r8a7795-csi2" for the R8A7795 device. > - - "renesas,r8a7796-csi2" for the R8A7796 device. > - - "renesas,r8a77965-csi2" for the R8A77965 device. > - - "renesas,r8a77970-csi2" for the R8A77970 device. > - - "renesas,r8a77980-csi2" for the R8A77980 device. > - - "renesas,r8a77990-csi2" for the R8A77990 device. > - > - - reg: the register base and size for the device registers > - - interrupts: the interrupt for the device > - - clocks: A phandle + clock specifier for the module clock > - - resets: A phandle + reset specifier for the module reset > - > -The device node shall contain two 'port' child nodes according to the > -bindings defined in Documentation/devicetree/bindings/media/ > -video-interfaces.txt. port@0 shall connect to the CSI-2 source. port@1 > -shall connect to all the R-Car VIN modules that have a hardware > -connection to the CSI-2 receiver. > - > -- port@0- Video source (mandatory) > - - endpoint@0 - sub-node describing the endpoint that is the video source > - > -- port@1 - VIN instances (optional) > - - One endpoint sub-node for every R-Car VIN instance which is connected > - to the R-Car CSI-2 receiver. > - > -Example: > - > - csi20: csi2@fea80000 { > - compatible = "renesas,r8a7796-csi2"; > - reg = <0 0xfea80000 0 0x10000>; > - interrupts = <0 184 IRQ_TYPE_LEVEL_HIGH>; > - clocks = <&cpg CPG_MOD 714>; > - power-domains = <&sysc R8A7796_PD_ALWAYS_ON>; > - resets = <&cpg 714>; > - > - ports { > - #address-cells = <1>; > - #size-cells = <0>; > - > - port@0 { > - #address-cells = <1>; > - #size-cells = <0>; > - > - reg = <0>; > - > - csi20_in: endpoint@0 { > - reg = <0>; > - clock-lanes = <0>; > - data-lanes = <1>; > - remote-endpoint = <&adv7482_txb>; > - }; > - }; > - > - port@1 { > - #address-cells = <1>; > - #size-cells = <0>; > - > - reg = <1>; > - > - csi20vin0: endpoint@0 { > - reg = <0>; > - remote-endpoint = <&vin0csi20>; > - }; > - csi20vin1: endpoint@1 { > - reg = <1>; > - remote-endpoint = <&vin1csi20>; > - }; > - csi20vin2: endpoint@2 { > - reg = <2>; > - remote-endpoint = <&vin2csi20>; > - }; > - csi20vin3: endpoint@3 { > - reg = <3>; > - remote-endpoint = <&vin3csi20>; > - }; > - csi20vin4: endpoint@4 { > - reg = <4>; > - remote-endpoint = <&vin4csi20>; > - }; > - csi20vin5: endpoint@5 { > - reg = <5>; > - remote-endpoint = <&vin5csi20>; > - }; > - csi20vin6: endpoint@6 { > - reg = <6>; > - remote-endpoint = <&vin6csi20>; > - }; > - csi20vin7: endpoint@7 { > - reg = <7>; > - remote-endpoint = <&vin7csi20>; > - }; > - }; > - }; > - }; > diff --git a/Documentation/devicetree/bindings/media/renesas,csi2.yaml b/Documentation/devicetree/bindings/media/renesas,csi2.yaml > new file mode 100644 > index 0000000000000000..a6d2b597c4944693 > --- /dev/null > +++ b/Documentation/devicetree/bindings/media/renesas,csi2.yaml > @@ -0,0 +1,200 @@ > +# SPDX-License-Identifier: GPL-2.0 > +# Copyright (C) 2019 Renesas Electronics Corp. > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/media/renesas,csi2.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Renesas R-Car MIPI CSI-2 receiver > + > +maintainers: > + - Niklas Söderlund <niklas.soderlund@ragnatech.se> > + > +description: |- > + The R-Car CSI-2 receiver device provides MIPI CSI-2 capabilities for the > + Renesas R-Car and RZ/G2 family of devices. It is used in conjunction with the > + R-Car VIN module, which provides the video capture capabilities. > + > +properties: > + compatible: > + items: > + - enum: > + - renesas,r8a774a1-csi2 # RZ/G2M > + - renesas,r8a774b1-csi2 # RZ/G2N > + - renesas,r8a774c0-csi2 # RZ/G2E > + - renesas,r8a7795-csi2 # R-Car H3 > + - renesas,r8a7796-csi2 # R-Car M3-W > + - renesas,r8a77965-csi2 # R-Car M3-N > + - renesas,r8a77970-csi2 # R-Car V3M > + - renesas,r8a77980-csi2 # R-Car V3H > + - renesas,r8a77990-csi2 # R-Car E3 > + > + reg: > + maxItems: 1 > + > + interrupts: > + maxItems: 1 > + > + clocks: > + maxItems: 1 > + > + power-domains: > + maxItems: 1 > + > + resets: > + maxItems: 1 > + > + ports: > + type: object > + description: |- > + A node containing input and output port nodes with endpoint definitions > + as documented in > + Documentation/devicetree/bindings/media/video-interfaces.txt > + > + properties: > + port@0: > + type: object > + description: |- > + Input port node, single endpoint describing the CSI-2 transmitter. > + > + properties: > + reg: > + const: 0 > + > + endpoint: > + type: object > + > + properties: > + clock-lanes: > + maxItems: 1 > + > + data-lanes: > + maxItems: 1 > + > + remote-endpoint: > + maxItems: 1 > + > + required: > + - clock-lanes > + - data-lanes > + - remote-endpoint > + > + additionalProperties: false > + > + additionalProperties: false > + > + port@1: > + type: object > + description: |- > + Output port node, multiple endpoints describing all the R-Car VIN > + modules connected the CSI-2 receiver. > + > + properties: > + '#address-cells': > + const: 1 > + > + '#size-cells': > + const: 0 > + > + reg: > + const: 1 > + > + patternProperties: > + "^endpoint@[0-9]+$": > + type: object > + > + properties: > + reg: > + maxItems: 1 > + > + remote-endpoint: > + maxItems: 1 > + > + required: > + - reg > + - remote-endpoint > + > + additionalProperties: false > + > + additionalProperties: false > + > +required: > + - compatible > + - reg > + - interrupts > + - clocks > + - power-domains > + - resets > + - ports > + > +additionalProperties: false > + > +examples: > + - | > + #include <dt-bindings/clock/r8a7796-cpg-mssr.h> > + #include <dt-bindings/interrupt-controller/arm-gic.h> > + #include <dt-bindings/power/r8a7796-sysc.h> > + > + csi20: csi2@fea80000 { > + compatible = "renesas,r8a7796-csi2"; > + reg = <0 0xfea80000 0 0x10000>; > + interrupts = <0 184 IRQ_TYPE_LEVEL_HIGH>; > + clocks = <&cpg CPG_MOD 714>; > + power-domains = <&sysc R8A7796_PD_ALWAYS_ON>; > + resets = <&cpg 714>; > + > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + reg = <0>; > + > + csi20_in: endpoint { > + clock-lanes = <0>; > + data-lanes = <1>; > + remote-endpoint = <&adv7482_txb>; > + }; > + }; > + > + port@1 { > + #address-cells = <1>; > + #size-cells = <0>; > + > + reg = <1>; > + > + csi20vin0: endpoint@0 { > + reg = <0>; > + remote-endpoint = <&vin0csi20>; > + }; > + csi20vin1: endpoint@1 { > + reg = <1>; > + remote-endpoint = <&vin1csi20>; > + }; > + csi20vin2: endpoint@2 { > + reg = <2>; > + remote-endpoint = <&vin2csi20>; > + }; > + csi20vin3: endpoint@3 { > + reg = <3>; > + remote-endpoint = <&vin3csi20>; > + }; > + csi20vin4: endpoint@4 { > + reg = <4>; > + remote-endpoint = <&vin4csi20>; > + }; > + csi20vin5: endpoint@5 { > + reg = <5>; > + remote-endpoint = <&vin5csi20>; > + }; > + csi20vin6: endpoint@6 { > + reg = <6>; > + remote-endpoint = <&vin6csi20>; > + }; > + csi20vin7: endpoint@7 { > + reg = <7>; > + remote-endpoint = <&vin7csi20>; > + }; > + }; > + }; > + }; >
Hi Niklas, thanks for the patch On Fri, Nov 08, 2019 at 03:17:48AM +0100, Niklas Söderlund wrote: > Convert Renesas R-Car MIPI CSI-2 receiver bindings documentation to > json-schema. > > Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> > --- > .../bindings/media/renesas,csi2.txt | 107 ---------- > .../bindings/media/renesas,csi2.yaml | 200 ++++++++++++++++++ > 2 files changed, 200 insertions(+), 107 deletions(-) > delete mode 100644 Documentation/devicetree/bindings/media/renesas,csi2.txt > create mode 100644 Documentation/devicetree/bindings/media/renesas,csi2.yaml > > diff --git a/Documentation/devicetree/bindings/media/renesas,csi2.txt b/Documentation/devicetree/bindings/media/renesas,csi2.txt > deleted file mode 100644 > index 2da6f60b2b5659f6..0000000000000000 > --- a/Documentation/devicetree/bindings/media/renesas,csi2.txt > +++ /dev/null > @@ -1,107 +0,0 @@ > -Renesas R-Car MIPI CSI-2 > ------------------------- > - > -The R-Car CSI-2 receiver device provides MIPI CSI-2 capabilities for the > -Renesas R-Car and RZ/G2 family of devices. It is used in conjunction with the > -R-Car VIN module, which provides the video capture capabilities. > - > -Mandatory properties > --------------------- > - - compatible: Must be one or more of the following > - - "renesas,r8a774a1-csi2" for the R8A774A1 device. > - - "renesas,r8a774b1-csi2" for the R8A774B1 device. > - - "renesas,r8a774c0-csi2" for the R8A774C0 device. > - - "renesas,r8a7795-csi2" for the R8A7795 device. > - - "renesas,r8a7796-csi2" for the R8A7796 device. > - - "renesas,r8a77965-csi2" for the R8A77965 device. > - - "renesas,r8a77970-csi2" for the R8A77970 device. > - - "renesas,r8a77980-csi2" for the R8A77980 device. > - - "renesas,r8a77990-csi2" for the R8A77990 device. > - > - - reg: the register base and size for the device registers > - - interrupts: the interrupt for the device > - - clocks: A phandle + clock specifier for the module clock > - - resets: A phandle + reset specifier for the module reset > - > -The device node shall contain two 'port' child nodes according to the > -bindings defined in Documentation/devicetree/bindings/media/ > -video-interfaces.txt. port@0 shall connect to the CSI-2 source. port@1 > -shall connect to all the R-Car VIN modules that have a hardware > -connection to the CSI-2 receiver. > - > -- port@0- Video source (mandatory) > - - endpoint@0 - sub-node describing the endpoint that is the video source > - > -- port@1 - VIN instances (optional) > - - One endpoint sub-node for every R-Car VIN instance which is connected > - to the R-Car CSI-2 receiver. > - > -Example: > - > - csi20: csi2@fea80000 { > - compatible = "renesas,r8a7796-csi2"; > - reg = <0 0xfea80000 0 0x10000>; > - interrupts = <0 184 IRQ_TYPE_LEVEL_HIGH>; > - clocks = <&cpg CPG_MOD 714>; > - power-domains = <&sysc R8A7796_PD_ALWAYS_ON>; > - resets = <&cpg 714>; > - > - ports { > - #address-cells = <1>; > - #size-cells = <0>; > - > - port@0 { > - #address-cells = <1>; > - #size-cells = <0>; > - > - reg = <0>; > - > - csi20_in: endpoint@0 { > - reg = <0>; > - clock-lanes = <0>; > - data-lanes = <1>; > - remote-endpoint = <&adv7482_txb>; > - }; > - }; > - > - port@1 { > - #address-cells = <1>; > - #size-cells = <0>; > - > - reg = <1>; > - > - csi20vin0: endpoint@0 { > - reg = <0>; > - remote-endpoint = <&vin0csi20>; > - }; > - csi20vin1: endpoint@1 { > - reg = <1>; > - remote-endpoint = <&vin1csi20>; > - }; > - csi20vin2: endpoint@2 { > - reg = <2>; > - remote-endpoint = <&vin2csi20>; > - }; > - csi20vin3: endpoint@3 { > - reg = <3>; > - remote-endpoint = <&vin3csi20>; > - }; > - csi20vin4: endpoint@4 { > - reg = <4>; > - remote-endpoint = <&vin4csi20>; > - }; > - csi20vin5: endpoint@5 { > - reg = <5>; > - remote-endpoint = <&vin5csi20>; > - }; > - csi20vin6: endpoint@6 { > - reg = <6>; > - remote-endpoint = <&vin6csi20>; > - }; > - csi20vin7: endpoint@7 { > - reg = <7>; > - remote-endpoint = <&vin7csi20>; > - }; > - }; > - }; > - }; > diff --git a/Documentation/devicetree/bindings/media/renesas,csi2.yaml b/Documentation/devicetree/bindings/media/renesas,csi2.yaml > new file mode 100644 > index 0000000000000000..a6d2b597c4944693 > --- /dev/null > +++ b/Documentation/devicetree/bindings/media/renesas,csi2.yaml > @@ -0,0 +1,200 @@ > +# SPDX-License-Identifier: GPL-2.0 GPL-2.0-only > +# Copyright (C) 2019 Renesas Electronics Corp. > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/media/renesas,csi2.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Renesas R-Car MIPI CSI-2 receiver > + > +maintainers: > + - Niklas Söderlund <niklas.soderlund@ragnatech.se> > + > +description: |- > + The R-Car CSI-2 receiver device provides MIPI CSI-2 capabilities for the > + Renesas R-Car and RZ/G2 family of devices. It is used in conjunction with the > + R-Car VIN module, which provides the video capture capabilities. > + > +properties: > + compatible: > + items: > + - enum: > + - renesas,r8a774a1-csi2 # RZ/G2M > + - renesas,r8a774b1-csi2 # RZ/G2N > + - renesas,r8a774c0-csi2 # RZ/G2E > + - renesas,r8a7795-csi2 # R-Car H3 > + - renesas,r8a7796-csi2 # R-Car M3-W > + - renesas,r8a77965-csi2 # R-Car M3-N > + - renesas,r8a77970-csi2 # R-Car V3M > + - renesas,r8a77980-csi2 # R-Car V3H > + - renesas,r8a77990-csi2 # R-Car E3 > + > + reg: > + maxItems: 1 > + > + interrupts: > + maxItems: 1 > + > + clocks: > + maxItems: 1 > + > + power-domains: > + maxItems: 1 > + > + resets: > + maxItems: 1 > + > + ports: > + type: object > + description: |- > + A node containing input and output port nodes with endpoint definitions > + as documented in > + Documentation/devicetree/bindings/media/video-interfaces.txt > + > + properties: > + port@0: > + type: object > + description: |- > + Input port node, single endpoint describing the CSI-2 transmitter. > + > + properties: > + reg: > + const: 0 > + > + endpoint: > + type: object > + > + properties: > + clock-lanes: > + maxItems: 1 Does the R-Car CSI-2 receiver allows changing swapping the clock lane? I see it allows swapping data lanes, but not the clock lane, through register LSWAP. Several Gen3 DTS specify that property, if you agree it could be removed or you either fix the DTS as well by removing it, or you keep the property here as optional I however see that the clock continuous mode could be handled through the ICLK_NONSTOP bit of LINKCNT register. Should the clock-noncontinuous property be listed here ? > + > + data-lanes: > + maxItems: 1 > + > + remote-endpoint: > + maxItems: 1 > + > + required: > + - clock-lanes > + - data-lanes > + - remote-endpoint > + > + additionalProperties: false > + > + additionalProperties: false I'm not sure about the additionalProperties intended use, but you seem to place it in every node, something other bindings do not seems to do. > + > + port@1: > + type: object > + description: |- > + Output port node, multiple endpoints describing all the R-Car VIN > + modules connected the CSI-2 receiver. > + > + properties: > + '#address-cells': > + const: 1 > + > + '#size-cells': > + const: 0 > + > + reg: > + const: 1 > + > + patternProperties: > + "^endpoint@[0-9]+$": Doesn't this allow endpoint@99 ? Should this be limited to the maxium number of VINs (16 if I'm not mistaken) ? > + type: object > + > + properties: > + reg: > + maxItems: 1 > + > + remote-endpoint: > + maxItems: 1 > + > + required: > + - reg > + - remote-endpoint > + > + additionalProperties: false > + > + additionalProperties: false The textual bindings describe port@1 as optional but port@0 as mandatory. If this is correct shouldn't we have it listed here as required ? Thanks j > + > +required: > + - compatible > + - reg > + - interrupts > + - clocks > + - power-domains > + - resets > + - ports > + > +additionalProperties: false > + > +examples: > + - | > + #include <dt-bindings/clock/r8a7796-cpg-mssr.h> > + #include <dt-bindings/interrupt-controller/arm-gic.h> > + #include <dt-bindings/power/r8a7796-sysc.h> > + > + csi20: csi2@fea80000 { > + compatible = "renesas,r8a7796-csi2"; > + reg = <0 0xfea80000 0 0x10000>; > + interrupts = <0 184 IRQ_TYPE_LEVEL_HIGH>; > + clocks = <&cpg CPG_MOD 714>; > + power-domains = <&sysc R8A7796_PD_ALWAYS_ON>; > + resets = <&cpg 714>; > + > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + reg = <0>; > + > + csi20_in: endpoint { > + clock-lanes = <0>; > + data-lanes = <1>; > + remote-endpoint = <&adv7482_txb>; > + }; > + }; > + > + port@1 { > + #address-cells = <1>; > + #size-cells = <0>; > + > + reg = <1>; > + > + csi20vin0: endpoint@0 { > + reg = <0>; > + remote-endpoint = <&vin0csi20>; > + }; > + csi20vin1: endpoint@1 { > + reg = <1>; > + remote-endpoint = <&vin1csi20>; > + }; > + csi20vin2: endpoint@2 { > + reg = <2>; > + remote-endpoint = <&vin2csi20>; > + }; > + csi20vin3: endpoint@3 { > + reg = <3>; > + remote-endpoint = <&vin3csi20>; > + }; > + csi20vin4: endpoint@4 { > + reg = <4>; > + remote-endpoint = <&vin4csi20>; > + }; > + csi20vin5: endpoint@5 { > + reg = <5>; > + remote-endpoint = <&vin5csi20>; > + }; > + csi20vin6: endpoint@6 { > + reg = <6>; > + remote-endpoint = <&vin6csi20>; > + }; > + csi20vin7: endpoint@7 { > + reg = <7>; > + remote-endpoint = <&vin7csi20>; > + }; > + }; > + }; > + }; > -- > 2.23.0 >
On Tue, Nov 12, 2019 at 11:41:10AM +0100, Jacopo Mondi wrote: > Hi Niklas, > thanks for the patch > > On Fri, Nov 08, 2019 at 03:17:48AM +0100, Niklas Söderlund wrote: > > Convert Renesas R-Car MIPI CSI-2 receiver bindings documentation to > > json-schema. > > > > Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> > > --- > > .../bindings/media/renesas,csi2.txt | 107 ---------- > > .../bindings/media/renesas,csi2.yaml | 200 ++++++++++++++++++ > > 2 files changed, 200 insertions(+), 107 deletions(-) > > delete mode 100644 Documentation/devicetree/bindings/media/renesas,csi2.txt > > create mode 100644 Documentation/devicetree/bindings/media/renesas,csi2.yaml > > > > diff --git a/Documentation/devicetree/bindings/media/renesas,csi2.txt b/Documentation/devicetree/bindings/media/renesas,csi2.txt > > deleted file mode 100644 > > index 2da6f60b2b5659f6..0000000000000000 > > --- a/Documentation/devicetree/bindings/media/renesas,csi2.txt > > +++ /dev/null > > @@ -1,107 +0,0 @@ > > -Renesas R-Car MIPI CSI-2 > > ------------------------- > > - > > -The R-Car CSI-2 receiver device provides MIPI CSI-2 capabilities for the > > -Renesas R-Car and RZ/G2 family of devices. It is used in conjunction with the > > -R-Car VIN module, which provides the video capture capabilities. > > - > > -Mandatory properties > > --------------------- > > - - compatible: Must be one or more of the following > > - - "renesas,r8a774a1-csi2" for the R8A774A1 device. > > - - "renesas,r8a774b1-csi2" for the R8A774B1 device. > > - - "renesas,r8a774c0-csi2" for the R8A774C0 device. > > - - "renesas,r8a7795-csi2" for the R8A7795 device. > > - - "renesas,r8a7796-csi2" for the R8A7796 device. > > - - "renesas,r8a77965-csi2" for the R8A77965 device. > > - - "renesas,r8a77970-csi2" for the R8A77970 device. > > - - "renesas,r8a77980-csi2" for the R8A77980 device. > > - - "renesas,r8a77990-csi2" for the R8A77990 device. > > - > > - - reg: the register base and size for the device registers > > - - interrupts: the interrupt for the device > > - - clocks: A phandle + clock specifier for the module clock > > - - resets: A phandle + reset specifier for the module reset > > - > > -The device node shall contain two 'port' child nodes according to the > > -bindings defined in Documentation/devicetree/bindings/media/ > > -video-interfaces.txt. port@0 shall connect to the CSI-2 source. port@1 > > -shall connect to all the R-Car VIN modules that have a hardware > > -connection to the CSI-2 receiver. > > - > > -- port@0- Video source (mandatory) > > - - endpoint@0 - sub-node describing the endpoint that is the video source > > - > > -- port@1 - VIN instances (optional) > > - - One endpoint sub-node for every R-Car VIN instance which is connected > > - to the R-Car CSI-2 receiver. > > - > > -Example: > > - > > - csi20: csi2@fea80000 { > > - compatible = "renesas,r8a7796-csi2"; > > - reg = <0 0xfea80000 0 0x10000>; > > - interrupts = <0 184 IRQ_TYPE_LEVEL_HIGH>; > > - clocks = <&cpg CPG_MOD 714>; > > - power-domains = <&sysc R8A7796_PD_ALWAYS_ON>; > > - resets = <&cpg 714>; > > - > > - ports { > > - #address-cells = <1>; > > - #size-cells = <0>; > > - > > - port@0 { > > - #address-cells = <1>; > > - #size-cells = <0>; > > - > > - reg = <0>; > > - > > - csi20_in: endpoint@0 { > > - reg = <0>; > > - clock-lanes = <0>; > > - data-lanes = <1>; > > - remote-endpoint = <&adv7482_txb>; > > - }; > > - }; > > - > > - port@1 { > > - #address-cells = <1>; > > - #size-cells = <0>; > > - > > - reg = <1>; > > - > > - csi20vin0: endpoint@0 { > > - reg = <0>; > > - remote-endpoint = <&vin0csi20>; > > - }; > > - csi20vin1: endpoint@1 { > > - reg = <1>; > > - remote-endpoint = <&vin1csi20>; > > - }; > > - csi20vin2: endpoint@2 { > > - reg = <2>; > > - remote-endpoint = <&vin2csi20>; > > - }; > > - csi20vin3: endpoint@3 { > > - reg = <3>; > > - remote-endpoint = <&vin3csi20>; > > - }; > > - csi20vin4: endpoint@4 { > > - reg = <4>; > > - remote-endpoint = <&vin4csi20>; > > - }; > > - csi20vin5: endpoint@5 { > > - reg = <5>; > > - remote-endpoint = <&vin5csi20>; > > - }; > > - csi20vin6: endpoint@6 { > > - reg = <6>; > > - remote-endpoint = <&vin6csi20>; > > - }; > > - csi20vin7: endpoint@7 { > > - reg = <7>; > > - remote-endpoint = <&vin7csi20>; > > - }; > > - }; > > - }; > > - }; > > diff --git a/Documentation/devicetree/bindings/media/renesas,csi2.yaml b/Documentation/devicetree/bindings/media/renesas,csi2.yaml > > new file mode 100644 > > index 0000000000000000..a6d2b597c4944693 > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/media/renesas,csi2.yaml > > @@ -0,0 +1,200 @@ > > +# SPDX-License-Identifier: GPL-2.0 > > GPL-2.0-only > > > +# Copyright (C) 2019 Renesas Electronics Corp. > > +%YAML 1.2 > > +--- > > +$id: http://devicetree.org/schemas/media/renesas,csi2.yaml# > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > + > > +title: Renesas R-Car MIPI CSI-2 receiver > > + > > +maintainers: > > + - Niklas Söderlund <niklas.soderlund@ragnatech.se> > > + > > +description: |- > > + The R-Car CSI-2 receiver device provides MIPI CSI-2 capabilities for the > > + Renesas R-Car and RZ/G2 family of devices. It is used in conjunction with the > > + R-Car VIN module, which provides the video capture capabilities. > > + > > +properties: > > + compatible: > > + items: > > + - enum: > > + - renesas,r8a774a1-csi2 # RZ/G2M > > + - renesas,r8a774b1-csi2 # RZ/G2N > > + - renesas,r8a774c0-csi2 # RZ/G2E > > + - renesas,r8a7795-csi2 # R-Car H3 > > + - renesas,r8a7796-csi2 # R-Car M3-W > > + - renesas,r8a77965-csi2 # R-Car M3-N > > + - renesas,r8a77970-csi2 # R-Car V3M > > + - renesas,r8a77980-csi2 # R-Car V3H > > + - renesas,r8a77990-csi2 # R-Car E3 > > + > > + reg: > > + maxItems: 1 > > + > > + interrupts: > > + maxItems: 1 > > + > > + clocks: > > + maxItems: 1 > > + > > + power-domains: > > + maxItems: 1 > > + > > + resets: > > + maxItems: 1 > > + > > + ports: > > + type: object > > + description: |- Drop the literal block when not needed. > > + A node containing input and output port nodes with endpoint definitions > > + as documented in > > + Documentation/devicetree/bindings/media/video-interfaces.txt > > + > > + properties: > > + port@0: > > + type: object > > + description: |- > > + Input port node, single endpoint describing the CSI-2 transmitter. > > + > > + properties: > > + reg: > > + const: 0 > > + > > + endpoint: > > + type: object > > + > > + properties: > > + clock-lanes: > > + maxItems: 1 > > Does the R-Car CSI-2 receiver allows changing swapping the clock lane? > I see it allows swapping data lanes, but not the clock lane, through > register LSWAP. > > Several Gen3 DTS specify that property, if you agree it could be > removed or you either fix the DTS as well by removing it, or you keep > the property here as optional > > I however see that the clock continuous mode could be handled through > the ICLK_NONSTOP bit of LINKCNT register. Should the > clock-noncontinuous property be listed here ? > > > + > > + data-lanes: > > + maxItems: 1 > > + > > + remote-endpoint: > > + maxItems: 1 Not an array. Just 'true' is sufficient. > > + > > + required: > > + - clock-lanes > > + - data-lanes > > + - remote-endpoint > > + > > + additionalProperties: false > > + > > + additionalProperties: false > > I'm not sure about the additionalProperties intended use, but you seem > to place it in every node, something other bindings do not seems to > do. It means any other property not listed here will be an error. Simple bindings should have it, but it doesn't work for ones which include another schema file. > > + > > + port@1: > > + type: object > > + description: |- > > + Output port node, multiple endpoints describing all the R-Car VIN > > + modules connected the CSI-2 receiver. > > + > > + properties: > > + '#address-cells': > > + const: 1 > > + > > + '#size-cells': > > + const: 0 > > + > > + reg: > > + const: 1 > > + > > + patternProperties: > > + "^endpoint@[0-9]+$": > > Doesn't this allow endpoint@99 ? Should this be limited to the maxium > number of VINs (16 if I'm not mistaken) ? And it is also decimal instead of hex. > > > > + type: object > > + > > + properties: > > + reg: > > + maxItems: 1 > > + > > + remote-endpoint: > > + maxItems: 1 > > + > > + required: > > + - reg > > + - remote-endpoint > > + > > + additionalProperties: false > > + > > + additionalProperties: false > > The textual bindings describe port@1 as optional but port@0 as > mandatory. If this is correct shouldn't we have it listed here as > required ? > > Thanks > j > > > + > > +required: > > + - compatible > > + - reg > > + - interrupts > > + - clocks > > + - power-domains > > + - resets > > + - ports > > + > > +additionalProperties: false > > + > > +examples: > > + - | > > + #include <dt-bindings/clock/r8a7796-cpg-mssr.h> > > + #include <dt-bindings/interrupt-controller/arm-gic.h> > > + #include <dt-bindings/power/r8a7796-sysc.h> > > + > > + csi20: csi2@fea80000 { > > + compatible = "renesas,r8a7796-csi2"; > > + reg = <0 0xfea80000 0 0x10000>; > > + interrupts = <0 184 IRQ_TYPE_LEVEL_HIGH>; > > + clocks = <&cpg CPG_MOD 714>; > > + power-domains = <&sysc R8A7796_PD_ALWAYS_ON>; > > + resets = <&cpg 714>; > > + > > + ports { > > + #address-cells = <1>; > > + #size-cells = <0>; > > + > > + port@0 { > > + reg = <0>; > > + > > + csi20_in: endpoint { > > + clock-lanes = <0>; > > + data-lanes = <1>; > > + remote-endpoint = <&adv7482_txb>; > > + }; > > + }; > > + > > + port@1 { > > + #address-cells = <1>; > > + #size-cells = <0>; > > + > > + reg = <1>; > > + > > + csi20vin0: endpoint@0 { > > + reg = <0>; > > + remote-endpoint = <&vin0csi20>; > > + }; > > + csi20vin1: endpoint@1 { > > + reg = <1>; > > + remote-endpoint = <&vin1csi20>; > > + }; > > + csi20vin2: endpoint@2 { > > + reg = <2>; > > + remote-endpoint = <&vin2csi20>; > > + }; > > + csi20vin3: endpoint@3 { > > + reg = <3>; > > + remote-endpoint = <&vin3csi20>; > > + }; > > + csi20vin4: endpoint@4 { > > + reg = <4>; > > + remote-endpoint = <&vin4csi20>; > > + }; > > + csi20vin5: endpoint@5 { > > + reg = <5>; > > + remote-endpoint = <&vin5csi20>; > > + }; > > + csi20vin6: endpoint@6 { > > + reg = <6>; > > + remote-endpoint = <&vin6csi20>; > > + }; > > + csi20vin7: endpoint@7 { > > + reg = <7>; > > + remote-endpoint = <&vin7csi20>; > > + }; > > + }; > > + }; > > + }; > > -- > > 2.23.0 > >
diff --git a/Documentation/devicetree/bindings/media/renesas,csi2.txt b/Documentation/devicetree/bindings/media/renesas,csi2.txt deleted file mode 100644 index 2da6f60b2b5659f6..0000000000000000 --- a/Documentation/devicetree/bindings/media/renesas,csi2.txt +++ /dev/null @@ -1,107 +0,0 @@ -Renesas R-Car MIPI CSI-2 ------------------------- - -The R-Car CSI-2 receiver device provides MIPI CSI-2 capabilities for the -Renesas R-Car and RZ/G2 family of devices. It is used in conjunction with the -R-Car VIN module, which provides the video capture capabilities. - -Mandatory properties --------------------- - - compatible: Must be one or more of the following - - "renesas,r8a774a1-csi2" for the R8A774A1 device. - - "renesas,r8a774b1-csi2" for the R8A774B1 device. - - "renesas,r8a774c0-csi2" for the R8A774C0 device. - - "renesas,r8a7795-csi2" for the R8A7795 device. - - "renesas,r8a7796-csi2" for the R8A7796 device. - - "renesas,r8a77965-csi2" for the R8A77965 device. - - "renesas,r8a77970-csi2" for the R8A77970 device. - - "renesas,r8a77980-csi2" for the R8A77980 device. - - "renesas,r8a77990-csi2" for the R8A77990 device. - - - reg: the register base and size for the device registers - - interrupts: the interrupt for the device - - clocks: A phandle + clock specifier for the module clock - - resets: A phandle + reset specifier for the module reset - -The device node shall contain two 'port' child nodes according to the -bindings defined in Documentation/devicetree/bindings/media/ -video-interfaces.txt. port@0 shall connect to the CSI-2 source. port@1 -shall connect to all the R-Car VIN modules that have a hardware -connection to the CSI-2 receiver. - -- port@0- Video source (mandatory) - - endpoint@0 - sub-node describing the endpoint that is the video source - -- port@1 - VIN instances (optional) - - One endpoint sub-node for every R-Car VIN instance which is connected - to the R-Car CSI-2 receiver. - -Example: - - csi20: csi2@fea80000 { - compatible = "renesas,r8a7796-csi2"; - reg = <0 0xfea80000 0 0x10000>; - interrupts = <0 184 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&cpg CPG_MOD 714>; - power-domains = <&sysc R8A7796_PD_ALWAYS_ON>; - resets = <&cpg 714>; - - ports { - #address-cells = <1>; - #size-cells = <0>; - - port@0 { - #address-cells = <1>; - #size-cells = <0>; - - reg = <0>; - - csi20_in: endpoint@0 { - reg = <0>; - clock-lanes = <0>; - data-lanes = <1>; - remote-endpoint = <&adv7482_txb>; - }; - }; - - port@1 { - #address-cells = <1>; - #size-cells = <0>; - - reg = <1>; - - csi20vin0: endpoint@0 { - reg = <0>; - remote-endpoint = <&vin0csi20>; - }; - csi20vin1: endpoint@1 { - reg = <1>; - remote-endpoint = <&vin1csi20>; - }; - csi20vin2: endpoint@2 { - reg = <2>; - remote-endpoint = <&vin2csi20>; - }; - csi20vin3: endpoint@3 { - reg = <3>; - remote-endpoint = <&vin3csi20>; - }; - csi20vin4: endpoint@4 { - reg = <4>; - remote-endpoint = <&vin4csi20>; - }; - csi20vin5: endpoint@5 { - reg = <5>; - remote-endpoint = <&vin5csi20>; - }; - csi20vin6: endpoint@6 { - reg = <6>; - remote-endpoint = <&vin6csi20>; - }; - csi20vin7: endpoint@7 { - reg = <7>; - remote-endpoint = <&vin7csi20>; - }; - }; - }; - }; diff --git a/Documentation/devicetree/bindings/media/renesas,csi2.yaml b/Documentation/devicetree/bindings/media/renesas,csi2.yaml new file mode 100644 index 0000000000000000..a6d2b597c4944693 --- /dev/null +++ b/Documentation/devicetree/bindings/media/renesas,csi2.yaml @@ -0,0 +1,200 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2019 Renesas Electronics Corp. +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/media/renesas,csi2.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Renesas R-Car MIPI CSI-2 receiver + +maintainers: + - Niklas Söderlund <niklas.soderlund@ragnatech.se> + +description: |- + The R-Car CSI-2 receiver device provides MIPI CSI-2 capabilities for the + Renesas R-Car and RZ/G2 family of devices. It is used in conjunction with the + R-Car VIN module, which provides the video capture capabilities. + +properties: + compatible: + items: + - enum: + - renesas,r8a774a1-csi2 # RZ/G2M + - renesas,r8a774b1-csi2 # RZ/G2N + - renesas,r8a774c0-csi2 # RZ/G2E + - renesas,r8a7795-csi2 # R-Car H3 + - renesas,r8a7796-csi2 # R-Car M3-W + - renesas,r8a77965-csi2 # R-Car M3-N + - renesas,r8a77970-csi2 # R-Car V3M + - renesas,r8a77980-csi2 # R-Car V3H + - renesas,r8a77990-csi2 # R-Car E3 + + reg: + maxItems: 1 + + interrupts: + maxItems: 1 + + clocks: + maxItems: 1 + + power-domains: + maxItems: 1 + + resets: + maxItems: 1 + + ports: + type: object + description: |- + A node containing input and output port nodes with endpoint definitions + as documented in + Documentation/devicetree/bindings/media/video-interfaces.txt + + properties: + port@0: + type: object + description: |- + Input port node, single endpoint describing the CSI-2 transmitter. + + properties: + reg: + const: 0 + + endpoint: + type: object + + properties: + clock-lanes: + maxItems: 1 + + data-lanes: + maxItems: 1 + + remote-endpoint: + maxItems: 1 + + required: + - clock-lanes + - data-lanes + - remote-endpoint + + additionalProperties: false + + additionalProperties: false + + port@1: + type: object + description: |- + Output port node, multiple endpoints describing all the R-Car VIN + modules connected the CSI-2 receiver. + + properties: + '#address-cells': + const: 1 + + '#size-cells': + const: 0 + + reg: + const: 1 + + patternProperties: + "^endpoint@[0-9]+$": + type: object + + properties: + reg: + maxItems: 1 + + remote-endpoint: + maxItems: 1 + + required: + - reg + - remote-endpoint + + additionalProperties: false + + additionalProperties: false + +required: + - compatible + - reg + - interrupts + - clocks + - power-domains + - resets + - ports + +additionalProperties: false + +examples: + - | + #include <dt-bindings/clock/r8a7796-cpg-mssr.h> + #include <dt-bindings/interrupt-controller/arm-gic.h> + #include <dt-bindings/power/r8a7796-sysc.h> + + csi20: csi2@fea80000 { + compatible = "renesas,r8a7796-csi2"; + reg = <0 0xfea80000 0 0x10000>; + interrupts = <0 184 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&cpg CPG_MOD 714>; + power-domains = <&sysc R8A7796_PD_ALWAYS_ON>; + resets = <&cpg 714>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + + csi20_in: endpoint { + clock-lanes = <0>; + data-lanes = <1>; + remote-endpoint = <&adv7482_txb>; + }; + }; + + port@1 { + #address-cells = <1>; + #size-cells = <0>; + + reg = <1>; + + csi20vin0: endpoint@0 { + reg = <0>; + remote-endpoint = <&vin0csi20>; + }; + csi20vin1: endpoint@1 { + reg = <1>; + remote-endpoint = <&vin1csi20>; + }; + csi20vin2: endpoint@2 { + reg = <2>; + remote-endpoint = <&vin2csi20>; + }; + csi20vin3: endpoint@3 { + reg = <3>; + remote-endpoint = <&vin3csi20>; + }; + csi20vin4: endpoint@4 { + reg = <4>; + remote-endpoint = <&vin4csi20>; + }; + csi20vin5: endpoint@5 { + reg = <5>; + remote-endpoint = <&vin5csi20>; + }; + csi20vin6: endpoint@6 { + reg = <6>; + remote-endpoint = <&vin6csi20>; + }; + csi20vin7: endpoint@7 { + reg = <7>; + remote-endpoint = <&vin7csi20>; + }; + }; + }; + };
Convert Renesas R-Car MIPI CSI-2 receiver bindings documentation to json-schema. Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> --- .../bindings/media/renesas,csi2.txt | 107 ---------- .../bindings/media/renesas,csi2.yaml | 200 ++++++++++++++++++ 2 files changed, 200 insertions(+), 107 deletions(-) delete mode 100644 Documentation/devicetree/bindings/media/renesas,csi2.txt create mode 100644 Documentation/devicetree/bindings/media/renesas,csi2.yaml