162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/display/bridge/sil,sii9022.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Silicon Image sii902x HDMI bridge
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Boris Brezillon <bbrezillon@kernel.org>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ciproperties:
1362306a36Sopenharmony_ci  compatible:
1462306a36Sopenharmony_ci    oneOf:
1562306a36Sopenharmony_ci      - items:
1662306a36Sopenharmony_ci          - enum:
1762306a36Sopenharmony_ci              - sil,sii9022-cpi # CEC Programming Interface
1862306a36Sopenharmony_ci              - sil,sii9022-tpi # Transmitter Programming Interface
1962306a36Sopenharmony_ci          - const: sil,sii9022
2062306a36Sopenharmony_ci      - const: sil,sii9022
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci  reg:
2362306a36Sopenharmony_ci    maxItems: 1
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci  interrupts:
2662306a36Sopenharmony_ci    maxItems: 1
2762306a36Sopenharmony_ci    description: Interrupt line used to inform the host about hotplug events.
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci  reset-gpios:
3062306a36Sopenharmony_ci    maxItems: 1
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci  iovcc-supply:
3362306a36Sopenharmony_ci    description: I/O Supply Voltage (1.8V or 3.3V)
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci  cvcc12-supply:
3662306a36Sopenharmony_ci    description: Digital Core Supply Voltage (1.2V)
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci  '#sound-dai-cells':
3962306a36Sopenharmony_ci    enum: [ 0, 1 ]
4062306a36Sopenharmony_ci    description: |
4162306a36Sopenharmony_ci      <0> if only I2S or S/PDIF pin is wired,
4262306a36Sopenharmony_ci      <1> if both are wired.
4362306a36Sopenharmony_ci      HDMI audio is configured only if this property is found.
4462306a36Sopenharmony_ci      If HDMI audio is configured, the sii902x device becomes an I2S and/or
4562306a36Sopenharmony_ci      S/PDIF audio codec component (e.g. a digital audio sink), that can be
4662306a36Sopenharmony_ci      used in configuring full audio devices with simple-card or
4762306a36Sopenharmony_ci      audio-graph-card bindings. See their binding documents on how to describe
4862306a36Sopenharmony_ci      the way the
4962306a36Sopenharmony_ci      sii902x device is connected to the rest of the audio system:
5062306a36Sopenharmony_ci      Documentation/devicetree/bindings/sound/simple-card.yaml
5162306a36Sopenharmony_ci      Documentation/devicetree/bindings/sound/audio-graph-card.yaml
5262306a36Sopenharmony_ci      Note: In case of the audio-graph-card binding the used port index should
5362306a36Sopenharmony_ci      be 3.
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci  sil,i2s-data-lanes:
5662306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32-array
5762306a36Sopenharmony_ci    minItems: 1
5862306a36Sopenharmony_ci    maxItems: 4
5962306a36Sopenharmony_ci    uniqueItems: true
6062306a36Sopenharmony_ci    items:
6162306a36Sopenharmony_ci      enum: [ 0, 1, 2, 3 ]
6262306a36Sopenharmony_ci    description:
6362306a36Sopenharmony_ci      Each integer indicates which I2S pin is connected to which audio FIFO.
6462306a36Sopenharmony_ci      The first integer selects the I2S audio pin for the first audio FIFO#0
6562306a36Sopenharmony_ci      (HDMI channels 1&2), the second for FIFO#1 (HDMI channels 3&4), and so
6662306a36Sopenharmony_ci      on. There are 4 FIFOs and 4 I2S pins (SD0 - SD3). Any I2S pin can be
6762306a36Sopenharmony_ci      connected to any FIFO, but there can be no gaps. E.g. an I2S pin must be
6862306a36Sopenharmony_ci      mapped to FIFO#0 and FIFO#1 before mapping a channel to FIFO#2. The
6962306a36Sopenharmony_ci      default value is <0>, describing SD0 pin being routed to HDMI audio
7062306a36Sopenharmony_ci      FIFO#0.
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci  clocks:
7362306a36Sopenharmony_ci    maxItems: 1
7462306a36Sopenharmony_ci    description: MCLK input. MCLK can be used to produce HDMI audio CTS values.
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci  clock-names:
7762306a36Sopenharmony_ci    const: mclk
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci  ports:
8062306a36Sopenharmony_ci    $ref: /schemas/graph.yaml#/properties/ports
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci    properties:
8362306a36Sopenharmony_ci      port@0:
8462306a36Sopenharmony_ci        $ref: /schemas/graph.yaml#/properties/port
8562306a36Sopenharmony_ci        description: Parallel RGB input port
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ci      port@1:
8862306a36Sopenharmony_ci        $ref: /schemas/graph.yaml#/properties/port
8962306a36Sopenharmony_ci        description: HDMI output port
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ci      port@3:
9262306a36Sopenharmony_ci        $ref: /schemas/graph.yaml#/properties/port
9362306a36Sopenharmony_ci        description: Sound input port
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_cirequired:
9662306a36Sopenharmony_ci  - compatible
9762306a36Sopenharmony_ci  - reg
9862306a36Sopenharmony_ci
9962306a36Sopenharmony_ciadditionalProperties: false
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ciexamples:
10262306a36Sopenharmony_ci  - |
10362306a36Sopenharmony_ci    i2c {
10462306a36Sopenharmony_ci        #address-cells = <1>;
10562306a36Sopenharmony_ci        #size-cells = <0>;
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ci        hdmi-bridge@39 {
10862306a36Sopenharmony_ci            compatible = "sil,sii9022";
10962306a36Sopenharmony_ci            reg = <0x39>;
11062306a36Sopenharmony_ci            reset-gpios = <&pioA 1 0>;
11162306a36Sopenharmony_ci            iovcc-supply = <&v3v3_hdmi>;
11262306a36Sopenharmony_ci            cvcc12-supply = <&v1v2_hdmi>;
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ci            #sound-dai-cells = <0>;
11562306a36Sopenharmony_ci            sil,i2s-data-lanes = < 0 1 2 >;
11662306a36Sopenharmony_ci            clocks = <&mclk>;
11762306a36Sopenharmony_ci            clock-names = "mclk";
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ci            ports {
12062306a36Sopenharmony_ci                #address-cells = <1>;
12162306a36Sopenharmony_ci                #size-cells = <0>;
12262306a36Sopenharmony_ci
12362306a36Sopenharmony_ci                port@0 {
12462306a36Sopenharmony_ci                    reg = <0>;
12562306a36Sopenharmony_ci                    bridge_in: endpoint {
12662306a36Sopenharmony_ci                        remote-endpoint = <&dc_out>;
12762306a36Sopenharmony_ci                    };
12862306a36Sopenharmony_ci                };
12962306a36Sopenharmony_ci            };
13062306a36Sopenharmony_ci        };
13162306a36Sopenharmony_ci    };
132