# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)

%YAML 1.2
---
$id: "http://devicetree.org/schemas/media/qcom,sdm845-venus-v2.yaml#"
$schema: "http://devicetree.org/meta-schemas/core.yaml#"

title: Qualcomm Venus video encode and decode accelerators

maintainers:
  - Stanimir Varbanov <stanimir.varbanov@linaro.org>

description: |
  The Venus IP is a video encode and decode accelerator present
  on Qualcomm platforms

properties:
  compatible:
    const: qcom,sdm845-venus-v2

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  power-domains:
    minItems: 3
    maxItems: 4

  power-domain-names:
    minItems: 3
    maxItems: 4
    items:
      - const: venus
      - const: vcodec0
      - const: vcodec1
      - const: cx

  clocks:
    maxItems: 7

  clock-names:
    items:
      - const: core
      - const: iface
      - const: bus
      - const: vcodec0_core
      - const: vcodec0_bus
      - const: vcodec1_core
      - const: vcodec1_bus

  iommus:
    maxItems: 2

  memory-region:
    maxItems: 1

  video-core0:
    type: object

    properties:
      compatible:
        const: venus-decoder

    required:
      - compatible

    additionalProperties: false

  video-core1:
    type: object

    properties:
      compatible:
        const: venus-encoder

    required:
      - compatible

    additionalProperties: false

  video-firmware:
    type: object

    description: |
      Firmware subnode is needed when the platform does not
      have TrustZone.

    properties:
      iommus:
        maxItems: 1

    required:
      - iommus

required:
  - compatible
  - reg
  - interrupts
  - power-domains
  - power-domain-names
  - clocks
  - clock-names
  - iommus
  - memory-region
  - video-core0
  - video-core1

additionalProperties: false

examples:
  - |
        #include <dt-bindings/interrupt-controller/arm-gic.h>
        #include <dt-bindings/clock/qcom,videocc-sdm845.h>

        video-codec@aa00000 {
                compatible = "qcom,sdm845-venus-v2";
                reg = <0x0aa00000 0xff000>;
                interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&videocc VIDEO_CC_VENUS_CTL_CORE_CLK>,
                         <&videocc VIDEO_CC_VENUS_AHB_CLK>,
                         <&videocc VIDEO_CC_VENUS_CTL_AXI_CLK>,
                         <&videocc VIDEO_CC_VCODEC0_CORE_CLK>,
                         <&videocc VIDEO_CC_VCODEC0_AXI_CLK>,
                         <&videocc VIDEO_CC_VCODEC1_CORE_CLK>,
                         <&videocc VIDEO_CC_VCODEC1_AXI_CLK>;
                clock-names = "core", "iface", "bus",
                              "vcodec0_core", "vcodec0_bus",
                              "vcodec1_core", "vcodec1_bus";
                power-domains = <&videocc VENUS_GDSC>,
                                <&videocc VCODEC0_GDSC>,
                                <&videocc VCODEC1_GDSC>;
                power-domain-names = "venus", "vcodec0", "vcodec1";
                iommus = <&apps_smmu 0x10a0 0x8>,
                         <&apps_smmu 0x10b0 0x0>;
                memory-region = <&venus_mem>;

                video-core0 {
                        compatible = "venus-decoder";
                };

                video-core1 {
                        compatible = "venus-encoder";
                };
        };
