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@xxxxxxxxxxxx> > > --- > > .../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@xxxxxxxxxxxx> > > + > > +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 > >