diff mbox series

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

Message ID 20240930052903.168881-6-victor.liu@nxp.com (mailing list archive)
State New, archived
Headers show
Series Add ITE IT6263 LVDS to HDMI converter support | expand

Commit Message

Liu Ying Sept. 30, 2024, 5:29 a.m. UTC
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@nxp.com>
---
 .../bindings/display/bridge/ite,it6263.yaml   | 310 ++++++++++++++++++
 1 file changed, 310 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/display/bridge/ite,it6263.yaml

Comments

Biju Das Sept. 30, 2024, 9:04 a.m. UTC | #1
Hi Liu,

thanks for the patch.

> -----Original Message-----
> From: linux-arm-kernel <linux-arm-kernel-bounces@lists.infradead.org> On Behalf Of Liu Ying
> Sent: Monday, September 30, 2024 6:29 AM
> Subject: [PATCH 5/8] dt-bindings: display: bridge: Add ITE IT6263 LVDS to HDMI converter
> 
> 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@nxp.com>
> ---
>  .../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@nxp.com>
> +
> +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
> +
> +    oneOf:
> +      - 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

What about single lvds as device support it?

Cheers,
Biju

> +
> +        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
> +
> +examples:
> +  - |
> +    /* single-link LVDS input */
> +    #include <dt-bindings/gpio/gpio.h>
> +
> +    i2c {
> +        #address-cells = <1>;
> +        #size-cells = <0>;
> +
> +        hdmi@4c {
> +            compatible = "ite,it6263";
> +            reg = <0x4c>;
> +            reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
> +            ivdd-supply = <&reg_buck5>;
> +            ovdd-supply = <&reg_vext_3v3>;
> +            txavcc18-supply = <&reg_buck5>;
> +            txavcc33-supply = <&reg_vext_3v3>;
> +            pvcc1-supply = <&reg_buck5>;
> +            pvcc2-supply = <&reg_buck5>;
> +            avcc-supply = <&reg_vext_3v3>;
> +            anvdd-supply = <&reg_buck5>;
> +            apvdd-supply = <&reg_buck5>;
> +
> +            ports {
> +                #address-cells = <1>;
> +                #size-cells = <0>;
> +
> +                port@0 {
> +                    reg = <0>;
> +
> +                    it6263_lvds_link1: endpoint {
> +                        remote-endpoint = <&ldb_lvds_ch0>;
> +                    };
> +                };
> +
> +                port@2 {
> +                    reg = <2>;
> +
> +                    it6263_out: endpoint {
> +                        remote-endpoint = <&hdmi_in>;
> +                    };
> +                };
> +            };
> +        };
> +    };
> +
> +  - |
> +    /* dual-link LVDS input */
> +    #include <dt-bindings/gpio/gpio.h>
> +
> +    i2c {
> +        #address-cells = <1>;
> +        #size-cells = <0>;
> +
> +        hdmi@4c {
> +            compatible = "ite,it6263";
> +            reg = <0x4c>;
> +            reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
> +            ivdd-supply = <&reg_buck5>;
> +            ovdd-supply = <&reg_vext_3v3>;
> +            txavcc18-supply = <&reg_buck5>;
> +            txavcc33-supply = <&reg_vext_3v3>;
> +            pvcc1-supply = <&reg_buck5>;
> +            pvcc2-supply = <&reg_buck5>;
> +            avcc-supply = <&reg_vext_3v3>;
> +            anvdd-supply = <&reg_buck5>;
> +            apvdd-supply = <&reg_buck5>;
> +
> +            ports {
> +                #address-cells = <1>;
> +                #size-cells = <0>;
> +
> +                port@0 {
> +                    reg = <0>;
> +                    dual-lvds-odd-pixels;
> +
> +                    it6263_lvds_link1_dual: endpoint {
> +                        remote-endpoint = <&ldb_lvds_ch0>;
> +                    };
> +                };
> +
> +                port@1 {
> +                    reg = <1>;
> +                    dual-lvds-even-pixels;
> +
> +                    it6263_lvds_link2_dual: endpoint {
> +                        remote-endpoint = <&ldb_lvds_ch1>;
> +                    };
> +                };
> +
> +                port@2 {
> +                    reg = <2>;
> +
> +                    it6263_out_dual: endpoint {
> +                        remote-endpoint = <&hdmi_in>;
> +                    };
> +                };
> +            };
> +        };
> +    };
> --
> 2.34.1
>
Liu Ying Sept. 30, 2024, 9:16 a.m. UTC | #2
On 09/30/2024, Biju Das wrote:
> Hi Liu,

Hi Biju,

> 
> thanks for the patch.
> 
>> -----Original Message-----
>> From: linux-arm-kernel <linux-arm-kernel-bounces@lists.infradead.org> On Behalf Of Liu Ying
>> Sent: Monday, September 30, 2024 6:29 AM
>> Subject: [PATCH 5/8] dt-bindings: display: bridge: Add ITE IT6263 LVDS to HDMI converter
>>
>> 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@nxp.com>
>> ---
>>  .../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@nxp.com>
>> +
>> +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
>> +
>> +    oneOf:
>> +      - 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
> 
> What about single lvds as device support it?

The single LVDS link has already been documented in this binding doc.  
Please find the "properties" above where only "port@0" and "port@2"
are required.

imx8mp-evk-lvds0-imx-lvds-hdmi.dtso and imx8mp-evk-lvds1-imx-lvds-hdmi.dtso
added in patch 7 support the NXP adapter card with single LVDS link.

> 
> Cheers,
> Biju
> 
>> +
>> +        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
>> +
>> +examples:
>> +  - |
>> +    /* single-link LVDS input */
>> +    #include <dt-bindings/gpio/gpio.h>
>> +
>> +    i2c {
>> +        #address-cells = <1>;
>> +        #size-cells = <0>;
>> +
>> +        hdmi@4c {
>> +            compatible = "ite,it6263";
>> +            reg = <0x4c>;
>> +            reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
>> +            ivdd-supply = <&reg_buck5>;
>> +            ovdd-supply = <&reg_vext_3v3>;
>> +            txavcc18-supply = <&reg_buck5>;
>> +            txavcc33-supply = <&reg_vext_3v3>;
>> +            pvcc1-supply = <&reg_buck5>;
>> +            pvcc2-supply = <&reg_buck5>;
>> +            avcc-supply = <&reg_vext_3v3>;
>> +            anvdd-supply = <&reg_buck5>;
>> +            apvdd-supply = <&reg_buck5>;
>> +
>> +            ports {
>> +                #address-cells = <1>;
>> +                #size-cells = <0>;
>> +
>> +                port@0 {
>> +                    reg = <0>;
>> +
>> +                    it6263_lvds_link1: endpoint {
>> +                        remote-endpoint = <&ldb_lvds_ch0>;
>> +                    };
>> +                };
>> +
>> +                port@2 {
>> +                    reg = <2>;
>> +
>> +                    it6263_out: endpoint {
>> +                        remote-endpoint = <&hdmi_in>;
>> +                    };
>> +                };
>> +            };
>> +        };
>> +    };
>> +
>> +  - |
>> +    /* dual-link LVDS input */
>> +    #include <dt-bindings/gpio/gpio.h>
>> +
>> +    i2c {
>> +        #address-cells = <1>;
>> +        #size-cells = <0>;
>> +
>> +        hdmi@4c {
>> +            compatible = "ite,it6263";
>> +            reg = <0x4c>;
>> +            reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
>> +            ivdd-supply = <&reg_buck5>;
>> +            ovdd-supply = <&reg_vext_3v3>;
>> +            txavcc18-supply = <&reg_buck5>;
>> +            txavcc33-supply = <&reg_vext_3v3>;
>> +            pvcc1-supply = <&reg_buck5>;
>> +            pvcc2-supply = <&reg_buck5>;
>> +            avcc-supply = <&reg_vext_3v3>;
>> +            anvdd-supply = <&reg_buck5>;
>> +            apvdd-supply = <&reg_buck5>;
>> +
>> +            ports {
>> +                #address-cells = <1>;
>> +                #size-cells = <0>;
>> +
>> +                port@0 {
>> +                    reg = <0>;
>> +                    dual-lvds-odd-pixels;
>> +
>> +                    it6263_lvds_link1_dual: endpoint {
>> +                        remote-endpoint = <&ldb_lvds_ch0>;
>> +                    };
>> +                };
>> +
>> +                port@1 {
>> +                    reg = <1>;
>> +                    dual-lvds-even-pixels;
>> +
>> +                    it6263_lvds_link2_dual: endpoint {
>> +                        remote-endpoint = <&ldb_lvds_ch1>;
>> +                    };
>> +                };
>> +
>> +                port@2 {
>> +                    reg = <2>;
>> +
>> +                    it6263_out_dual: endpoint {
>> +                        remote-endpoint = <&hdmi_in>;
>> +                    };
>> +                };
>> +            };
>> +        };
>> +    };
>> --
>> 2.34.1
>>
>
Biju Das Sept. 30, 2024, 9:24 a.m. UTC | #3
Hi Liu,

