GNU Linux-libre 6.1.90-gnu
[releases.git] / Documentation / devicetree / bindings / media / qcom,sdm845-venus-v2.yaml
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
8 title: Qualcomm Venus video encode and decode accelerators
9
10 maintainers:
11   - Stanimir Varbanov <stanimir.varbanov@linaro.org>
12
13 description: |
14   The Venus IP is a video encode and decode accelerator present
15   on Qualcomm platforms
16
17 properties:
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     minItems: 3
29     maxItems: 4
30
31   power-domain-names:
32     minItems: 3
33     items:
34       - const: venus
35       - const: vcodec0
36       - const: vcodec1
37       - const: cx
38
39   clocks:
40     maxItems: 7
41
42   clock-names:
43     items:
44       - const: core
45       - const: iface
46       - const: bus
47       - const: vcodec0_core
48       - const: vcodec0_bus
49       - const: vcodec1_core
50       - const: vcodec1_bus
51
52   iommus:
53     maxItems: 2
54
55   memory-region:
56     maxItems: 1
57
58   video-core0:
59     type: object
60
61     properties:
62       compatible:
63         const: venus-decoder
64
65     required:
66       - compatible
67
68     additionalProperties: false
69
70   video-core1:
71     type: object
72
73     properties:
74       compatible:
75         const: venus-encoder
76
77     required:
78       - compatible
79
80     additionalProperties: false
81
82   video-firmware:
83     type: object
84     additionalProperties: false
85
86     description: |
87       Firmware subnode is needed when the platform does not
88       have TrustZone.
89
90     properties:
91       iommus:
92         maxItems: 1
93
94     required:
95       - iommus
96
97 required:
98   - compatible
99   - reg
100   - interrupts
101   - power-domains
102   - power-domain-names
103   - clocks
104   - clock-names
105   - iommus
106   - memory-region
107   - video-core0
108   - video-core1
109
110 additionalProperties: false
111
112 examples:
113   - |
114         #include <dt-bindings/interrupt-controller/arm-gic.h>
115         #include <dt-bindings/clock/qcom,videocc-sdm845.h>
116
117         video-codec@aa00000 {
118                 compatible = "qcom,sdm845-venus-v2";
119                 reg = <0x0aa00000 0xff000>;
120                 interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
121                 clocks = <&videocc VIDEO_CC_VENUS_CTL_CORE_CLK>,
122                          <&videocc VIDEO_CC_VENUS_AHB_CLK>,
123                          <&videocc VIDEO_CC_VENUS_CTL_AXI_CLK>,
124                          <&videocc VIDEO_CC_VCODEC0_CORE_CLK>,
125                          <&videocc VIDEO_CC_VCODEC0_AXI_CLK>,
126                          <&videocc VIDEO_CC_VCODEC1_CORE_CLK>,
127                          <&videocc VIDEO_CC_VCODEC1_AXI_CLK>;
128                 clock-names = "core", "iface", "bus",
129                               "vcodec0_core", "vcodec0_bus",
130                               "vcodec1_core", "vcodec1_bus";
131                 power-domains = <&videocc VENUS_GDSC>,
132                                 <&videocc VCODEC0_GDSC>,
133                                 <&videocc VCODEC1_GDSC>;
134                 power-domain-names = "venus", "vcodec0", "vcodec1";
135                 iommus = <&apps_smmu 0x10a0 0x8>,
136                          <&apps_smmu 0x10b0 0x0>;
137                 memory-region = <&venus_mem>;
138
139                 video-core0 {
140                         compatible = "venus-decoder";
141                 };
142
143                 video-core1 {
144                         compatible = "venus-encoder";
145                 };
146         };