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