> -----Original Message-----
> From: Liu Ying <victor.liu@nxp.com>
> Sent: Monday, September 30, 2024 10:16 AM
> Subject: Re: [PATCH 5/8] dt-bindings: display: bridge: Add ITE IT6263 LVDS to HDMI converter
> 
> On 09/30/2024, Biju Das wrote:
> > Hi Liu,
> 
> Hi Biju,
> 
> >
> > thanks for the patch.
> >
> >> -----Original Message-----
> >> From: linux-arm-kernel <linux-arm-kernel-bounces@lists.infradead.org>
> >> On Behalf Of Liu Ying
> >> Sent: Monday, September 30, 2024 6:29 AM
> >> Subject: [PATCH 5/8] dt-bindings: display: bridge: Add ITE IT6263
> >> LVDS to HDMI converter
> >>
> >> 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@nxp.com>
> >> ---
> >>  .../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.yam
> >> +++ l
> >> @@ -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@nxp.com>
> >> +
> >> +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
> >> +
> >> +    oneOf:
> >> +      - 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
> >
> > What about single lvds as device support it?
> 
> The single LVDS link has already been documented in this binding doc.
> Please find the "properties" above where only "port@0" and "port@2"
> are required.

Maybe "the first LVDS input link"-->"Single LVDS input link" for single LVDS block??

> 
> imx8mp-evk-lvds0-imx-lvds-hdmi.dtso and imx8mp-evk-lvds1-imx-lvds-hdmi.dtso
> added in patch 7 support the NXP adapter card with single LVDS link.
> 
> >
> > Cheers,
> > Biju
> >
> >> +
> >> +        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
> >> +
> >> +examples:
> >> +  - |
> >> +    /* single-link LVDS input */
> >> +    #include <dt-bindings/gpio/gpio.h>
> >> +
> >> +    i2c {
> >> +        #address-cells = <1>;
> >> +        #size-cells = <0>;
> >> +
> >> +        hdmi@4c {
> >> +            compatible = "ite,it6263";
> >> +            reg = <0x4c>;
> >> +            reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
> >> +            ivdd-supply = <&reg_buck5>;
> >> +            ovdd-supply = <&reg_vext_3v3>;
> >> +            txavcc18-supply = <&reg_buck5>;
> >> +            txavcc33-supply = <&reg_vext_3v3>;
> >> +            pvcc1-supply = <&reg_buck5>;
> >> +            pvcc2-supply = <&reg_buck5>;
> >> +            avcc-supply = <&reg_vext_3v3>;
> >> +            anvdd-supply = <&reg_buck5>;
> >> +            apvdd-supply = <&reg_buck5>;
> >> +
> >> +            ports {
> >> +                #address-cells = <1>;
> >> +                #size-cells = <0>;
> >> +
> >> +                port@0 {
> >> +                    reg = <0>;
> >> +
> >> +                    it6263_lvds_link1: endpoint {
> >> +                        remote-endpoint = <&ldb_lvds_ch0>;
> >> +                    };
> >> +                };
> >> +
> >> +                port@2 {
> >> +                    reg = <2>;
> >> +
> >> +                    it6263_out: endpoint {
> >> +                        remote-endpoint = <&hdmi_in>;
> >> +                    };
> >> +                };
> >> +            };
> >> +        };
> >> +    };
> >> +
> >> +  - |
> >> +    /* dual-link LVDS input */
> >> +    #include <dt-bindings/gpio/gpio.h>
> >> +
> >> +    i2c {
> >> +        #address-cells = <1>;
> >> +        #size-cells = <0>;
> >> +
> >> +        hdmi@4c {
> >> +            compatible = "ite,it6263";
> >> +            reg = <0x4c>;
> >> +            reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
> >> +            ivdd-supply = <&reg_buck5>;
> >> +            ovdd-supply = <&reg_vext_3v3>;
> >> +            txavcc18-supply = <&reg_buck5>;
> >> +            txavcc33-supply = <&reg_vext_3v3>;
> >> +            pvcc1-supply = <&reg_buck5>;
> >> +            pvcc2-supply = <&reg_buck5>;
> >> +            avcc-supply = <&reg_vext_3v3>;
> >> +            anvdd-supply = <&reg_buck5>;
> >> +            apvdd-supply = <&reg_buck5>;
> >> +
> >> +            ports {
> >> +                #address-cells = <1>;
> >> +                #size-cells = <0>;
> >> +
> >> +                port@0 {
> >> +                    reg = <0>;
> >> +                    dual-lvds-odd-pixels;
> >> +
> >> +                    it6263_lvds_link1_dual: endpoint {
> >> +                        remote-endpoint = <&ldb_lvds_ch0>;
> >> +                    };
> >> +                };
> >> +
> >> +                port@1 {
> >> +                    reg = <1>;
> >> +                    dual-lvds-even-pixels;
> >> +
> >> +                    it6263_lvds_link2_dual: endpoint {
> >> +                        remote-endpoint = <&ldb_lvds_ch1>;
> >> +                    };
> >> +                };
> >> +
> >> +                port@2 {
> >> +                    reg = <2>;
> >> +
> >> +                    it6263_out_dual: endpoint {
> >> +                        remote-endpoint = <&hdmi_in>;
> >> +                    };
> >> +                };
> >> +            };
> >> +        };
> >> +    };
> >> --
> >> 2.34.1
> >>
> >
> 
> --
> Regards,
> Liu Ying
Liu Ying Sept. 30, 2024, 9:30 a.m. UTC | #4
On 09/30/2024, Biju Das wrote:
> Hi Liu,

Hi Biju,

> 
>> -----Original Message-----
>> From: Liu Ying <victor.liu@nxp.com>
>> Sent: Monday, September 30, 2024 10:16 AM
>> Subject: Re: [PATCH 5/8] dt-bindings: display: bridge: Add ITE IT6263 LVDS to HDMI converter
>>
>> On 09/30/2024, Biju Das wrote:
>>> Hi Liu,
>>
>> Hi Biju,
>>
>>>
>>> thanks for the patch.
>>>
>>>> -----Original Message-----
>>>> From: linux-arm-kernel <linux-arm-kernel-bounces@lists.infradead.org>
>>>> On Behalf Of Liu Ying
>>>> Sent: Monday, September 30, 2024 6:29 AM
>>>> Subject: [PATCH 5/8] dt-bindings: display: bridge: Add ITE IT6263
>>>> LVDS to HDMI converter
>>>>
>>>> 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@nxp.com>
>>>> ---
>>>>  .../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.yam
>>>> +++ l
>>>> @@ -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@nxp.com>
>>>> +
>>>> +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
>>>> +
>>>> +    oneOf:
>>>> +      - 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
>>>
>>> What about single lvds as device support it?
>>
>> The single LVDS link has already been documented in this binding doc.
>> Please find the "properties" above where only "port@0" and "port@2"
>> are required.
> 
> Maybe "the first LVDS input link"-->"Single LVDS input link" for single LVDS block??

