162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/display/bridge/adi,adv7511.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Analog Devices ADV7511/11W/13 HDMI Encoders
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Laurent Pinchart <laurent.pinchart@ideasonboard.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |
1362306a36Sopenharmony_ci  The ADV7511, ADV7511W and ADV7513 are HDMI audio and video
1462306a36Sopenharmony_ci  transmitters compatible with HDMI 1.4 and DVI 1.0. They support color
1562306a36Sopenharmony_ci  space conversion, S/PDIF, CEC and HDCP. The transmitter input is
1662306a36Sopenharmony_ci  parallel RGB or YUV data.
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ciproperties:
1962306a36Sopenharmony_ci  compatible:
2062306a36Sopenharmony_ci    enum:
2162306a36Sopenharmony_ci      - adi,adv7511
2262306a36Sopenharmony_ci      - adi,adv7511w
2362306a36Sopenharmony_ci      - adi,adv7513
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci  reg:
2662306a36Sopenharmony_ci    description: |
2762306a36Sopenharmony_ci      I2C slave addresses.
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci      The ADV7511/11W/13 internal registers are split into four pages
3062306a36Sopenharmony_ci      exposed through different I2C addresses, creating four register
3162306a36Sopenharmony_ci      maps. Each map has it own I2C address and acts as a standard slave
3262306a36Sopenharmony_ci      device on the I2C bus. The main address is mandatory, others are
3362306a36Sopenharmony_ci      optional and revert to defaults if not specified.
3462306a36Sopenharmony_ci    minItems: 1
3562306a36Sopenharmony_ci    maxItems: 4
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci  reg-names:
3862306a36Sopenharmony_ci    description:
3962306a36Sopenharmony_ci      Names of maps with programmable addresses. It can contain any map
4062306a36Sopenharmony_ci      needing a non-default address.
4162306a36Sopenharmony_ci    minItems: 1
4262306a36Sopenharmony_ci    items:
4362306a36Sopenharmony_ci      - const: main
4462306a36Sopenharmony_ci      - const: edid
4562306a36Sopenharmony_ci      - const: cec
4662306a36Sopenharmony_ci      - const: packet
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci  clocks:
4962306a36Sopenharmony_ci    description: Reference to the CEC clock.
5062306a36Sopenharmony_ci    maxItems: 1
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci  clock-names:
5362306a36Sopenharmony_ci    const: cec
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci  interrupts:
5662306a36Sopenharmony_ci    maxItems: 1
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ci  pd-gpios:
5962306a36Sopenharmony_ci    description: GPIO connected to the power down signal.
6062306a36Sopenharmony_ci    maxItems: 1
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci  avdd-supply:
6362306a36Sopenharmony_ci    description: A 1.8V supply that powers up the AVDD pin.
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ci  dvdd-supply:
6662306a36Sopenharmony_ci    description: A 1.8V supply that powers up the DVDD pin.
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ci  pvdd-supply:
6962306a36Sopenharmony_ci    description: A 1.8V supply that powers up the PVDD pin.
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ci  dvdd-3v-supply:
7262306a36Sopenharmony_ci    description: A 3.3V supply that powers up the DVDD_3V pin.
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci  bgvdd-supply:
7562306a36Sopenharmony_ci    description: A 1.8V supply that powers up the BGVDD pin.
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ci  adi,input-depth:
7862306a36Sopenharmony_ci    description: Number of bits per color component at the input.
7962306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
8062306a36Sopenharmony_ci    enum: [ 8, 10, 12 ]
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci  adi,input-colorspace:
8362306a36Sopenharmony_ci    description: Input color space.
8462306a36Sopenharmony_ci    enum: [ rgb, yuv422, yuv444 ]
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ci  adi,input-clock:
8762306a36Sopenharmony_ci    description: |
8862306a36Sopenharmony_ci      Input clock type.
8962306a36Sopenharmony_ci        "1x": one clock cycle per pixel
9062306a36Sopenharmony_ci        "2x": two clock cycles per pixel
9162306a36Sopenharmony_ci        "dd": one clock cycle per pixel, data driven on both edges
9262306a36Sopenharmony_ci    enum: [ 1x, 2x, dd ]
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci  adi,clock-delay:
9562306a36Sopenharmony_ci    description:
9662306a36Sopenharmony_ci      Video data clock delay relative to the pixel clock, in ps
9762306a36Sopenharmony_ci      (-1200ps .. 1600 ps).
9862306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
9962306a36Sopenharmony_ci    default: 0
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ci  adi,embedded-sync:
10262306a36Sopenharmony_ci    description:
10362306a36Sopenharmony_ci      If defined, the input uses synchronization signals embedded in the
10462306a36Sopenharmony_ci      data stream (similar to BT.656).
10562306a36Sopenharmony_ci    type: boolean
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ci  adi,input-style:
10862306a36Sopenharmony_ci    description:
10962306a36Sopenharmony_ci      Input components arrangement variant as listed in the input
11062306a36Sopenharmony_ci      format tables in the datasheet.
11162306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
11262306a36Sopenharmony_ci    enum: [ 1, 2, 3 ]
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ci  adi,input-justification:
11562306a36Sopenharmony_ci    description: Input bit justification.
11662306a36Sopenharmony_ci    enum: [ left, evenly, right ]
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_ci  ports:
11962306a36Sopenharmony_ci    description:
12062306a36Sopenharmony_ci      The ADV7511(W)/13 has two video ports and one audio port.
12162306a36Sopenharmony_ci    $ref: /schemas/graph.yaml#/properties/ports
12262306a36Sopenharmony_ci
12362306a36Sopenharmony_ci    properties:
12462306a36Sopenharmony_ci      port@0:
12562306a36Sopenharmony_ci        description: Video port for the RGB or YUV input.
12662306a36Sopenharmony_ci        $ref: /schemas/graph.yaml#/properties/port
12762306a36Sopenharmony_ci
12862306a36Sopenharmony_ci      port@1:
12962306a36Sopenharmony_ci        description: Video port for the HDMI output.
13062306a36Sopenharmony_ci        $ref: /schemas/graph.yaml#/properties/port
13162306a36Sopenharmony_ci
13262306a36Sopenharmony_ci      port@2:
13362306a36Sopenharmony_ci        description: Audio port for the HDMI output.
13462306a36Sopenharmony_ci        $ref: /schemas/graph.yaml#/properties/port
13562306a36Sopenharmony_ci
13662306a36Sopenharmony_ci# adi,input-colorspace and adi,input-clock are required except in
13762306a36Sopenharmony_ci# "rgb 1x" and "yuv444 1x" modes, in which case they must not be
13862306a36Sopenharmony_ci# specified.
13962306a36Sopenharmony_ciif:
14062306a36Sopenharmony_ci  not:
14162306a36Sopenharmony_ci    properties:
14262306a36Sopenharmony_ci      adi,input-colorspace:
14362306a36Sopenharmony_ci        contains:
14462306a36Sopenharmony_ci          enum: [ rgb, yuv444 ]
14562306a36Sopenharmony_ci      adi,input-clock:
14662306a36Sopenharmony_ci        contains:
14762306a36Sopenharmony_ci          const: 1x
14862306a36Sopenharmony_ci
14962306a36Sopenharmony_cithen:
15062306a36Sopenharmony_ci  required:
15162306a36Sopenharmony_ci    - adi,input-style
15262306a36Sopenharmony_ci    - adi,input-justification
15362306a36Sopenharmony_ci
15462306a36Sopenharmony_cielse:
15562306a36Sopenharmony_ci  properties:
15662306a36Sopenharmony_ci    adi,input-style: false
15762306a36Sopenharmony_ci    adi,input-justification: false
15862306a36Sopenharmony_ci
15962306a36Sopenharmony_ci
16062306a36Sopenharmony_cirequired:
16162306a36Sopenharmony_ci  - compatible
16262306a36Sopenharmony_ci  - reg
16362306a36Sopenharmony_ci  - ports
16462306a36Sopenharmony_ci  - adi,input-depth
16562306a36Sopenharmony_ci  - adi,input-colorspace
16662306a36Sopenharmony_ci  - adi,input-clock
16762306a36Sopenharmony_ci  - avdd-supply
16862306a36Sopenharmony_ci  - dvdd-supply
16962306a36Sopenharmony_ci  - pvdd-supply
17062306a36Sopenharmony_ci  - dvdd-3v-supply
17162306a36Sopenharmony_ci  - bgvdd-supply
17262306a36Sopenharmony_ci
17362306a36Sopenharmony_ciadditionalProperties: false
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_ciexamples:
17662306a36Sopenharmony_ci  - |
17762306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/irq.h>
17862306a36Sopenharmony_ci
17962306a36Sopenharmony_ci    i2c@e6500000 {
18062306a36Sopenharmony_ci        #address-cells = <1>;
18162306a36Sopenharmony_ci        #size-cells = <0>;
18262306a36Sopenharmony_ci
18362306a36Sopenharmony_ci        reg = <0 0xe6500000>;
18462306a36Sopenharmony_ci
18562306a36Sopenharmony_ci        adv7511w: hdmi@39 {
18662306a36Sopenharmony_ci            compatible = "adi,adv7511w";
18762306a36Sopenharmony_ci            /*
18862306a36Sopenharmony_ci             * The EDID page will be accessible on address 0x66 on the I2C
18962306a36Sopenharmony_ci             * bus. All other maps continue to use their default addresses.
19062306a36Sopenharmony_ci             */
19162306a36Sopenharmony_ci            reg = <0x39>, <0x66>;
19262306a36Sopenharmony_ci            reg-names = "main", "edid";
19362306a36Sopenharmony_ci            interrupt-parent = <&gpio3>;
19462306a36Sopenharmony_ci            interrupts = <29 IRQ_TYPE_EDGE_FALLING>;
19562306a36Sopenharmony_ci            clocks = <&cec_clock>;
19662306a36Sopenharmony_ci            clock-names = "cec";
19762306a36Sopenharmony_ci            avdd-supply = <&v1v8>;
19862306a36Sopenharmony_ci            dvdd-supply = <&v1v8>;
19962306a36Sopenharmony_ci            pvdd-supply = <&v1v8>;
20062306a36Sopenharmony_ci            dvdd-3v-supply = <&v3v3>;
20162306a36Sopenharmony_ci            bgvdd-supply = <&v1v8>;
20262306a36Sopenharmony_ci
20362306a36Sopenharmony_ci            adi,input-depth = <8>;
20462306a36Sopenharmony_ci            adi,input-colorspace = "yuv422";
20562306a36Sopenharmony_ci            adi,input-clock = "1x";
20662306a36Sopenharmony_ci
20762306a36Sopenharmony_ci            adi,input-style = <3>;
20862306a36Sopenharmony_ci            adi,input-justification = "right";
20962306a36Sopenharmony_ci            ports {
21062306a36Sopenharmony_ci                #address-cells = <1>;
21162306a36Sopenharmony_ci                #size-cells = <0>;
21262306a36Sopenharmony_ci
21362306a36Sopenharmony_ci                port@0 {
21462306a36Sopenharmony_ci                    reg = <0>;
21562306a36Sopenharmony_ci                    adv7511w_in: endpoint {
21662306a36Sopenharmony_ci                        remote-endpoint = <&dpi_out>;
21762306a36Sopenharmony_ci                    };
21862306a36Sopenharmony_ci                };
21962306a36Sopenharmony_ci
22062306a36Sopenharmony_ci                port@1 {
22162306a36Sopenharmony_ci                    reg = <1>;
22262306a36Sopenharmony_ci                    adv7511_out: endpoint {
22362306a36Sopenharmony_ci                        remote-endpoint = <&hdmi_connector_in>;
22462306a36Sopenharmony_ci                    };
22562306a36Sopenharmony_ci                };
22662306a36Sopenharmony_ci
22762306a36Sopenharmony_ci                port@2 {
22862306a36Sopenharmony_ci                    reg = <2>;
22962306a36Sopenharmony_ci                    codec_endpoint: endpoint {
23062306a36Sopenharmony_ci                        remote-endpoint = <&i2s0_cpu_endpoint>;
23162306a36Sopenharmony_ci                    };
23262306a36Sopenharmony_ci                };
23362306a36Sopenharmony_ci            };
23462306a36Sopenharmony_ci        };
23562306a36Sopenharmony_ci    };
23662306a36Sopenharmony_ci
23762306a36Sopenharmony_ci...
238