xref: /linux/Documentation/devicetree/bindings/media/qcom,sdm845-venus.yaml (revision af2270e043ce3460770bedae1e54cd6c1cee5cb6)
149a3797aSStanimir Varbanov# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
249a3797aSStanimir Varbanov%YAML 1.2
349a3797aSStanimir Varbanov---
4af2270e0SKrzysztof Kozlowski$id: http://devicetree.org/schemas/media/qcom,sdm845-venus.yaml#
5af2270e0SKrzysztof Kozlowski$schema: http://devicetree.org/meta-schemas/core.yaml#
649a3797aSStanimir Varbanov
7af2270e0SKrzysztof Kozlowskititle: Qualcomm SDM845 Venus video encode and decode accelerators
849a3797aSStanimir Varbanov
949a3797aSStanimir Varbanovmaintainers:
1049a3797aSStanimir Varbanov  - Stanimir Varbanov <stanimir.varbanov@linaro.org>
1149a3797aSStanimir Varbanov
1249a3797aSStanimir Varbanovdescription: |
1349a3797aSStanimir Varbanov  The Venus IP is a video encode and decode accelerator present
1449a3797aSStanimir Varbanov  on Qualcomm platforms
1549a3797aSStanimir Varbanov
1649a3797aSStanimir Varbanovproperties:
1749a3797aSStanimir Varbanov  compatible:
1849a3797aSStanimir Varbanov    const: qcom,sdm845-venus
1949a3797aSStanimir Varbanov
2049a3797aSStanimir Varbanov  reg:
2149a3797aSStanimir Varbanov    maxItems: 1
2249a3797aSStanimir Varbanov
2349a3797aSStanimir Varbanov  interrupts:
2449a3797aSStanimir Varbanov    maxItems: 1
2549a3797aSStanimir Varbanov
2649a3797aSStanimir Varbanov  power-domains:
2749a3797aSStanimir Varbanov    maxItems: 1
2849a3797aSStanimir Varbanov
2949a3797aSStanimir Varbanov  clocks:
3049a3797aSStanimir Varbanov    maxItems: 3
3149a3797aSStanimir Varbanov
3249a3797aSStanimir Varbanov  clock-names:
3349a3797aSStanimir Varbanov    items:
3449a3797aSStanimir Varbanov      - const: core
3549a3797aSStanimir Varbanov      - const: iface
3649a3797aSStanimir Varbanov      - const: bus
3749a3797aSStanimir Varbanov
3849a3797aSStanimir Varbanov  iommus:
3949a3797aSStanimir Varbanov    maxItems: 2
4049a3797aSStanimir Varbanov
4149a3797aSStanimir Varbanov  memory-region:
4249a3797aSStanimir Varbanov    maxItems: 1
4349a3797aSStanimir Varbanov
4449a3797aSStanimir Varbanov  video-core0:
4549a3797aSStanimir Varbanov    type: object
4649a3797aSStanimir Varbanov
4749a3797aSStanimir Varbanov    properties:
4849a3797aSStanimir Varbanov      compatible:
4949a3797aSStanimir Varbanov        const: venus-decoder
5049a3797aSStanimir Varbanov
5149a3797aSStanimir Varbanov      clocks:
5249a3797aSStanimir Varbanov        maxItems: 2
5349a3797aSStanimir Varbanov
5449a3797aSStanimir Varbanov      clock-names:
5549a3797aSStanimir Varbanov        items:
5649a3797aSStanimir Varbanov          - const: core
5749a3797aSStanimir Varbanov          - const: bus
5849a3797aSStanimir Varbanov
5949a3797aSStanimir Varbanov      power-domains:
6049a3797aSStanimir Varbanov        maxItems: 1
6149a3797aSStanimir Varbanov
6249a3797aSStanimir Varbanov    required:
6349a3797aSStanimir Varbanov      - compatible
6449a3797aSStanimir Varbanov      - clocks
6549a3797aSStanimir Varbanov      - clock-names
6649a3797aSStanimir Varbanov      - power-domains
6749a3797aSStanimir Varbanov
6849a3797aSStanimir Varbanov    additionalProperties: false
6949a3797aSStanimir Varbanov
7049a3797aSStanimir Varbanov  video-core1:
7149a3797aSStanimir Varbanov    type: object
7249a3797aSStanimir Varbanov
7349a3797aSStanimir Varbanov    properties:
7449a3797aSStanimir Varbanov      compatible:
7549a3797aSStanimir Varbanov        const: venus-encoder
7649a3797aSStanimir Varbanov
7749a3797aSStanimir Varbanov      clocks:
7849a3797aSStanimir Varbanov        maxItems: 2
7949a3797aSStanimir Varbanov
8049a3797aSStanimir Varbanov      clock-names:
8149a3797aSStanimir Varbanov        items:
8249a3797aSStanimir Varbanov          - const: core
8349a3797aSStanimir Varbanov          - const: bus
8449a3797aSStanimir Varbanov
8549a3797aSStanimir Varbanov      power-domains:
8649a3797aSStanimir Varbanov        maxItems: 1
8749a3797aSStanimir Varbanov
8849a3797aSStanimir Varbanov    required:
8949a3797aSStanimir Varbanov      - compatible
9049a3797aSStanimir Varbanov      - clocks
9149a3797aSStanimir Varbanov      - clock-names
9249a3797aSStanimir Varbanov      - power-domains
9349a3797aSStanimir Varbanov
9449a3797aSStanimir Varbanov    additionalProperties: false
9549a3797aSStanimir Varbanov
9649a3797aSStanimir Varbanov  video-firmware:
9749a3797aSStanimir Varbanov    type: object
989eba693cSRob Herring    additionalProperties: false
9949a3797aSStanimir Varbanov
10049a3797aSStanimir Varbanov    description: |
10149a3797aSStanimir Varbanov      Firmware subnode is needed when the platform does not
10249a3797aSStanimir Varbanov      have TrustZone.
10349a3797aSStanimir Varbanov
10449a3797aSStanimir Varbanov    properties:
10549a3797aSStanimir Varbanov      iommus:
10649a3797aSStanimir Varbanov        maxItems: 1
10749a3797aSStanimir Varbanov
10849a3797aSStanimir Varbanov    required:
10949a3797aSStanimir Varbanov      - iommus
11049a3797aSStanimir Varbanov
11149a3797aSStanimir Varbanovrequired:
11249a3797aSStanimir Varbanov  - compatible
11349a3797aSStanimir Varbanov  - reg
11449a3797aSStanimir Varbanov  - interrupts
11549a3797aSStanimir Varbanov  - power-domains
11649a3797aSStanimir Varbanov  - clocks
11749a3797aSStanimir Varbanov  - clock-names
11849a3797aSStanimir Varbanov  - iommus
11949a3797aSStanimir Varbanov  - memory-region
12049a3797aSStanimir Varbanov  - video-core0
12149a3797aSStanimir Varbanov  - video-core1
12249a3797aSStanimir Varbanov
1235be478f9SRob HerringadditionalProperties: false
1245be478f9SRob Herring
12549a3797aSStanimir Varbanovexamples:
12649a3797aSStanimir Varbanov  - |
12749a3797aSStanimir Varbanov    #include <dt-bindings/interrupt-controller/arm-gic.h>
12849a3797aSStanimir Varbanov    #include <dt-bindings/clock/qcom,videocc-sdm845.h>
12949a3797aSStanimir Varbanov
13049a3797aSStanimir Varbanov    video-codec@aa00000 {
13149a3797aSStanimir Varbanov        compatible = "qcom,sdm845-venus";
132fba56184SRob Herring        reg = <0x0aa00000 0xff000>;
13349a3797aSStanimir Varbanov        interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
13449a3797aSStanimir Varbanov        clocks = <&videocc VIDEO_CC_VENUS_CTL_CORE_CLK>,
13549a3797aSStanimir Varbanov                 <&videocc VIDEO_CC_VENUS_AHB_CLK>,
13649a3797aSStanimir Varbanov                 <&videocc VIDEO_CC_VENUS_CTL_AXI_CLK>;
13749a3797aSStanimir Varbanov        clock-names = "core", "iface", "bus";
13849a3797aSStanimir Varbanov        power-domains = <&videocc VENUS_GDSC>;
13949a3797aSStanimir Varbanov        iommus = <&apps_smmu 0x10a0 0x8>,
14049a3797aSStanimir Varbanov                 <&apps_smmu 0x10b0 0x0>;
14149a3797aSStanimir Varbanov        memory-region = <&venus_mem>;
14249a3797aSStanimir Varbanov
14349a3797aSStanimir Varbanov        video-core0 {
14449a3797aSStanimir Varbanov            compatible = "venus-decoder";
14549a3797aSStanimir Varbanov            clocks = <&videocc VIDEO_CC_VCODEC0_CORE_CLK>,
14649a3797aSStanimir Varbanov                     <&videocc VIDEO_CC_VCODEC0_AXI_CLK>;
14749a3797aSStanimir Varbanov            clock-names = "core", "bus";
14849a3797aSStanimir Varbanov            power-domains = <&videocc VCODEC0_GDSC>;
14949a3797aSStanimir Varbanov        };
15049a3797aSStanimir Varbanov
15149a3797aSStanimir Varbanov        video-core1 {
15249a3797aSStanimir Varbanov            compatible = "venus-encoder";
15349a3797aSStanimir Varbanov            clocks = <&videocc VIDEO_CC_VCODEC1_CORE_CLK>,
15449a3797aSStanimir Varbanov                     <&videocc VIDEO_CC_VCODEC1_AXI_CLK>;
15549a3797aSStanimir Varbanov            clock-names = "core", "bus";
15649a3797aSStanimir Varbanov            power-domains = <&videocc VCODEC1_GDSC>;
15749a3797aSStanimir Varbanov        };
15849a3797aSStanimir Varbanov    };
159