357 lines
10 KiB
YAML
357 lines
10 KiB
YAML
# SPDX-License-Identifier: GPL-2.0-only
|
|
# Copyright (C) 2020 Renesas Electronics Corp.
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/media/renesas,vin.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: Renesas R-Car Video Input (VIN)
|
|
|
|
maintainers:
|
|
- Niklas Söderlund <niklas.soderlund@ragnatech.se>
|
|
|
|
description:
|
|
The R-Car Video Input (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 and RZ/G2 platforms to a CSI-2 receiver.
|
|
|
|
properties:
|
|
compatible:
|
|
oneOf:
|
|
- items:
|
|
- enum:
|
|
- renesas,vin-r8a7742 # RZ/G1H
|
|
- renesas,vin-r8a7743 # RZ/G1M
|
|
- renesas,vin-r8a7744 # RZ/G1N
|
|
- renesas,vin-r8a7745 # RZ/G1E
|
|
- renesas,vin-r8a77470 # RZ/G1C
|
|
- renesas,vin-r8a7790 # R-Car H2
|
|
- renesas,vin-r8a7791 # R-Car M2-W
|
|
- renesas,vin-r8a7792 # R-Car V2H
|
|
- renesas,vin-r8a7793 # R-Car M2-N
|
|
- renesas,vin-r8a7794 # R-Car E2
|
|
- const: renesas,rcar-gen2-vin # Generic R-Car Gen2 or RZ/G1
|
|
|
|
- items:
|
|
- enum:
|
|
- renesas,vin-r8a774a1 # RZ/G2M
|
|
- renesas,vin-r8a774b1 # RZ/G2N
|
|
- renesas,vin-r8a774c0 # RZ/G2E
|
|
- renesas,vin-r8a774e1 # RZ/G2H
|
|
- renesas,vin-r8a7778 # R-Car M1
|
|
- renesas,vin-r8a7779 # R-Car H1
|
|
- renesas,vin-r8a7795 # R-Car H3
|
|
- renesas,vin-r8a7796 # R-Car M3-W
|
|
- renesas,vin-r8a77961 # R-Car M3-W+
|
|
- renesas,vin-r8a77965 # R-Car M3-N
|
|
- renesas,vin-r8a77970 # R-Car V3M
|
|
- renesas,vin-r8a77980 # R-Car V3H
|
|
- renesas,vin-r8a77990 # R-Car E3
|
|
- renesas,vin-r8a77995 # R-Car D3
|
|
- renesas,vin-r8a779a0 # R-Car V3U
|
|
|
|
reg:
|
|
maxItems: 1
|
|
|
|
interrupts:
|
|
maxItems: 1
|
|
|
|
clocks:
|
|
maxItems: 1
|
|
|
|
power-domains:
|
|
maxItems: 1
|
|
|
|
resets:
|
|
maxItems: 1
|
|
|
|
#The per-board settings for Gen2 and RZ/G1 platforms:
|
|
port:
|
|
$ref: /schemas/graph.yaml#/$defs/port-base
|
|
unevaluatedProperties: false
|
|
description:
|
|
A node containing a parallel input
|
|
|
|
properties:
|
|
endpoint:
|
|
$ref: video-interfaces.yaml#
|
|
unevaluatedProperties: false
|
|
|
|
properties:
|
|
hsync-active:
|
|
description:
|
|
If both HSYNC and VSYNC polarities are not specified, embedded
|
|
synchronization is selected.
|
|
default: 1
|
|
|
|
vsync-active:
|
|
description:
|
|
If both HSYNC and VSYNC polarities are not specified, embedded
|
|
synchronization is selected.
|
|
default: 1
|
|
|
|
field-active-even: true
|
|
|
|
bus-width: true
|
|
|
|
data-shift: true
|
|
|
|
data-enable-active:
|
|
description: Polarity of CLKENB signal
|
|
default: 1
|
|
|
|
pclk-sample: true
|
|
|
|
data-active: true
|
|
|
|
#The per-board settings for Gen3 and RZ/G2 platforms:
|
|
renesas,id:
|
|
description: VIN channel number
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
minimum: 0
|
|
maximum: 31
|
|
|
|
ports:
|
|
$ref: /schemas/graph.yaml#/properties/ports
|
|
|
|
properties:
|
|
port@0:
|
|
$ref: /schemas/graph.yaml#/$defs/port-base
|
|
unevaluatedProperties: false
|
|
description:
|
|
Input port node, single endpoint describing a parallel input source.
|
|
|
|
properties:
|
|
endpoint:
|
|
$ref: video-interfaces.yaml#
|
|
unevaluatedProperties: false
|
|
|
|
properties:
|
|
hsync-active:
|
|
description:
|
|
If both HSYNC and VSYNC polarities are not specified, embedded
|
|
synchronization is selected.
|
|
default: 1
|
|
|
|
vsync-active:
|
|
description:
|
|
If both HSYNC and VSYNC polarities are not specified, embedded
|
|
synchronization is selected.
|
|
default: 1
|
|
|
|
field-active-even: true
|
|
|
|
bus-width: true
|
|
|
|
data-shift: true
|
|
|
|
data-enable-active:
|
|
description: Polarity of CLKENB signal
|
|
default: 1
|
|
|
|
pclk-sample: true
|
|
|
|
data-active: true
|
|
|
|
port@1:
|
|
$ref: /schemas/graph.yaml#/properties/port
|
|
description:
|
|
Input port node, multiple endpoints describing all the R-Car CSI-2
|
|
modules connected the VIN.
|
|
|
|
properties:
|
|
endpoint@0:
|
|
$ref: /schemas/graph.yaml#/properties/endpoint
|
|
description: Endpoint connected to CSI20.
|
|
|
|
endpoint@1:
|
|
$ref: /schemas/graph.yaml#/properties/endpoint
|
|
description: Endpoint connected to CSI21.
|
|
|
|
endpoint@2:
|
|
$ref: /schemas/graph.yaml#/properties/endpoint
|
|
description: Endpoint connected to CSI40.
|
|
|
|
endpoint@3:
|
|
$ref: /schemas/graph.yaml#/properties/endpoint
|
|
description: Endpoint connected to CSI41.
|
|
|
|
anyOf:
|
|
- required:
|
|
- endpoint@0
|
|
- required:
|
|
- endpoint@1
|
|
- required:
|
|
- endpoint@2
|
|
- required:
|
|
- endpoint@3
|
|
|
|
port@2:
|
|
$ref: /schemas/graph.yaml#/properties/port
|
|
description:
|
|
Input port node, multiple endpoints describing all the R-Car ISP
|
|
modules connected the VIN.
|
|
|
|
properties:
|
|
endpoint@0:
|
|
$ref: /schemas/graph.yaml#/properties/endpoint
|
|
description: Endpoint connected to ISP0.
|
|
|
|
endpoint@1:
|
|
$ref: /schemas/graph.yaml#/properties/endpoint
|
|
description: Endpoint connected to ISP1.
|
|
|
|
endpoint@2:
|
|
$ref: /schemas/graph.yaml#/properties/endpoint
|
|
description: Endpoint connected to ISP2.
|
|
|
|
endpoint@3:
|
|
$ref: /schemas/graph.yaml#/properties/endpoint
|
|
description: Endpoint connected to ISP3.
|
|
|
|
required:
|
|
- compatible
|
|
- reg
|
|
- interrupts
|
|
- clocks
|
|
- power-domains
|
|
|
|
allOf:
|
|
- if:
|
|
not:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- renesas,vin-r8a7778
|
|
- renesas,vin-r8a7779
|
|
then:
|
|
required:
|
|
- resets
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- renesas,vin-r8a7778
|
|
- renesas,vin-r8a7779
|
|
- renesas,rcar-gen2-vin
|
|
then:
|
|
required:
|
|
- port
|
|
else:
|
|
required:
|
|
- renesas,id
|
|
- ports
|
|
|
|
additionalProperties: false
|
|
|
|
examples:
|
|
# Device node example for Gen2 platform
|
|
- |
|
|
#include <dt-bindings/clock/r8a7790-cpg-mssr.h>
|
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
|
#include <dt-bindings/power/r8a7790-sysc.h>
|
|
|
|
vin1: vin@e6ef1000 {
|
|
compatible = "renesas,vin-r8a7790",
|
|
"renesas,rcar-gen2-vin";
|
|
reg = <0xe6ef1000 0x1000>;
|
|
interrupts = <GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH>;
|
|
clocks = <&cpg CPG_MOD 810>;
|
|
power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
|
|
resets = <&cpg 810>;
|
|
|
|
port {
|
|
vin1ep0: endpoint {
|
|
remote-endpoint = <&adv7180>;
|
|
bus-width = <8>;
|
|
};
|
|
};
|
|
};
|
|
|
|
# Device node example for Gen3 platform with only CSI-2
|
|
- |
|
|
#include <dt-bindings/clock/r8a7795-cpg-mssr.h>
|
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
|
#include <dt-bindings/power/r8a7795-sysc.h>
|
|
|
|
vin0: video@e6ef0000 {
|
|
compatible = "renesas,vin-r8a7795";
|
|
reg = <0xe6ef0000 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>;
|
|
};
|
|
vin0csi40: endpoint@2 {
|
|
reg = <2>;
|
|
remote-endpoint= <&csi40vin0>;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
# Device node example for Gen3 platform with CSI-2 and parallel
|
|
- |
|
|
#include <dt-bindings/clock/r8a77970-cpg-mssr.h>
|
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
|
#include <dt-bindings/power/r8a77970-sysc.h>
|
|
|
|
vin2: video@e6ef2000 {
|
|
compatible = "renesas,vin-r8a77970";
|
|
reg = <0xe6ef2000 0x1000>;
|
|
interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
|
|
clocks = <&cpg CPG_MOD 809>;
|
|
power-domains = <&sysc R8A77970_PD_ALWAYS_ON>;
|
|
resets = <&cpg 809>;
|
|
renesas,id = <2>;
|
|
|
|
ports {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
port@0 {
|
|
reg = <0>;
|
|
|
|
vin2_in: endpoint {
|
|
remote-endpoint = <&adv7612_out>;
|
|
hsync-active = <0>;
|
|
vsync-active = <0>;
|
|
};
|
|
};
|
|
|
|
port@1 {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
reg = <1>;
|
|
|
|
vin2csi40: endpoint@2 {
|
|
reg = <2>;
|
|
remote-endpoint = <&csi40vin2>;
|
|
};
|
|
};
|
|
};
|
|
};
|