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