1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/media/qcom,msm8916-venus.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm MSM8916 Venus video encode and decode accelerators
8
9maintainers:
10  - Stanimir Varbanov <stanimir.varbanov@linaro.org>
11
12description: |
13  The Venus IP is a video encode and decode accelerator present
14  on Qualcomm platforms
15
16properties:
17  compatible:
18    const: qcom,msm8916-venus
19
20  reg:
21    maxItems: 1
22
23  interrupts:
24    maxItems: 1
25
26  power-domains:
27    maxItems: 1
28
29  clocks:
30    maxItems: 3
31
32  clock-names:
33    items:
34      - const: core
35      - const: iface
36      - const: bus
37
38  iommus:
39    maxItems: 1
40
41  memory-region:
42    maxItems: 1
43
44  video-decoder:
45    type: object
46
47    properties:
48      compatible:
49        const: "venus-decoder"
50
51    required:
52      - compatible
53
54    additionalProperties: false
55
56  video-encoder:
57    type: object
58
59    properties:
60      compatible:
61        const: "venus-encoder"
62
63    required:
64      - compatible
65
66    additionalProperties: false
67
68  video-firmware:
69    type: object
70    additionalProperties: false
71
72    description: |
73      Firmware subnode is needed when the platform does not
74      have TrustZone.
75
76    properties:
77      iommus:
78        maxItems: 1
79
80    required:
81      - iommus
82
83required:
84  - compatible
85  - reg
86  - interrupts
87  - power-domains
88  - clocks
89  - clock-names
90  - iommus
91  - memory-region
92  - video-decoder
93  - video-encoder
94
95additionalProperties: false
96
97examples:
98  - |
99    #include <dt-bindings/interrupt-controller/arm-gic.h>
100    #include <dt-bindings/clock/qcom,gcc-msm8916.h>
101
102    video-codec@1d00000 {
103        compatible = "qcom,msm8916-venus";
104        reg = <0x01d00000 0xff000>;
105        interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
106        clocks = <&gcc GCC_VENUS0_VCODEC0_CLK>,
107                 <&gcc GCC_VENUS0_AHB_CLK>,
108                 <&gcc GCC_VENUS0_AXI_CLK>;
109        clock-names = "core", "iface", "bus";
110        power-domains = <&gcc VENUS_GDSC>;
111        iommus = <&apps_iommu 5>;
112        memory-region = <&venus_mem>;
113
114        video-decoder {
115            compatible = "venus-decoder";
116        };
117
118        video-encoder {
119            compatible = "venus-encoder";
120        };
121    };
122