Nope.

I tested single LVDS link with the second LVDS link.  It didn't work.
The single LVDS link only works with the first LVDS link.

> 
>>
>> imx8mp-evk-lvds0-imx-lvds-hdmi.dtso and imx8mp-evk-lvds1-imx-lvds-hdmi.dtso
>> added in patch 7 support the NXP adapter card with single LVDS link.
>>
>>>
>>> Cheers,
>>> Biju
>>>
>>>> +
>>>> +        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
>>>> +
>>>> +examples:
>>>> +  - |
>>>> +    /* single-link LVDS input */
>>>> +    #include <dt-bindings/gpio/gpio.h>
>>>> +
>>>> +    i2c {
>>>> +        #address-cells = <1>;
>>>> +        #size-cells = <0>;
>>>> +
>>>> +        hdmi@4c {
>>>> +            compatible = "ite,it6263";
>>>> +            reg = <0x4c>;
>>>> +            reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
>>>> +            ivdd-supply = <&reg_buck5>;
>>>> +            ovdd-supply = <&reg_vext_3v3>;
>>>> +            txavcc18-supply = <&reg_buck5>;
>>>> +            txavcc33-supply = <&reg_vext_3v3>;
>>>> +            pvcc1-supply = <&reg_buck5>;
>>>> +            pvcc2-supply = <&reg_buck5>;
>>>> +            avcc-supply = <&reg_vext_3v3>;
>>>> +            anvdd-supply = <&reg_buck5>;
>>>> +            apvdd-supply = <&reg_buck5>;
>>>> +
>>>> +            ports {
>>>> +                #address-cells = <1>;
>>>> +                #size-cells = <0>;
>>>> +
>>>> +                port@0 {
>>>> +                    reg = <0>;
>>>> +
>>>> +                    it6263_lvds_link1: endpoint {
>>>> +                        remote-endpoint = <&ldb_lvds_ch0>;
>>>> +                    };
>>>> +                };
>>>> +
>>>> +                port@2 {
>>>> +                    reg = <2>;
>>>> +
>>>> +                    it6263_out: endpoint {
>>>> +                        remote-endpoint = <&hdmi_in>;
>>>> +                    };
>>>> +                };
>>>> +            };
>>>> +        };
>>>> +    };
>>>> +
>>>> +  - |
>>>> +    /* dual-link LVDS input */
>>>> +    #include <dt-bindings/gpio/gpio.h>
>>>> +
>>>> +    i2c {
>>>> +        #address-cells = <1>;
>>>> +        #size-cells = <0>;
>>>> +
>>>> +        hdmi@4c {
>>>> +            compatible = "ite,it6263";
>>>> +            reg = <0x4c>;
>>>> +            reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
>>>> +            ivdd-supply = <&reg_buck5>;
>>>> +            ovdd-supply = <&reg_vext_3v3>;
>>>> +            txavcc18-supply = <&reg_buck5>;
>>>> +            txavcc33-supply = <&reg_vext_3v3>;
>>>> +            pvcc1-supply = <&reg_buck5>;
>>>> +            pvcc2-supply = <&reg_buck5>;
>>>> +            avcc-supply = <&reg_vext_3v3>;
>>>> +            anvdd-supply = <&reg_buck5>;
>>>> +            apvdd-supply = <&reg_buck5>;
>>>> +
>>>> +            ports {
>>>> +                #address-cells = <1>;
>>>> +                #size-cells = <0>;
>>>> +
>>>> +                port@0 {
>>>> +                    reg = <0>;
>>>> +                    dual-lvds-odd-pixels;
>>>> +
>>>> +                    it6263_lvds_link1_dual: endpoint {
>>>> +                        remote-endpoint = <&ldb_lvds_ch0>;
>>>> +                    };
>>>> +                };
>>>> +
>>>> +                port@1 {
>>>> +                    reg = <1>;
>>>> +                    dual-lvds-even-pixels;
>>>> +
>>>> +                    it6263_lvds_link2_dual: endpoint {
>>>> +                        remote-endpoint = <&ldb_lvds_ch1>;
>>>> +                    };
>>>> +                };
>>>> +
>>>> +                port@2 {
>>>> +                    reg = <2>;
>>>> +
>>>> +                    it6263_out_dual: endpoint {
>>>> +                        remote-endpoint = <&hdmi_in>;
>>>> +                    };
>>>> +                };
>>>> +            };
>>>> +        };
>>>> +    };
>>>> --
>>>> 2.34.1
>>>>
>>>
>>
>> --
>> Regards,
>> Liu Ying
>
Biju Das Sept. 30, 2024, 9:38 a.m. UTC | #5
Hi Liu,

> -----Original Message-----
> From: Liu Ying <victor.liu@nxp.com>
> Sent: Monday, September 30, 2024 10:30 AM
> Subject: Re: [PATCH 5/8] dt-bindings: display: bridge: Add ITE IT6263 LVDS to HDMI converter
> 
> On 09/30/2024, Biju Das wrote:
> > Hi Liu,
> 
> Hi Biju,
> 
> >
> >> -----Original Message-----
> >> From: Liu Ying <victor.liu@nxp.com>
> >> Sent: Monday, September 30, 2024 10:16 AM
> >> Subject: Re: [PATCH 5/8] dt-bindings: display: bridge: Add ITE IT6263
> >> LVDS to HDMI converter
> >>
> >> On 09/30/2024, Biju Das wrote:
> >>> Hi Liu,
> >>
> >> Hi Biju,
> >>
> >>>
> >>> thanks for the patch.
> >>>
> >>>> -----Original Message-----
> >>>> From: linux-arm-kernel
> >>>> <linux-arm-kernel-bounces@lists.infradead.org>
> >>>> On Behalf Of Liu Ying
> >>>> Sent: Monday, September 30, 2024 6:29 AM
> >>>> Subject: [PATCH 5/8] dt-bindings: display: bridge: Add ITE IT6263
> >>>> LVDS to HDMI converter
> >>>>
> >>>> 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@nxp.com>
> >>>> ---
> >>>>  .../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.y
> >>>> +++ am
> >>>> +++ l
> >>>> @@ -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@nxp.com>
> >>>> +
> >>>> +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
> >>>> +
> >>>> +    oneOf:
> >>>> +      - 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
> >>>
> >>> What about single lvds as device support it?
> >>
> >> The single LVDS link has already been documented in this binding doc.
> >> Please find the "properties" above where only "port@0" and "port@2"
> >> are required.
> >
> > Maybe "the first LVDS input link"-->"Single LVDS input link" for single LVDS block??
> 
> Nope.
> 
> I tested single LVDS link with the second LVDS link.  It didn't work.
> The single LVDS link only works with the first LVDS link.

OK. That is the reason you made port@1 false.

Still port@0 is a single LVDS instance or first LVDS input link for the dual
LVDS configuration??

Cheers,
Biju


