Re: [PATCH v9 01/28] rcar-vin: add Gen3 devicetree bindings documentation

Laurent Pinchart
2017-12-08T07:46:06Z

Hi Niklas,

Thank you for the patch.

On Friday, 8 December 2017 03:08:15 EET Niklas Söderlund wrote:
> Document the devicetree bindings for the CSI-2 inputs available on Gen3.
>
> There is a need to add a custom property 'renesas,id' and to define
> which CSI-2 input is described in which endpoint under the port@1 node.
> This information is needed since there are a set of predefined routes
> between each VIN and CSI-2 block. This routing table will be kept
> inside the driver but in order for it to act on it it must know which
> VIN and CSI-2 is which.
>
> Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
> Acked-by: Rob Herring <robh@kernel.org>
> ---
> .../devicetree/bindings/media/rcar_vin.txt | 116 +++++++++++++++---
> 1 file changed, 104 insertions(+), 12 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/media/rcar_vin.txt
> b/Documentation/devicetree/bindings/media/rcar_vin.txt index
> ff9697ed81396e64..5a95d9668d2c7dfd 100644
> --- a/Documentation/devicetree/bindings/media/rcar_vin.txt
> +++ b/Documentation/devicetree/bindings/media/rcar_vin.txt
> @@ -2,8 +2,12 @@ Renesas R-Car Video Input driver (rcar_vin)
> -------------------------------------------
>
> The rcar_vin device provides video input capabilities for the Renesas R-Car
> -family of devices. The current blocks are always slaves and suppot one
> input
> -channel which can be either RGB, YUYV or BT656.
> +family of devices.
> +
> +Each VIN instance has a single parallel input that supports RGB and YUV
> video,
> +with both external synchronization and BT.656 synchronization for the
> latter.
> +Depending on the instance the VIN input is connected to external SoC pins,
> or
> +on Gen3 to a CSI-2 receiver.
>
> - compatible: Must be one or more of the following
> - "renesas,vin-r8a7743" for the R8A7743 device
> @@ -31,21 +35,38 @@ channel which can be either RGB, YUYV or BT656.
> Additionally, an alias named vinX will need to be created to specify
> which video input device this is.
>
> -The per-board settings:
> +The per-board settings Gen2:

Nitpicking, s/Gen2/for Gen2 platforms/

(or Gen2 hardware, or Gen2 systems, pick the one you like best)

> - port sub-node describing a single endpoint connected to the vin
> as described in video-interfaces.txt[1]. Only the first one will
> be considered as each vin interface has one input port.
>
> - These settings are used to work out video input format and widths
> - into the system.
> +The per-board settings Gen3:

Ditto.

> +
> +Gen3 can support both a single connected parallel input source from
> +external SoC pins (port0) and/or multiple parallel input sources from
> +local SoC CSI-2 receivers (port1) depending on SoC.
>
> +- renesas,id - ID number of the VIN, VINx in the documentation.
> +- ports
> + - port0 - sub-node describing a single endpoint connected to the VIN
> + from external SoC pins described in video-interfaces.txt[1]. Only
> + the first one will be considered as each VIN interface has at most
> + one set of SoC external input pins.

s/port0/port 0/ or s/port0/port@0/

I'd go further than that and make it invalid to have multiple endpoints
instead of ignoring all but the first one.

I would also explicitly state that VIN instances not connected to external
pins shall have no port 0.

> + - port1 - sub-nodes describing one or more endpoints connected to
> + the VIN from local SoC CSI-2 receivers. The endpoint numbers must
> + use the following schema.

Nitpicking again, the Gen2-specific properties are indented above while the
Gen3 properties are not indented here. Pick the one you prefer :-)

> -Device node example
> --------------------
> + - Endpoint 0 - sub-node describing the endpoint which is CSI20
> + - Endpoint 1 - sub-node describing the endpoint which is CSI21
> + - Endpoint 2 - sub-node describing the endpoint which is CSI40
> + - Endpoint 3 - sub-node describing the endpoint which is CSI41

How about s/which is/connected to/ ?

> - aliases {
> - vin0 = &vin0;
> - };
> +Device node example Gen2

s/Gen2/for Gen2 platforms/

and same in a few places below.

> +------------------------
> +
> + aliases {
> + vin0 = &vin0;
> + };

This is unrelated, but do we need aliases ?

> vin0: vin@0xe6ef0000 {
> compatible = "renesas,vin-r8a7790",
> "renesas,rcar-gen2-vin"; @@ -55,8 +76,8 @@ Device node example
> status = "disabled";
> };
>
> -Board setup example (vin1 composite video input)
> -------------------------------------------------
> +Board setup example Gen2 (vin1 composite video input)
> +-----------------------------------------------------
>
> &i2c2 {
> status = "ok";
> @@ -95,6 +116,77 @@ Board setup example (vin1 composite video input)
> };
> };
>
> +Device node example Gen3
> +------------------------
> +
> + vin0: video@e6ef0000 {
> + compatible = "renesas,vin-r8a7795";
> + reg = <0 0xe6ef0000 0 0x1000>;
> + interrupts = <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>;
> + clocks = <&cpg CPG_MOD 811>;
> + power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
> + resets = <&cpg 811>;
> + renesas,id = <0>;
> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@1 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + reg = <1>;
> +
> + vin0csi20: endpoint@0 {
> + reg = <0>;
> + remote-endpoint= <&csi20vin0>;
> + };
> + vin0csi21: endpoint@1 {
> + reg = <1>;
> + remote-endpoint= <&csi21vin0>;
> + };
> + vin0csi40: endpoint@2 {
> + reg = <2>;
> + remote-endpoint= <&csi40vin0>;
> + };
> + };
> + };
> + };
> +
> + csi20: csi2@fea80000 {
> + compatible = "renesas,r8a7795-csi2";
> + reg = <0 0xfea80000 0 0x10000>;
> + interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;
> + clocks = <&cpg CPG_MOD 714>;
> + power-domains = <&sysc R8A7795_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>;
> + };
> + };
> + };
> + };
>
> [1] video-interfaces.txt common video media interface

--
Regards,

Laurent Pinchart