1# SPDX-License-Identifier: GPL-2.0
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/display/bridge/lvds-codec.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Transparent LVDS encoders and decoders
8
9maintainers:
10  - Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
11
12description: |
13  This binding supports transparent LVDS encoders and decoders that don't
14  require any configuration.
15
16  LVDS is a physical layer specification defined in ANSI/TIA/EIA-644-A. Multiple
17  incompatible data link layers have been used over time to transmit image data
18  to LVDS panels. This binding targets devices compatible with the following
19  specifications only.
20
21  [JEIDA] "Digital Interface Standards for Monitor", JEIDA-59-1999, February
22  1999 (Version 1.0), Japan Electronic Industry Development Association (JEIDA)
23  [LDI] "Open LVDS Display Interface", May 1999 (Version 0.95), National
24  Semiconductor
25  [VESA] "VESA Notebook Panel Standard", October 2007 (Version 1.0), Video
26  Electronics Standards Association (VESA)
27
28  Those devices have been marketed under the FPD-Link and FlatLink brand names
29  among others.
30
31properties:
32  compatible:
33    oneOf:
34      - items:
35          - enum:
36              - ti,ds90c185   # For the TI DS90C185 FPD-Link Serializer
37              - ti,ds90c187   # For the TI DS90C187 FPD-Link Serializer
38              - ti,sn75lvds83 # For the TI SN75LVDS83 FlatLink transmitter
39          - const: lvds-encoder # Generic LVDS encoder compatible fallback
40      - items:
41          - enum:
42              - ti,ds90cf364a # For the DS90CF364A FPD-Link LVDS Receiver
43              - ti,ds90cf384a # For the DS90CF384A FPD-Link LVDS Receiver
44              - ti,sn65lvds822  # For the SN65LVDS822 FlatLink LVDS Receiver
45              - ti,sn65lvds94 # For the SN65DS94 LVDS serdes
46          - const: lvds-decoder # Generic LVDS decoders compatible fallback
47      - enum:
48          - thine,thc63lvdm83d # For the THC63LVDM83D LVDS serializer
49
50  ports:
51    $ref: /schemas/graph.yaml#/properties/ports
52
53    properties:
54      port@0:
55        $ref: /schemas/graph.yaml#/$defs/port-base
56        unevaluatedProperties: false
57        description: |
58          For LVDS encoders, port 0 is the parallel input
59          For LVDS decoders, port 0 is the LVDS input
60
61        properties:
62          endpoint:
63            $ref: /schemas/media/video-interfaces.yaml#
64            unevaluatedProperties: false
65
66            properties:
67              data-mapping:
68                enum:
69                  - jeida-18
70                  - jeida-24
71                  - vesa-24
72                description: |
73                  The color signals mapping order. See details in
74                  Documentation/devicetree/bindings/display/lvds.yaml
75
76      port@1:
77        $ref: /schemas/graph.yaml#/properties/port
78        description: |
79          For LVDS encoders, port 1 is the LVDS output
80          For LVDS decoders, port 1 is the parallel output
81
82    required:
83      - port@0
84      - port@1
85
86  pclk-sample:
87    description:
88      Data sampling on rising or falling edge.
89    enum:
90      - 0  # Falling edge
91      - 1  # Rising edge
92    default: 0
93
94  powerdown-gpios:
95    description:
96      The GPIO used to control the power down line of this device.
97    maxItems: 1
98
99  power-supply: true
100
101allOf:
102  - if:
103      not:
104        properties:
105          compatible:
106            contains:
107              const: lvds-decoder
108    then:
109      properties:
110        ports:
111          properties:
112            port@0:
113              properties:
114                endpoint:
115                  properties:
116                    data-mapping: false
117
118  - if:
119      not:
120        properties:
121          compatible:
122            contains:
123              const: lvds-encoder
124    then:
125      properties:
126        pclk-sample: false
127
128required:
129  - compatible
130  - ports
131
132additionalProperties: false
133
134
135examples:
136  - |
137    lvds-encoder {
138      compatible = "ti,ds90c185", "lvds-encoder";
139
140      ports {
141        #address-cells = <1>;
142        #size-cells = <0>;
143
144        port@0 {
145          reg = <0>;
146
147          lvds_enc_in: endpoint {
148            remote-endpoint = <&display_out_rgb>;
149          };
150        };
151
152        port@1 {
153          reg = <1>;
154
155          lvds_enc_out: endpoint {
156            remote-endpoint = <&lvds_panel_in>;
157          };
158        };
159      };
160    };
161
162  - |
163    lvds-decoder {
164      compatible = "ti,ds90cf384a", "lvds-decoder";
165
166      ports {
167        #address-cells = <1>;
168        #size-cells = <0>;
169
170        port@0 {
171          reg = <0>;
172
173          lvds_dec_in: endpoint {
174            remote-endpoint = <&display_out_lvds>;
175          };
176        };
177
178        port@1 {
179          reg = <1>;
180
181          lvds_dec_out: endpoint {
182            remote-endpoint = <&rgb_panel_in>;
183          };
184        };
185      };
186    };
187
188...
189