> 
> >
> >>
> >> imx8mp-evk-lvds0-imx-lvds-hdmi.dtso and
> >> imx8mp-evk-lvds1-imx-lvds-hdmi.dtso
> >> added in patch 7 support the NXP adapter card with single LVDS link.
> >>
> >>>
> >>> Cheers,
> >>> Biju
> >>>
> >>>> +
> >>>> +        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
> >>>> +
> >>>> +examples:
> >>>> +  - |
> >>>> +    /* single-link LVDS input */
> >>>> +    #include <dt-bindings/gpio/gpio.h>
> >>>> +
> >>>> +    i2c {
> >>>> +        #address-cells = <1>;
> >>>> +        #size-cells = <0>;
> >>>> +
> >>>> +        hdmi@4c {
> >>>> +            compatible = "ite,it6263";
> >>>> +            reg = <0x4c>;
> >>>> +            reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
> >>>> +            ivdd-supply = <&reg_buck5>;
> >>>> +            ovdd-supply = <&reg_vext_3v3>;
> >>>> +            txavcc18-supply = <&reg_buck5>;
> >>>> +            txavcc33-supply = <&reg_vext_3v3>;
> >>>> +            pvcc1-supply = <&reg_buck5>;
> >>>> +            pvcc2-supply = <&reg_buck5>;
> >>>> +            avcc-supply = <&reg_vext_3v3>;
> >>>> +            anvdd-supply = <&reg_buck5>;
> >>>> +            apvdd-supply = <&reg_buck5>;
> >>>> +
> >>>> +            ports {
> >>>> +                #address-cells = <1>;
> >>>> +                #size-cells = <0>;
> >>>> +
> >>>> +                port@0 {
> >>>> +                    reg = <0>;
> >>>> +
> >>>> +                    it6263_lvds_link1: endpoint {
> >>>> +                        remote-endpoint = <&ldb_lvds_ch0>;
> >>>> +                    };
> >>>> +                };
> >>>> +
> >>>> +                port@2 {
> >>>> +                    reg = <2>;
> >>>> +
> >>>> +                    it6263_out: endpoint {
> >>>> +                        remote-endpoint = <&hdmi_in>;
> >>>> +                    };
> >>>> +                };
> >>>> +            };
> >>>> +        };
> >>>> +    };
> >>>> +
> >>>> +  - |
> >>>> +    /* dual-link LVDS input */
> >>>> +    #include <dt-bindings/gpio/gpio.h>
> >>>> +
> >>>> +    i2c {
> >>>> +        #address-cells = <1>;
> >>>> +        #size-cells = <0>;
> >>>> +
> >>>> +        hdmi@4c {
> >>>> +            compatible = "ite,it6263";
> >>>> +            reg = <0x4c>;
> >>>> +            reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
> >>>> +            ivdd-supply = <&reg_buck5>;
> >>>> +            ovdd-supply = <&reg_vext_3v3>;
> >>>> +            txavcc18-supply = <&reg_buck5>;
> >>>> +            txavcc33-supply = <&reg_vext_3v3>;
> >>>> +            pvcc1-supply = <&reg_buck5>;
> >>>> +            pvcc2-supply = <&reg_buck5>;
> >>>> +            avcc-supply = <&reg_vext_3v3>;
> >>>> +            anvdd-supply = <&reg_buck5>;
> >>>> +            apvdd-supply = <&reg_buck5>;
> >>>> +
> >>>> +            ports {
> >>>> +                #address-cells = <1>;
> >>>> +                #size-cells = <0>;
> >>>> +
> >>>> +                port@0 {
> >>>> +                    reg = <0>;
> >>>> +                    dual-lvds-odd-pixels;
> >>>> +
> >>>> +                    it6263_lvds_link1_dual: endpoint {
> >>>> +                        remote-endpoint = <&ldb_lvds_ch0>;
> >>>> +                    };
> >>>> +                };
> >>>> +
> >>>> +                port@1 {
> >>>> +                    reg = <1>;
> >>>> +                    dual-lvds-even-pixels;
> >>>> +
> >>>> +                    it6263_lvds_link2_dual: endpoint {
> >>>> +                        remote-endpoint = <&ldb_lvds_ch1>;
> >>>> +                    };
> >>>> +                };
> >>>> +
> >>>> +                port@2 {
> >>>> +                    reg = <2>;
> >>>> +
> >>>> +                    it6263_out_dual: endpoint {
> >>>> +                        remote-endpoint = <&hdmi_in>;
> >>>> +                    };
> >>>> +                };
> >>>> +            };
> >>>> +        };
> >>>> +    };
> >>>> --
> >>>> 2.34.1
> >>>>
> >>>
> >>
> >> --
> >> Regards,
> >> Liu Ying
> >
> 
> --
> Regards,
> Liu Ying
Liu Ying Sept. 30, 2024, 9:48 a.m. UTC | #6
On 09/30/2024, Biju Das wrote:
> Hi Liu,

Hi Biju,

> 
>> -----Original Message-----
>> From: Liu Ying <victor.liu@nxp.com>
>> Sent: Monday, September 30, 2024 10:30 AM
>> Subject: Re: [PATCH 5/8] dt-bindings: display: bridge: Add ITE IT6263 LVDS to HDMI converter
>>
>> On 09/30/2024, Biju Das wrote:
>>> Hi Liu,
>>
>> Hi Biju,
>>
>>>
>>>> -----Original Message-----
>>>> From: Liu Ying <victor.liu@nxp.com>
>>>> Sent: Monday, September 30, 2024 10:16 AM
>>>> Subject: Re: [PATCH 5/8] dt-bindings: display: bridge: Add ITE IT6263
>>>> LVDS to HDMI converter
>>>>
>>>> On 09/30/2024, Biju Das wrote:
>>>>> Hi Liu,
>>>>
>>>> Hi Biju,
>>>>
>>>>>
>>>>> thanks for the patch.
>>>>>
>>>>>> -----Original Message-----
>>>>>> From: linux-arm-kernel
>>>>>> <linux-arm-kernel-bounces@lists.infradead.org>
>>>>>> On Behalf Of Liu Ying
>>>>>> Sent: Monday, September 30, 2024 6:29 AM
>>>>>> Subject: [PATCH 5/8] dt-bindings: display: bridge: Add ITE IT6263
>>>>>> LVDS to HDMI converter
>>>>>>
>>>>>> 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@nxp.com>
>>>>>> ---
>>>>>>  .../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.y
>>>>>> +++ am
>>>>>> +++ l
>>>>>> @@ -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@nxp.com>
>>>>>> +
>>>>>> +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
>>>>>> +
>>>>>> +    oneOf:
>>>>>> +      - 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
>>>>>
>>>>> What about single lvds as device support it?
>>>>
>>>> The single LVDS link has already been documented in this binding doc.
>>>> Please find the "properties" above where only "port@0" and "port@2"
>>>> are required.
>>>
>>> Maybe "the first LVDS input link"-->"Single LVDS input link" for single LVDS block??
>>
>> Nope.
>>
>> I tested single LVDS link with the second LVDS link.  It didn't work.
>> The single LVDS link only works with the first LVDS link.
> 
> OK. That is the reason you made port@1 false.

Yes.

> 
> Still port@0 is a single LVDS instance or first LVDS input link for the dual
> LVDS configuration??

"port@0" always represents the first LVDS link and "port@1" always
represents the second LVDS link, no matter it's a single-link LVDS
or a dual-link LVDS.

Which one is the first/second LVDS link?  See "LVDS front-end
interface pin" in IT6263 data sheet[1] where first/second are
defined.

[1] http://static6.arrow.com/aropdfconversion/a2ecd2a29274cf0bfb3f3c829ef224c5838fe144/it6263fn.pdf

