Re: [PATCH 5/8] dt-bindings: display: bridge: Add ITE IT6263 LVDS to HDMI converter

From: Rob Herring
Date: Tue Oct 01 2024 - 20:02:23 EST


On Mon, Sep 30, 2024 at 01:29:00PM +0800, Liu Ying wrote:
> Document ITE IT6263 LVDS to HDMI converter.
>
> Product link:
> https://www.ite.com.tw/en/product/cate1/IT6263
>
> Signed-off-by: Liu Ying <victor.liu@xxxxxxx>
> ---
> .../bindings/display/bridge/ite,it6263.yaml | 310 ++++++++++++++++++
> 1 file changed, 310 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/display/bridge/ite,it6263.yaml
>
> diff --git a/Documentation/devicetree/bindings/display/bridge/ite,it6263.yaml b/Documentation/devicetree/bindings/display/bridge/ite,it6263.yaml
> new file mode 100644
> index 000000000000..97fb81e5bc4a
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/display/bridge/ite,it6263.yaml
> @@ -0,0 +1,310 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/display/bridge/ite,it6263.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: ITE IT6263 LVDS to HDMI converter
> +
> +maintainers:
> + - Liu Ying <victor.liu@xxxxxxx>
> +
> +description: |
> + The IT6263 is a high-performance single-chip De-SSC(De-Spread Spectrum) LVDS
> + to HDMI converter. Combined with LVDS receiver and HDMI 1.4a transmitter,
> + the IT6263 supports LVDS input and HDMI 1.4 output by conversion function.
> + The built-in LVDS receiver can support single-link and dual-link LVDS inputs,
> + and the built-in HDMI transmitter is fully compliant with HDMI 1.4a/3D, HDCP
> + 1.2 and backward compatible with DVI 1.0 specification.
> +
> + The IT6263 also encodes and transmits up to 8 channels of I2S digital audio,
> + with sampling rate up to 192KHz and sample size up to 24 bits. In addition,
> + an S/PDIF input port takes in compressed audio of up to 192KHz frame rate.
> +
> + The newly supported High-Bit Rate(HBR) audio by HDMI specifications v1.3 is
> + provided by the IT6263 in two interfaces: the four I2S input ports or the
> + S/PDIF input port. With both interfaces the highest possible HBR frame rate
> + is supported at up to 768KHz.
> +
> +properties:
> + compatible:
> + const: ite,it6263
> +
> + reg:
> + maxItems: 1
> +
> + clocks:
> + maxItems: 1
> + description: audio master clock
> +
> + clock-names:
> + const: mclk
> +
> + reset-gpios:
> + maxItems: 1
> +
> + ivdd-supply:
> + description: 1.8V digital logic power
> +
> + ovdd-supply:
> + description: 3.3V I/O pin power
> +
> + txavcc18-supply:
> + description: 1.8V HDMI analog frontend power
> +
> + txavcc33-supply:
> + description: 3.3V HDMI analog frontend power
> +
> + pvcc1-supply:
> + description: 1.8V HDMI frontend core PLL power
> +
> + pvcc2-supply:
> + description: 1.8V HDMI frontend filter PLL power
> +
> + avcc-supply:
> + description: 3.3V LVDS frontend power
> +
> + anvdd-supply:
> + description: 1.8V LVDS frontend analog power
> +
> + apvdd-supply:
> + description: 1.8V LVDS frontend PLL power
> +
> + "#sound-dai-cells":
> + const: 0
> +
> + ite,i2s-audio-fifo-sources:
> + $ref: /schemas/types.yaml#/definitions/uint32-array
> + minItems: 1
> + maxItems: 4
> + items:
> + enum: [0, 1, 2, 3]
> + description:
> + Each array element indicates the pin number of an I2S serial data input
> + line which is connected to an audio FIFO, from audio FIFO0 to FIFO3.
> +
> + ite,rl-channel-swap-audio-sources:
> + $ref: /schemas/types.yaml#/definitions/uint32-array
> + minItems: 1
> + maxItems: 4
> + uniqueItems: true
> + items:
> + enum: [0, 1, 2, 3]
> + description:
> + Each array element indicates an audio source whose right channel and left
> + channel are swapped by this converter. For I2S, the element is the pin
> + number of an I2S serial data input line. For S/PDIF, the element is always
> + 0.
> +
> + ports:
> + $ref: /schemas/graph.yaml#/properties/ports

Test your bindings. You need 'additionalProperties: false' here. Though
I can't remember if that can 'see' properties under the oneOf. So it may
have to be unevaluatedProperties instead.

> +
> + oneOf:

I think you can get rid of this. If port@1 requires the dual link
properties and then properties on port@0, then the only way you can have
a single link is removing port@1 from the DT.

> + - properties:
> + port@0:
> + $ref: /schemas/graph.yaml#/properties/port
> + description: the first LVDS input link
> +
> + port@1: false
> +
> + port@2:
> + $ref: /schemas/graph.yaml#/properties/port
> + description: video port for the HDMI output
> +
> + port@3:
> + $ref: /schemas/graph.yaml#/properties/port
> + description: sound input port
> +
> + required:
> + - port@0
> + - port@2
> +
> + - properties:
> + port@0:
> + $ref: /schemas/graph.yaml#/$defs/port-base
> + unevaluatedProperties: false
> + description: the first LVDS input link
> +
> + properties:
> + dual-lvds-odd-pixels:
> + type: boolean
> + description: the first sink port for odd pixels
> +
> + dual-lvds-even-pixels:
> + type: boolean
> + description: the first sink port for even pixels
> +
> + oneOf:
> + - required: [dual-lvds-odd-pixels]
> + - required: [dual-lvds-even-pixels]
> +
> + port@1:
> + $ref: /schemas/graph.yaml#/$defs/port-base
> + unevaluatedProperties: false
> + description: the second LVDS input link
> +
> + properties:
> + dual-lvds-even-pixels:
> + type: boolean
> + description: the second sink port for even pixels
> +
> + dual-lvds-odd-pixels:
> + type: boolean
> + description: the second sink port for odd pixels
> +
> + oneOf:
> + - required: [dual-lvds-even-pixels]
> + - required: [dual-lvds-odd-pixels]
> +
> + port@2:
> + $ref: /schemas/graph.yaml#/properties/port
> + description: video port for the HDMI output
> +
> + port@3:
> + $ref: /schemas/graph.yaml#/properties/port
> + description: sound input port
> +
> + required:
> + - port@0
> + - port@1
> + - port@2
> +
> + allOf:
> + - if:
> + properties:
> + port@0:
> + required:
> + - dual-lvds-odd-pixels
> + then:
> + properties:
> + port@1:
> + properties:
> + dual-lvds-odd-pixels: false
> +
> + - if:
> + properties:
> + port@0:
> + required:
> + - dual-lvds-even-pixels
> + then:
> + properties:
> + port@1:
> + properties:
> + dual-lvds-even-pixels: false
> +
> +required:
> + - compatible
> + - reg
> + - ivdd-supply
> + - ovdd-supply
> + - txavcc18-supply
> + - txavcc33-supply
> + - pvcc1-supply
> + - pvcc2-supply
> + - avcc-supply
> + - anvdd-supply
> + - apvdd-supply
> + - ports
> +
> +additionalProperties: false
> +