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,sdm845-venus-v2.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,sdm845-venus-v2
20
21  reg:
22    maxItems: 1
23
24  interrupts:
25    maxItems: 1
26
27  power-domains:
28    maxItems: 3
29
30  power-domain-names:
31    items:
32      - const: venus
33      - const: vcodec0
34      - const: vcodec1
35
36  clocks:
37    maxItems: 7
38
39  clock-names:
40    items:
41      - const: core
42      - const: iface
43      - const: bus
44      - const: vcodec0_core
45      - const: vcodec0_bus
46      - const: vcodec1_core
47      - const: vcodec1_bus
48
49  iommus:
50    maxItems: 2
51
52  memory-region:
53    maxItems: 1
54
55  video-core0:
56    type: object
57
58    properties:
59      compatible:
60        const: venus-decoder
61
62    required:
63      - compatible
64
65    additionalProperties: false
66
67  video-core1:
68    type: object
69
70    properties:
71      compatible:
72        const: venus-encoder
73
74    required:
75      - compatible
76
77    additionalProperties: false
78
79  video-firmware:
80    type: object
81
82    description: |
83      Firmware subnode is needed when the platform does not
84      have TrustZone.
85
86    properties:
87      iommus:
88        maxItems: 1
89
90    required:
91      - iommus
92
93required:
94  - compatible
95  - reg
96  - interrupts
97  - power-domains
98  - power-domain-names
99  - clocks
100  - clock-names
101  - iommus
102  - memory-region
103  - video-core0
104  - video-core1
105
106examples:
107  - |
108        #include <dt-bindings/interrupt-controller/arm-gic.h>
109        #include <dt-bindings/clock/qcom,videocc-sdm845.h>
110
111        video-codec@aa00000 {
112                compatible = "qcom,sdm845-venus-v2";
113                reg = <0x0aa00000 0xff000>;
114                interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
115                clocks = <&videocc VIDEO_CC_VENUS_CTL_CORE_CLK>,
116                         <&videocc VIDEO_CC_VENUS_AHB_CLK>,
117                         <&videocc VIDEO_CC_VENUS_CTL_AXI_CLK>,
118                         <&videocc VIDEO_CC_VCODEC0_CORE_CLK>,
119                         <&videocc VIDEO_CC_VCODEC0_AXI_CLK>,
120                         <&videocc VIDEO_CC_VCODEC1_CORE_CLK>,
121                         <&videocc VIDEO_CC_VCODEC1_AXI_CLK>;
122                clock-names = "core", "iface", "bus",
123                              "vcodec0_core", "vcodec0_bus",
124                              "vcodec1_core", "vcodec1_bus";
125                power-domains = <&videocc VENUS_GDSC>,
126                                <&videocc VCODEC0_GDSC>,
127                                <&videocc VCODEC1_GDSC>;
128                power-domain-names = "venus", "vcodec0", "vcodec1";
129                iommus = <&apps_smmu 0x10a0 0x8>,
130                         <&apps_smmu 0x10b0 0x0>;
131                memory-region = <&venus_mem>;
132
133                video-core0 {
134                        compatible = "venus-decoder";
135                };
136
137                video-core1 {
138                        compatible = "venus-encoder";
139                };
140        };
141