> 
> Cheers,
> Biju
> 
> 
>>
>>>
>>>>
>>>> imx8mp-evk-lvds0-imx-lvds-hdmi.dtso and
>>>> imx8mp-evk-lvds1-imx-lvds-hdmi.dtso
>>>> added in patch 7 support the NXP adapter card with single LVDS link.
>>>>
>>>>>
>>>>> Cheers,
>>>>> Biju
>>>>>
>>>>>> +
>>>>>> +        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
>>>>>> +
>>>>>> +examples:
>>>>>> +  - |
>>>>>> +    /* single-link LVDS input */
>>>>>> +    #include <dt-bindings/gpio/gpio.h>
>>>>>> +
>>>>>> +    i2c {
>>>>>> +        #address-cells = <1>;
>>>>>> +        #size-cells = <0>;
>>>>>> +
>>>>>> +        hdmi@4c {
>>>>>> +            compatible = "ite,it6263";
>>>>>> +            reg = <0x4c>;
>>>>>> +            reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
>>>>>> +            ivdd-supply = <&reg_buck5>;
>>>>>> +            ovdd-supply = <&reg_vext_3v3>;
>>>>>> +            txavcc18-supply = <&reg_buck5>;
>>>>>> +            txavcc33-supply = <&reg_vext_3v3>;
>>>>>> +            pvcc1-supply = <&reg_buck5>;
>>>>>> +            pvcc2-supply = <&reg_buck5>;
>>>>>> +            avcc-supply = <&reg_vext_3v3>;
>>>>>> +            anvdd-supply = <&reg_buck5>;
>>>>>> +            apvdd-supply = <&reg_buck5>;
>>>>>> +
>>>>>> +            ports {
>>>>>> +                #address-cells = <1>;
>>>>>> +                #size-cells = <0>;
>>>>>> +
>>>>>> +                port@0 {
>>>>>> +                    reg = <0>;
>>>>>> +
>>>>>> +                    it6263_lvds_link1: endpoint {
>>>>>> +                        remote-endpoint = <&ldb_lvds_ch0>;
>>>>>> +                    };
>>>>>> +                };
>>>>>> +
>>>>>> +                port@2 {
>>>>>> +                    reg = <2>;
>>>>>> +
>>>>>> +                    it6263_out: endpoint {
>>>>>> +                        remote-endpoint = <&hdmi_in>;
>>>>>> +                    };
>>>>>> +                };
>>>>>> +            };
>>>>>> +        };
>>>>>> +    };
>>>>>> +
>>>>>> +  - |
>>>>>> +    /* dual-link LVDS input */
>>>>>> +    #include <dt-bindings/gpio/gpio.h>
>>>>>> +
>>>>>> +    i2c {
>>>>>> +        #address-cells = <1>;
>>>>>> +        #size-cells = <0>;
>>>>>> +
>>>>>> +        hdmi@4c {
>>>>>> +            compatible = "ite,it6263";
>>>>>> +            reg = <0x4c>;
>>>>>> +            reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
>>>>>> +            ivdd-supply = <&reg_buck5>;
>>>>>> +            ovdd-supply = <&reg_vext_3v3>;
>>>>>> +            txavcc18-supply = <&reg_buck5>;
>>>>>> +            txavcc33-supply = <&reg_vext_3v3>;
>>>>>> +            pvcc1-supply = <&reg_buck5>;
>>>>>> +            pvcc2-supply = <&reg_buck5>;
>>>>>> +            avcc-supply = <&reg_vext_3v3>;
>>>>>> +            anvdd-supply = <&reg_buck5>;
>>>>>> +            apvdd-supply = <&reg_buck5>;
>>>>>> +
>>>>>> +            ports {
>>>>>> +                #address-cells = <1>;
>>>>>> +                #size-cells = <0>;
>>>>>> +
>>>>>> +                port@0 {
>>>>>> +                    reg = <0>;
>>>>>> +                    dual-lvds-odd-pixels;
>>>>>> +
>>>>>> +                    it6263_lvds_link1_dual: endpoint {
>>>>>> +                        remote-endpoint = <&ldb_lvds_ch0>;
>>>>>> +                    };
>>>>>> +                };
>>>>>> +
>>>>>> +                port@1 {
>>>>>> +                    reg = <1>;
>>>>>> +                    dual-lvds-even-pixels;
>>>>>> +
>>>>>> +                    it6263_lvds_link2_dual: endpoint {
>>>>>> +                        remote-endpoint = <&ldb_lvds_ch1>;
>>>>>> +                    };
>>>>>> +                };
>>>>>> +
>>>>>> +                port@2 {
>>>>>> +                    reg = <2>;
>>>>>> +
>>>>>> +                    it6263_out_dual: endpoint {
>>>>>> +                        remote-endpoint = <&hdmi_in>;
>>>>>> +                    };
>>>>>> +                };
>>>>>> +            };
>>>>>> +        };
>>>>>> +    };
>>>>>> --
>>>>>> 2.34.1
>>>>>>
>>>>>
>>>>
>>>> --
>>>> Regards,
>>>> Liu Ying
>>>
>>
>> --
>> Regards,
>> Liu Ying
>
Biju Das Sept. 30, 2024, 9:53 a.m. UTC | #7
Hi Liu,

> -----Original Message-----
> From: Liu Ying <victor.liu@nxp.com>
> Sent: Monday, September 30, 2024 10:49 AM
> Subject: Re: [PATCH 5/8] dt-bindings: display: bridge: Add ITE IT6263 LVDS to HDMI converter
> 
> On 09/30/2024, Biju Das wrote:
> > Hi Liu,
> 
> Hi Biju,
> 
> >
> >> -----Original Message-----
> >> From: Liu Ying <victor.liu@nxp.com>
> >> Sent: Monday, September 30, 2024 10:30 AM
> >> Subject: Re: [PATCH 5/8] dt-bindings: display: bridge: Add ITE IT6263
> >> LVDS to HDMI converter
> >>
> >> On 09/30/2024, Biju Das wrote:
> >>> Hi Liu,
> >>
> >> Hi Biju,
> >>
> >>>
> >>>> -----Original Message-----
> >>>> From: Liu Ying <victor.liu@nxp.com>
> >>>> Sent: Monday, September 30, 2024 10:16 AM
> >>>> Subject: Re: [PATCH 5/8] dt-bindings: display: bridge: Add ITE
> >>>> IT6263 LVDS to HDMI converter
> >>>>
> >>>> On 09/30/2024, Biju Das wrote:
> >>>>> Hi Liu,
> >>>>
> >>>> Hi Biju,
> >>>>
> >>>>>
> >>>>> thanks for the patch.
> >>>>>
> >>>>>> -----Original Message-----
> >>>>>> From: linux-arm-kernel
> >>>>>> <linux-arm-kernel-bounces@lists.infradead.org>
> >>>>>> On Behalf Of Liu Ying
> >>>>>> Sent: Monday, September 30, 2024 6:29 AM
> >>>>>> Subject: [PATCH 5/8] dt-bindings: display: bridge: Add ITE IT6263
> >>>>>> LVDS to HDMI converter
> >>>>>>
> >>>>>> 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@nxp.com>
> >>>>>> ---
> >>>>>>  .../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.yam
> >>>>>> l
> >>>>>> b/Documentation/devicetree/bindings/display/bridge/ite,it6263.yam
> >>>>>> l
> >>>>>> new file mode 100644
> >>>>>> index 000000000000..97fb81e5bc4a
> >>>>>> --- /dev/null
> >>>>>> +++ b/Documentation/devicetree/bindings/display/bridge/ite,it6263
> >>>>>> +++ .y
> >>>>>> +++ am
> >>>>>> +++ l
> >>>>>> @@ -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@nxp.com>
> >>>>>> +
> >>>>>> +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
> >>>>>> +
> >>>>>> +    oneOf:
> >>>>>> +      - 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
> >>>>>
> >>>>> What about single lvds as device support it?
> >>>>
> >>>> The single LVDS link has already been documented in this binding doc.
> >>>> Please find the "properties" above where only "port@0" and "port@2"
> >>>> are required.
> >>>
> >>> Maybe "the first LVDS input link"-->"Single LVDS input link" for single LVDS block??
> >>
> >> Nope.
> >>
> >> I tested single LVDS link with the second LVDS link.  It didn't work.
> >> The single LVDS link only works with the first LVDS link.
> >
> > OK. That is the reason you made port@1 false.
> 
> Yes.
> 
> >
> > Still port@0 is a single LVDS instance or first LVDS input link for
> > the dual LVDS configuration??
> 
> "port@0" always represents the first LVDS link and "port@1" always represents the second LVDS link, no
> matter it's a single-link LVDS or a dual-link LVDS.
> 
> Which one is the first/second LVDS link?  See "LVDS front-end interface pin" in IT6263 data sheet[1]
> where first/second are defined.
> 
> [1] http://static6.arrow.com/aropdfconversion/a2ecd2a29274cf0bfb3f3c829ef224c5838fe144/it6263fn.pdf

