# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/i2c/techwell,tw9900.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Techwell TW9900 NTSC/PAL video decoder

maintainers:
  - Mehdi Djait <mehdi.djait@bootlin.com>

description:
  The tw9900 is a multi-standard video decoder, supporting NTSC, PAL standards
  with auto-detection features.

properties:
  compatible:
    const: techwell,tw9900

  reg:
    maxItems: 1

  vdd-supply:
    description: VDD power supply

  reset-gpios:
    description: GPIO descriptor for the RESET input pin
    maxItems: 1

  powerdown-gpios:
    description: GPIO descriptor for the POWERDOWN input pin
    maxItems: 1

  ports:
    $ref: /schemas/graph.yaml#/properties/ports

    properties:
      port@0:
        $ref: /schemas/graph.yaml#/properties/port
        description: Analog input port

        properties:
          endpoint@0:
            $ref: /schemas/graph.yaml#/properties/endpoint
            description: CVBS over MUX0

          endpoint@1:
            $ref: /schemas/graph.yaml#/properties/endpoint
            description: CVBS over MUX1

          endpoint@2:
            $ref: /schemas/graph.yaml#/properties/endpoint
            description: Chroma over CIN0 and Y over MUX0

          endpoint@3:
            $ref: /schemas/graph.yaml#/properties/endpoint
            description: Chroma over CIN0 and Y over MUX1

        oneOf:
          - required:
              - endpoint@0
          - required:
              - endpoint@1
          - required:
              - endpoint@2
          - required:
              - endpoint@3

      port@1:
        $ref: /schemas/graph.yaml#/properties/port
        description: Video port for the decoder output.


    required:
      - port@0
      - port@1

required:
  - compatible
  - ports
  - reg
  - vdd-supply

additionalProperties: false

examples:
  - |
    #include <dt-bindings/display/sdtv-standards.h>
    #include <dt-bindings/gpio/gpio.h>

    composite_connector {
        compatible = "composite-video-connector";
        label = "tv";
        sdtv-standards = <(SDTV_STD_PAL | SDTV_STD_NTSC)>;

        port {
            composite_to_tw9900: endpoint {
                remote-endpoint = <&tw9900_to_composite>;
            };
        };
    };

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

        video-decoder@44 {
            compatible = "techwell,tw9900";
            reg = <0x44>;

            vdd-supply = <&tw9900_supply>;
            reset-gpios = <&gpio2 5 GPIO_ACTIVE_LOW>;

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

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

                    reg = <0>;
                    tw9900_to_composite: endpoint@0 {
                        reg = <0>;
                        remote-endpoint = <&composite_to_tw9900>;
                    };
                };

                port@1 {
                    reg = <1>;
                    endpoint {
                        remote-endpoint = <&cif_in>;
                    };
                };
            };
        };
    };
