| Renesas R-Car Video Input driver (rcar_vin) |
| ------------------------------------------- |
| |
| The rcar_vin device provides video input capabilities for the Renesas R-Car |
| 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 platforms to a CSI-2 receiver. |
| |
| - compatible: Must be one or more of the following |
| - "renesas,vin-r8a7743" for the R8A7743 device |
| - "renesas,vin-r8a7745" for the R8A7745 device |
| - "renesas,vin-r8a7778" for the R8A7778 device |
| - "renesas,vin-r8a7779" for the R8A7779 device |
| - "renesas,vin-r8a7790" for the R8A7790 device |
| - "renesas,vin-r8a7791" for the R8A7791 device |
| - "renesas,vin-r8a7792" for the R8A7792 device |
| - "renesas,vin-r8a7793" for the R8A7793 device |
| - "renesas,vin-r8a7794" for the R8A7794 device |
| - "renesas,vin-r8a7795" for the R8A7795 device |
| - "renesas,vin-r8a7796" for the R8A7796 device |
| - "renesas,vin-r8a77970" for the R8A77970 device |
| - "renesas,rcar-gen2-vin" for a generic R-Car Gen2 or RZ/G1 compatible |
| device. |
| |
| When compatible with the generic version nodes must list the |
| SoC-specific version corresponding to the platform first |
| followed by the generic version. |
| |
| - reg: the register base and size for the device registers |
| - interrupts: the interrupt for the device |
| - clocks: Reference to the parent clock |
| |
| Additionally, an alias named vinX will need to be created to specify |
| which video input device this is. |
| |
| The per-board settings Gen2 platforms: |
| - 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. |
| |
| The per-board settings Gen3 platforms: |
| |
| Gen3 platforms 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 |
| - port 0 - sub-node describing a single endpoint connected to the VIN |
| from external SoC pins described in video-interfaces.txt[1]. |
| Describing more then one endpoint in port 0 is invalid. Only VIN |
| instances that are connected to external pins should have port 0. |
| - port 1 - 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. |
| |
| - Endpoint 0 - sub-node describing the endpoint connected to CSI20 |
| - Endpoint 1 - sub-node describing the endpoint connected to CSI21 |
| - Endpoint 2 - sub-node describing the endpoint connected to CSI40 |
| - Endpoint 3 - sub-node describing the endpoint connected to CSI41 |
| |
| Device node example for Gen2 platforms |
| -------------------------------------- |
| |
| aliases { |
| vin0 = &vin0; |
| }; |
| |
| vin0: vin@e6ef0000 { |
| compatible = "renesas,vin-r8a7790", "renesas,rcar-gen2-vin"; |
| clocks = <&mstp8_clks R8A7790_CLK_VIN0>; |
| reg = <0 0xe6ef0000 0 0x1000>; |
| interrupts = <0 188 IRQ_TYPE_LEVEL_HIGH>; |
| status = "disabled"; |
| }; |
| |
| Board setup example for Gen2 platforms (vin1 composite video input) |
| ------------------------------------------------------------------- |
| |
| &i2c2 { |
| status = "okay"; |
| pinctrl-0 = <&i2c2_pins>; |
| pinctrl-names = "default"; |
| |
| adv7180@20 { |
| compatible = "adi,adv7180"; |
| reg = <0x20>; |
| remote = <&vin1>; |
| |
| port { |
| adv7180: endpoint { |
| bus-width = <8>; |
| remote-endpoint = <&vin1ep0>; |
| }; |
| }; |
| }; |
| }; |
| |
| /* composite video input */ |
| &vin1 { |
| pinctrl-0 = <&vin1_pins>; |
| pinctrl-names = "default"; |
| |
| status = "okay"; |
| |
| port { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| vin1ep0: endpoint { |
| remote-endpoint = <&adv7180>; |
| bus-width = <8>; |
| }; |
| }; |
| }; |
| |
| Device node example for Gen3 platforms |
| -------------------------------------- |
| |
| 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 |