I agree it matches with hw documentation.

Cheers,
Biju

> 
> >
> > Cheers,
> > Biju
> >
> >
> >>
> >>>
> >>>>
> >>>> imx8mp-evk-lvds0-imx-lvds-hdmi.dtso and
> >>>> imx8mp-evk-lvds1-imx-lvds-hdmi.dtso
> >>>> added in patch 7 support the NXP adapter card with single LVDS link.
> >>>>
> >>>>>
> >>>>> Cheers,
> >>>>> Biju
> >>>>>
> >>>>>> +
> >>>>>> +        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
> >>>>>> +
> >>>>>> +examples:
> >>>>>> +  - |
> >>>>>> +    /* single-link LVDS input */
> >>>>>> +    #include <dt-bindings/gpio/gpio.h>
> >>>>>> +
> >>>>>> +    i2c {
> >>>>>> +        #address-cells = <1>;
> >>>>>> +        #size-cells = <0>;
> >>>>>> +
> >>>>>> +        hdmi@4c {
> >>>>>> +            compatible = "ite,it6263";
> >>>>>> +            reg = <0x4c>;
> >>>>>> +            reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
> >>>>>> +            ivdd-supply = <&reg_buck5>;
> >>>>>> +            ovdd-supply = <&reg_vext_3v3>;
> >>>>>> +            txavcc18-supply = <&reg_buck5>;
> >>>>>> +            txavcc33-supply = <&reg_vext_3v3>;
> >>>>>> +            pvcc1-supply = <&reg_buck5>;
> >>>>>> +            pvcc2-supply = <&reg_buck5>;
> >>>>>> +            avcc-supply = <&reg_vext_3v3>;
> >>>>>> +            anvdd-supply = <&reg_buck5>;
> >>>>>> +            apvdd-supply = <&reg_buck5>;
> >>>>>> +
> >>>>>> +            ports {
> >>>>>> +                #address-cells = <1>;
> >>>>>> +                #size-cells = <0>;
> >>>>>> +
> >>>>>> +                port@0 {
> >>>>>> +                    reg = <0>;
> >>>>>> +
> >>>>>> +                    it6263_lvds_link1: endpoint {
> >>>>>> +                        remote-endpoint = <&ldb_lvds_ch0>;
> >>>>>> +                    };
> >>>>>> +                };
> >>>>>> +
> >>>>>> +                port@2 {
> >>>>>> +                    reg = <2>;
> >>>>>> +
> >>>>>> +                    it6263_out: endpoint {
> >>>>>> +                        remote-endpoint = <&hdmi_in>;
> >>>>>> +                    };
> >>>>>> +                };
> >>>>>> +            };
> >>>>>> +        };
> >>>>>> +    };
> >>>>>> +
> >>>>>> +  - |
> >>>>>> +    /* dual-link LVDS input */
> >>>>>> +    #include <dt-bindings/gpio/gpio.h>
> >>>>>> +
> >>>>>> +    i2c {
> >>>>>> +        #address-cells = <1>;
> >>>>>> +        #size-cells = <0>;
> >>>>>> +
> >>>>>> +        hdmi@4c {
> >>>>>> +            compatible = "ite,it6263";
> >>>>>> +            reg = <0x4c>;
> >>>>>> +            reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
> >>>>>> +            ivdd-supply = <&reg_buck5>;
> >>>>>> +            ovdd-supply = <&reg_vext_3v3>;
> >>>>>> +            txavcc18-supply = <&reg_buck5>;
> >>>>>> +            txavcc33-supply = <&reg_vext_3v3>;
> >>>>>> +            pvcc1-supply = <&reg_buck5>;
> >>>>>> +            pvcc2-supply = <&reg_buck5>;
> >>>>>> +            avcc-supply = <&reg_vext_3v3>;
> >>>>>> +            anvdd-supply = <&reg_buck5>;
> >>>>>> +            apvdd-supply = <&reg_buck5>;
> >>>>>> +
> >>>>>> +            ports {
> >>>>>> +                #address-cells = <1>;
> >>>>>> +                #size-cells = <0>;
> >>>>>> +
> >>>>>> +                port@0 {
> >>>>>> +                    reg = <0>;
> >>>>>> +                    dual-lvds-odd-pixels;
> >>>>>> +
> >>>>>> +                    it6263_lvds_link1_dual: endpoint {
> >>>>>> +                        remote-endpoint = <&ldb_lvds_ch0>;
> >>>>>> +                    };
> >>>>>> +                };
> >>>>>> +
> >>>>>> +                port@1 {
> >>>>>> +                    reg = <1>;
> >>>>>> +                    dual-lvds-even-pixels;
> >>>>>> +
> >>>>>> +                    it6263_lvds_link2_dual: endpoint {
> >>>>>> +                        remote-endpoint = <&ldb_lvds_ch1>;
> >>>>>> +                    };
> >>>>>> +                };
> >>>>>> +
> >>>>>> +                port@2 {
> >>>>>> +                    reg = <2>;
> >>>>>> +
> >>>>>> +                    it6263_out_dual: endpoint {
> >>>>>> +                        remote-endpoint = <&hdmi_in>;
> >>>>>> +                    };
> >>>>>> +                };
> >>>>>> +            };
> >>>>>> +        };
> >>>>>> +    };
> >>>>>> --
> >>>>>> 2.34.1
> >>>>>>
> >>>>>
> >>>>
> >>>> --
> >>>> Regards,
> >>>> Liu Ying
> >>>
> >>
> >> --
> >> Regards,
> >> Liu Ying
> >
> 
> --
> Regards,
> Liu Ying
Biju Das Sept. 30, 2024, 1:18 p.m. UTC | #8
Hi Liu,

> -----Original Message-----
> From: Biju Das
> Sent: Monday, September 30, 2024 10:04 AM
> Subject: RE: [PATCH 5/8] dt-bindings: display: bridge: Add ITE IT6263 LVDS to HDMI converter
> 
> Hi Liu,
> 
> thanks for the patch.
> 
> > -----Original Message-----
> > From: linux-arm-kernel <linux-arm-kernel-bounces@lists.infradead.org>
> > On Behalf Of Liu Ying
> > Sent: Monday, September 30, 2024 6:29 AM
> > Subject: [PATCH 5/8] dt-bindings: display: bridge: Add ITE IT6263 LVDS
> > to HDMI converter
> >
> > 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@nxp.com>
> > ---
> >  .../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@nxp.com>
> > +
> > +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
> > +
> > +    oneOf:
> > +      - 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
> 
> What about single lvds as device support it?
> 
> Cheers,
> Biju
> 
> > +
> > +        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

Do we need to document ite,data-mapping to support both VESA and JEIDA formats??

Or

Is there any run time info available to get this info? Currently,
I see it is hardcoded in driver.

Cheers,
Biju

