# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/sprd/sprd,sharkl3-dsi-host.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Unisoc MIPI DSI Controller

maintainers:
  - Kevin Tang <kevin.tang@unisoc.com>

properties:
  compatible:
    const: sprd,sharkl3-dsi-host

  reg:
    maxItems: 1

  interrupts:
    maxItems: 2

  clocks:
    minItems: 1

  clock-names:
    items:
      - const: clk_src_96m

  power-domains:
    maxItems: 1

  ports:
    type: object

    properties:
      "#address-cells":
        const: 1

      "#size-cells":
        const: 0

      port@0:
        type: object
        description:
          A port node with endpoint definitions as defined in
          Documentation/devicetree/bindings/media/video-interfaces.txt.
          That port should be the input endpoint, usually coming from
          the associated DPU.

    required:
      - "#address-cells"
      - "#size-cells"
      - port@0

    additionalProperties: false

required:
  - compatible
  - reg
  - interrupts
  - clocks
  - clock-names
  - ports

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/clock/sprd,sc9860-clk.h>
    dsi: dsi@63100000 {
        compatible = "sprd,sharkl3-dsi-host";
        reg = <0x63100000 0x1000>;
        interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>,
          <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
        clock-names = "clk_src_96m";
        clocks = <&pll CLK_TWPLL_96M>;
        ports {
            #address-cells = <1>;
            #size-cells = <0>;
            port@0 {
                reg = <0>;
                dsi_in: endpoint {
                    remote-endpoint = <&dpu_out>;
                };
            };
        };
    };