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,sn65lvds94 # For the SN65DS94 LVDS serdes
45          - const: lvds-decoder # Generic LVDS decoders compatible fallback
46      - enum:
47          - thine,thc63lvdm83d # For the THC63LVDM83D LVDS serializer
48
49  ports:
50    $ref: /schemas/graph.yaml#/properties/ports
51
52    properties:
53      port@0:
54        $ref: /schemas/graph.yaml#/$defs/port-base
55        unevaluatedProperties: false
56        description: |
57          For LVDS encoders, port 0 is the parallel input
58          For LVDS decoders, port 0 is the LVDS input
59
60        properties:
61          endpoint:
62            $ref: /schemas/media/video-interfaces.yaml#
63            unevaluatedProperties: false
64
65            properties:
66              data-mapping:
67                enum:
68                  - jeida-18
69                  - jeida-24
70                  - vesa-24
71                description: |
72                  The color signals mapping order. See details in
73                  Documentation/devicetree/bindings/display/lvds.yaml
74
75      port@1:
76        $ref: /schemas/graph.yaml#/properties/port
77        description: |
78          For LVDS encoders, port 1 is the LVDS output
79          For LVDS decoders, port 1 is the parallel output
80
81    required:
82      - port@0
83      - port@1
84
85  pclk-sample:
86    description:
87      Data sampling on rising or falling edge.
88    enum:
89      - 0  # Falling edge
90      - 1  # Rising edge
91    default: 0
92
93  powerdown-gpios:
94    description:
95      The GPIO used to control the power down line of this device.
96    maxItems: 1
97
98  power-supply: true
99
100allOf:
101  - if:
102      not:
103        properties:
104          compatible:
105            contains:
106              const: lvds-decoder
107    then:
108      properties:
109        ports:
110          properties:
111            port@0:
112              properties:
113                endpoint:
114                  properties:
115                    data-mapping: false
116
117  - if:
118      not:
119        properties:
120          compatible:
121            contains:
122              const: lvds-encoder
123    then:
124      properties:
125        pclk-sample: false
126
127required:
128  - compatible
129  - ports
130
131additionalProperties: false
132
133
134examples:
135  - |
136    lvds-encoder {
137      compatible = "ti,ds90c185", "lvds-encoder";
138
139      ports {
140        #address-cells = <1>;
141        #size-cells = <0>;
142
143        port@0 {
144          reg = <0>;
145
146          lvds_enc_in: endpoint {
147            remote-endpoint = <&display_out_rgb>;
148          };
149        };
150
151        port@1 {
152          reg = <1>;
153
154          lvds_enc_out: endpoint {
155            remote-endpoint = <&lvds_panel_in>;
156          };
157        };
158      };
159    };
160
161  - |
162    lvds-decoder {
163      compatible = "ti,ds90cf384a", "lvds-decoder";
164
165      ports {
166        #address-cells = <1>;
167        #size-cells = <0>;
168
169        port@0 {
170          reg = <0>;
171
172          lvds_dec_in: endpoint {
173            remote-endpoint = <&display_out_lvds>;
174          };
175        };
176
177        port@1 {
178          reg = <1>;
179
180          lvds_dec_out: endpoint {
181            remote-endpoint = <&rgb_panel_in>;
182          };
183        };
184      };
185    };
186
187...
188