> > +
> > +required:
> > +  - compatible
> > +  - reg
> > +  - ivdd-supply
> > +  - ovdd-supply
> > +  - txavcc18-supply
> > +  - txavcc33-supply
> > +  - pvcc1-supply
> > +  - pvcc2-supply
> > +  - avcc-supply
> > +  - anvdd-supply
> > +  - apvdd-supply
> > +  - ports
> > +
> > +additionalProperties: false
> > +
> > +examples:
> > +  - |
> > +    /* single-link LVDS input */
> > +    #include <dt-bindings/gpio/gpio.h>
> > +
> > +    i2c {
> > +        #address-cells = <1>;
> > +        #size-cells = <0>;
> > +
> > +        hdmi@4c {
> > +            compatible = "ite,it6263";
> > +            reg = <0x4c>;
> > +            reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
> > +            ivdd-supply = <&reg_buck5>;
> > +            ovdd-supply = <&reg_vext_3v3>;
> > +            txavcc18-supply = <&reg_buck5>;
> > +            txavcc33-supply = <&reg_vext_3v3>;
> > +            pvcc1-supply = <&reg_buck5>;
> > +            pvcc2-supply = <&reg_buck5>;
> > +            avcc-supply = <&reg_vext_3v3>;
> > +            anvdd-supply = <&reg_buck5>;
> > +            apvdd-supply = <&reg_buck5>;
> > +
> > +            ports {
> > +                #address-cells = <1>;
> > +                #size-cells = <0>;
> > +
> > +                port@0 {
> > +                    reg = <0>;
> > +
> > +                    it6263_lvds_link1: endpoint {
> > +                        remote-endpoint = <&ldb_lvds_ch0>;
> > +                    };
> > +                };
> > +
> > +                port@2 {
> > +                    reg = <2>;
> > +
> > +                    it6263_out: endpoint {
> > +                        remote-endpoint = <&hdmi_in>;
> > +                    };
> > +                };
> > +            };
> > +        };
> > +    };
> > +
> > +  - |
> > +    /* dual-link LVDS input */
> > +    #include <dt-bindings/gpio/gpio.h>
> > +
> > +    i2c {
> > +        #address-cells = <1>;
> > +        #size-cells = <0>;
> > +
> > +        hdmi@4c {
> > +            compatible = "ite,it6263";
> > +            reg = <0x4c>;
> > +            reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
> > +            ivdd-supply = <&reg_buck5>;
> > +            ovdd-supply = <&reg_vext_3v3>;
> > +            txavcc18-supply = <&reg_buck5>;
> > +            txavcc33-supply = <&reg_vext_3v3>;
> > +            pvcc1-supply = <&reg_buck5>;
> > +            pvcc2-supply = <&reg_buck5>;
> > +            avcc-supply = <&reg_vext_3v3>;
> > +            anvdd-supply = <&reg_buck5>;
> > +            apvdd-supply = <&reg_buck5>;
> > +
> > +            ports {
> > +                #address-cells = <1>;
> > +                #size-cells = <0>;
> > +
> > +                port@0 {
> > +                    reg = <0>;
> > +                    dual-lvds-odd-pixels;
> > +
> > +                    it6263_lvds_link1_dual: endpoint {
> > +                        remote-endpoint = <&ldb_lvds_ch0>;
> > +                    };
> > +                };
> > +
> > +                port@1 {
> > +                    reg = <1>;
> > +                    dual-lvds-even-pixels;
> > +
> > +                    it6263_lvds_link2_dual: endpoint {
> > +                        remote-endpoint = <&ldb_lvds_ch1>;
> > +                    };
> > +                };
> > +
> > +                port@2 {
> > +                    reg = <2>;
> > +
> > +                    it6263_out_dual: endpoint {
> > +                        remote-endpoint = <&hdmi_in>;
> > +                    };
> > +                };
> > +            };
> > +        };
> > +    };
> > --
> > 2.34.1
> >
Rob Herring (Arm) Oct. 2, 2024, 12:02 a.m. UTC | #9
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@nxp.com>
> ---
>  .../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@nxp.com>
> +
> +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
> +
Liu Ying Oct. 9, 2024, 7 a.m. UTC | #10
Hi Rob,

On 10/02/2024, Rob Herring wrote:
> 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@nxp.com>
>> ---
>>  .../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@nxp.com>
>> +
>> +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.

Ah, I see the same warnings with your bot after upgrading my local dtschema
to dtschema-2024.9. I should have upgraded it earlier, sorry. Before sending
this patch, I tested it with dtschema-2024.2 and there is no warning.

However, there are still the warnings after adding additionalProperties or 
unevaluatedProperties constraint here. With additionalProperties, there are
even some additional errors.  Thoughts?

> 
>> +
>> +    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. 

If I get rid of this with the below snippet, I see warnings against
the single-link LVDS input example. It looks like the conditions in
"allOf" are still true even if "port@1" is not in that example.

And it seems difficult to disallow people to add "dual-lvds-odd-pixels"
and/or "dual-lvds-even-pixels" properties to "port@0" when there is no
"port@1". This is not an issue if we use the "oneOf" to separate the
single/dual link cases. Any ideas?

-----------------------------8<-----------------------------
  ports:                                                                         
    $ref: /schemas/graph.yaml#/properties/ports                                  
                                                                                 
    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                     
                                                                                 
      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@2

    allOf:                                                                       
      - if:                                                                      
          properties:                                                            
            port@1:                                                              
              required:                                                          
                - dual-lvds-odd-pixels                                           
        then:                                                                    
          properties:                                                            
            port@0:                                                              
              required:                                                          
                - dual-lvds-even-pixels                                          
                                                                                 
      - if:                                                                      
          properties:                                                            
            port@1:                                                              
              required:                                                          
                - dual-lvds-even-pixels                                          
        then:                                                                    
          properties:                                                            
            port@0:                                                              
              required:                                                          
                - dual-lvds-odd-pixels                        
-----------------------------8<-----------------------------

Documentation/devicetree/bindings/display/bridge/ite,it6263.example.dtb: hdmi@4c: ports:port@0: 'dual-lvds-even-pixels' is a required property
	from schema $id: http://devicetree.org/schemas/display/bridge/ite,it6263.yaml#
Documentation/devicetree/bindings/display/bridge/ite,it6263.example.dtb: hdmi@4c: ports:port@0: 'dual-lvds-odd-pixels' is a required property
	from schema $id: http://devicetree.org/schemas/display/bridge/ite,it6263.yaml#

> 
>> +      - 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
>> +
Liu Ying Oct. 9, 2024, 7:51 a.m. UTC | #11
On 09/30/2024, Biju Das wrote:
> Hi Liu,

Hi Biju,

> 
>> -----Original Message-----
>> From: Biju Das
>> Sent: Monday, September 30, 2024 10:04 AM
>> Subject: RE: [PATCH 5/8] dt-bindings: display: bridge: Add ITE IT6263 LVDS to HDMI converter
>>
>> Hi Liu,
>>
>> thanks for the patch.
>>
>>> -----Original Message-----
>>> From: linux-arm-kernel <linux-arm-kernel-bounces@lists.infradead.org>
>>> On Behalf Of Liu Ying
>>> Sent: Monday, September 30, 2024 6:29 AM
>>> Subject: [PATCH 5/8] dt-bindings: display: bridge: Add ITE IT6263 LVDS
>>> to HDMI converter
>>>
>>> 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@nxp.com>
>>> ---
>>>  .../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@nxp.com>
>>> +
>>> +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
>>> +
>>> +    oneOf:
>>> +      - 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
>>
>> What about single lvds as device support it?
>>
>> Cheers,
>> Biju
>>
>>> +
>>> +        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
> 
> Do we need to document ite,data-mapping to support both VESA and JEIDA formats??
> 
> Or
> 
> Is there any run time info available to get this info? Currently,
> I see it is hardcoded in driver.

