summaryrefslogtreecommitdiffstats
path: root/Documentation/devicetree/bindings/display/bridge/adi,adv7533.yaml
blob: f36209137c8a4536592c0cd74a858bdceb4c77a7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/bridge/adi,adv7533.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Analog Devices ADV7533/35 HDMI Encoders

maintainers:
  - Laurent Pinchart <laurent.pinchart@ideasonboard.com>

description: |
  The ADV7533 and ADV7535 are HDMI audio and video transmitters
  compatible with HDMI 1.4 and DVI 1.0. They support color space
  conversion, S/PDIF, CEC and HDCP. The transmitter input is MIPI DSI.

properties:
  compatible:
    enum:
      - adi,adv7533
      - adi,adv7535

  reg:
    description: |
      I2C slave addresses.

      The ADV7533/35 internal registers are split into four pages
      exposed through different I2C addresses, creating four register
      maps. Each map has it own I2C address and acts as a standard slave
      device on the I2C bus. The main address is mandatory, others are
      optional and revert to defaults if not specified.
    minItems: 1
    maxItems: 4

  reg-names:
    description:
      Names of maps with programmable addresses. It can contain any map
      needing a non-default address.
    minItems: 1
    items:
      - const: main
      - const: edid
      - const: cec
      - const: packet

  clocks:
    description: Reference to the CEC clock.
    maxItems: 1

  clock-names:
    const: cec

  interrupts:
    maxItems: 1

  pd-gpios:
    description: GPIO connected to the power down signal.
    maxItems: 1

  avdd-supply:
    description: A 1.8V supply that powers up the AVDD pin.

  dvdd-supply:
    description: A 1.8V supply that powers up the DVDD pin.

  pvdd-supply:
    description: A 1.8V supply that powers up the PVDD pin.

  a2vdd-supply:
    description: A 1.8V supply that powers up the A2VDD pin.

  v3p3-supply:
    description: A 3.3V supply that powers up the V3P3 pin.

  v1p2-supply:
    description:
      A supply that powers up the V1P2 pin. It can be either 1.2V
      or 1.8V for ADV7533 but only 1.8V for ADV7535.

  adi,disable-timing-generator:
    description:
      Disables the internal timing generator. The chip will rely on the
      sync signals in the DSI data lanes, rather than generating its own
      timings for HDMI output.
    type: boolean

  adi,dsi-lanes:
    description: Number of DSI data lanes connected to the DSI host.
    $ref: /schemas/types.yaml#/definitions/uint32
    enum: [ 1, 2, 3, 4 ]

  ports:
    description:
      The ADV7533/35 has two video ports and one audio port. This node
      models their connections as documented in
      Documentation/devicetree/bindings/media/video-interfaces.txt
      Documentation/devicetree/bindings/graph.txt
    type: object
    properties:
      port@0:
        description:
          Video port for the DSI input. The remote endpoint phandle
          should be a reference to a valid mipi_dsi_host_device.
        type: object

      port@1:
        description: Video port for the HDMI output.
        type: object

      port@2:
        description: Audio port for the HDMI output.
        type: object

required:
  - compatible
  - reg
  - ports
  - adi,dsi-lanes
  - avdd-supply
  - dvdd-supply
  - pvdd-supply
  - a2vdd-supply
  - v3p3-supply

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/irq.h>

    i2c@e6500000 {
        #address-cells = <1>;
        #size-cells = <0>;

        reg = <0 0xe6500000>;

        adv7533: hdmi@39 {
            compatible = "adi,adv7533";
            /*
             * The EDID page will be accessible on address 0x66 on the I2C
             * bus. All other maps continue to use their default addresses.
             */
            reg = <0x39>, <0x66>;
            reg-names = "main", "edid";
            interrupt-parent = <&gpio3>;
            interrupts = <29 IRQ_TYPE_EDGE_FALLING>;
            clocks = <&cec_clock>;
            clock-names = "cec";
            adi,dsi-lanes = <4>;
            avdd-supply = <&v1v8>;
            dvdd-supply = <&v1v8>;
            pvdd-supply = <&v1v8>;
            a2vdd-supply = <&v1v8>;
            v3p3-supply = <&v3v3>;

            ports {
                #address-cells = <1>;
                #size-cells = <0>;

                port@0 {
                    reg = <0>;
                    adv7533_in: endpoint {
                        remote-endpoint = <&dsi_out>;
                    };
                };

                port@1 {
                    reg = <1>;
                    adv7533_out: endpoint {
                        remote-endpoint = <&hdmi_connector_in>;
                    };
                };

                port@2 {
                    reg = <2>;
                    codec_endpoint: endpoint {
                        remote-endpoint = <&i2s0_cpu_endpoint>;
                    };
                };
            };
        };
    };

...