I think there are two options:
1) Reference the data-mapping property in lvds-data-mapping.yaml
   Question is that only jeida-18, jeida-24 and vesa-24 are
   enumerated, while IT6263 supports something like jeida-30 and
   vesa-30(not sure if they are standarized or not) with 5 data
   lanes(A-E) per LVDS link as the LVDS mapping table in IT6263
   datasheet mentions.

2) Document the number of data lanes per LVDS link
   This is enough. data-mapping is kind of too much information
   from DT point of view. Linux display bridge drivers support
   runtime bus format negotiation to determine the data mapping.
   So maybe a property like this is ok:

   ite,lvds-link-num-data-lanes:                                                  
    $ref: /schemas/types.yaml#/definitions/uint8                                 
    enum: [3, 4, 5]

   BTW, I only tested 4 data lanes. Not sure if the other 2 work
   or not.

Laurent, Rob, any thoughts?

> 
> Cheers,
> Biju
> 
>>> +
>>> +required:
>>> +  - compatible
>>> +  - reg
>>> +  - ivdd-supply
>>> +  - ovdd-supply
>>> +  - txavcc18-supply
>>> +  - txavcc33-supply
>>> +  - pvcc1-supply
>>> +  - pvcc2-supply
>>> +  - avcc-supply
>>> +  - anvdd-supply
>>> +  - apvdd-supply
>>> +  - ports
>>> +
>>> +additionalProperties: false
>>> +
>>> +examples:
>>> +  - |
>>> +    /* single-link LVDS input */
>>> +    #include <dt-bindings/gpio/gpio.h>
>>> +
>>> +    i2c {
>>> +        #address-cells = <1>;
>>> +        #size-cells = <0>;
>>> +
>>> +        hdmi@4c {
>>> +            compatible = "ite,it6263";
>>> +            reg = <0x4c>;
>>> +            reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
>>> +            ivdd-supply = <&reg_buck5>;
>>> +            ovdd-supply = <&reg_vext_3v3>;
>>> +            txavcc18-supply = <&reg_buck5>;
>>> +            txavcc33-supply = <&reg_vext_3v3>;
>>> +            pvcc1-supply = <&reg_buck5>;
>>> +            pvcc2-supply = <&reg_buck5>;
>>> +            avcc-supply = <&reg_vext_3v3>;
>>> +            anvdd-supply = <&reg_buck5>;
>>> +            apvdd-supply = <&reg_buck5>;
>>> +
>>> +            ports {
>>> +                #address-cells = <1>;
>>> +                #size-cells = <0>;
>>> +
>>> +                port@0 {
>>> +                    reg = <0>;
>>> +
>>> +                    it6263_lvds_link1: endpoint {
>>> +                        remote-endpoint = <&ldb_lvds_ch0>;
>>> +                    };
>>> +                };
>>> +
>>> +                port@2 {
>>> +                    reg = <2>;
>>> +
>>> +                    it6263_out: endpoint {
>>> +                        remote-endpoint = <&hdmi_in>;
>>> +                    };
>>> +                };
>>> +            };
>>> +        };
>>> +    };
>>> +
>>> +  - |
>>> +    /* dual-link LVDS input */
>>> +    #include <dt-bindings/gpio/gpio.h>
>>> +
>>> +    i2c {
>>> +        #address-cells = <1>;
>>> +        #size-cells = <0>;
>>> +
>>> +        hdmi@4c {
>>> +            compatible = "ite,it6263";
>>> +            reg = <0x4c>;
>>> +            reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
>>> +            ivdd-supply = <&reg_buck5>;
>>> +            ovdd-supply = <&reg_vext_3v3>;
>>> +            txavcc18-supply = <&reg_buck5>;
>>> +            txavcc33-supply = <&reg_vext_3v3>;
>>> +            pvcc1-supply = <&reg_buck5>;
>>> +            pvcc2-supply = <&reg_buck5>;
>>> +            avcc-supply = <&reg_vext_3v3>;
>>> +            anvdd-supply = <&reg_buck5>;
>>> +            apvdd-supply = <&reg_buck5>;
>>> +
>>> +            ports {
>>> +                #address-cells = <1>;
>>> +                #size-cells = <0>;
>>> +
>>> +                port@0 {
>>> +                    reg = <0>;
>>> +                    dual-lvds-odd-pixels;
>>> +
>>> +                    it6263_lvds_link1_dual: endpoint {
>>> +                        remote-endpoint = <&ldb_lvds_ch0>;
>>> +                    };
>>> +                };
>>> +
>>> +                port@1 {
>>> +                    reg = <1>;
>>> +                    dual-lvds-even-pixels;
>>> +
>>> +                    it6263_lvds_link2_dual: endpoint {
>>> +                        remote-endpoint = <&ldb_lvds_ch1>;
>>> +                    };
>>> +                };
>>> +
>>> +                port@2 {
>>> +                    reg = <2>;
>>> +
>>> +                    it6263_out_dual: endpoint {
>>> +                        remote-endpoint = <&hdmi_in>;
>>> +                    };
>>> +                };
>>> +            };
>>> +        };
>>> +    };
>>> --
>>> 2.34.1
>>>
>
diff mbox series

Patch

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@nxp.com>
+
+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
+
+    oneOf:
+      - 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
+
+examples:
+  - |
+    /* single-link LVDS input */
+    #include <dt-bindings/gpio/gpio.h>
+
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        hdmi@4c {
+            compatible = "ite,it6263";
+            reg = <0x4c>;
+            reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
+            ivdd-supply = <&reg_buck5>;
+            ovdd-supply = <&reg_vext_3v3>;
+            txavcc18-supply = <&reg_buck5>;
+            txavcc33-supply = <&reg_vext_3v3>;
+            pvcc1-supply = <&reg_buck5>;
+            pvcc2-supply = <&reg_buck5>;
+            avcc-supply = <&reg_vext_3v3>;
+            anvdd-supply = <&reg_buck5>;
+            apvdd-supply = <&reg_buck5>;
+
+            ports {
+                #address-cells = <1>;
+                #size-cells = <0>;
+
+                port@0 {
+                    reg = <0>;
+
+                    it6263_lvds_link1: endpoint {
+                        remote-endpoint = <&ldb_lvds_ch0>;
+                    };
+                };
+
+                port@2 {
+                    reg = <2>;
+
+                    it6263_out: endpoint {
+                        remote-endpoint = <&hdmi_in>;
+                    };
+                };
+            };
+        };
+    };
+
+  - |
+    /* dual-link LVDS input */
+    #include <dt-bindings/gpio/gpio.h>
+
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        hdmi@4c {
+            compatible = "ite,it6263";
+            reg = <0x4c>;
+            reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
+            ivdd-supply = <&reg_buck5>;
+            ovdd-supply = <&reg_vext_3v3>;
+            txavcc18-supply = <&reg_buck5>;
+            txavcc33-supply = <&reg_vext_3v3>;
+            pvcc1-supply = <&reg_buck5>;
+            pvcc2-supply = <&reg_buck5>;
+            avcc-supply = <&reg_vext_3v3>;
+            anvdd-supply = <&reg_buck5>;
+            apvdd-supply = <&reg_buck5>;
+
+            ports {
+                #address-cells = <1>;
+                #size-cells = <0>;
+
+                port@0 {
+                    reg = <0>;
+                    dual-lvds-odd-pixels;
+
+                    it6263_lvds_link1_dual: endpoint {
+                        remote-endpoint = <&ldb_lvds_ch0>;
+                    };
+                };
+
+                port@1 {
+                    reg = <1>;
+                    dual-lvds-even-pixels;
+
+                    it6263_lvds_link2_dual: endpoint {
+                        remote-endpoint = <&ldb_lvds_ch1>;
+                    };
+                };
+
+                port@2 {
+                    reg = <2>;
+
+                    it6263_out_dual: endpoint {
+                        remote-endpoint = <&hdmi_in>;
+                    };
+                };
+            };
+        };
+    };