Linux 6.7-rc7
[linux-modified.git] / Documentation / devicetree / bindings / media / qcom,sdm845-venus.yaml
1 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/media/qcom,sdm845-venus.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Qualcomm SDM845 Venus video encode and decode accelerators
8
9 maintainers:
10   - Stanimir Varbanov <stanimir.varbanov@linaro.org>
11
12 description: |
13   The Venus IP is a video encode and decode accelerator present
14   on Qualcomm platforms
15
16 allOf:
17   - $ref: qcom,venus-common.yaml#
18
19 properties:
20   compatible:
21     const: qcom,sdm845-venus
22
23   power-domains:
24     maxItems: 1
25
26   clocks:
27     maxItems: 3
28
29   clock-names:
30     items:
31       - const: core
32       - const: iface
33       - const: bus
34
35   iommus:
36     maxItems: 2
37
38   video-core0:
39     type: object
40
41     properties:
42       compatible:
43         const: venus-decoder
44
45       clocks:
46         maxItems: 2
47
48       clock-names:
49         items:
50           - const: core
51           - const: bus
52
53       power-domains:
54         maxItems: 1
55
56     required:
57       - compatible
58       - clocks
59       - clock-names
60       - power-domains
61
62     additionalProperties: false
63
64   video-core1:
65     type: object
66
67     properties:
68       compatible:
69         const: venus-encoder
70
71       clocks:
72         maxItems: 2
73
74       clock-names:
75         items:
76           - const: core
77           - const: bus
78
79       power-domains:
80         maxItems: 1
81
82     required:
83       - compatible
84       - clocks
85       - clock-names
86       - power-domains
87
88     additionalProperties: false
89
90 required:
91   - compatible
92   - iommus
93   - video-core0
94   - video-core1
95
96 unevaluatedProperties: false
97
98 examples:
99   - |
100     #include <dt-bindings/interrupt-controller/arm-gic.h>
101     #include <dt-bindings/clock/qcom,videocc-sdm845.h>
102
103     video-codec@aa00000 {
104         compatible = "qcom,sdm845-venus";
105         reg = <0x0aa00000 0xff000>;
106         interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
107         clocks = <&videocc VIDEO_CC_VENUS_CTL_CORE_CLK>,
108                  <&videocc VIDEO_CC_VENUS_AHB_CLK>,
109                  <&videocc VIDEO_CC_VENUS_CTL_AXI_CLK>;
110         clock-names = "core", "iface", "bus";
111         power-domains = <&videocc VENUS_GDSC>;
112         iommus = <&apps_smmu 0x10a0 0x8>,
113                  <&apps_smmu 0x10b0 0x0>;
114         memory-region = <&venus_mem>;
115
116         video-core0 {
117             compatible = "venus-decoder";
118             clocks = <&videocc VIDEO_CC_VCODEC0_CORE_CLK>,
119                      <&videocc VIDEO_CC_VCODEC0_AXI_CLK>;
120             clock-names = "core", "bus";
121             power-domains = <&videocc VCODEC0_GDSC>;
122         };
123
124         video-core1 {
125             compatible = "venus-encoder";
126             clocks = <&videocc VIDEO_CC_VCODEC1_CORE_CLK>,
127                      <&videocc VIDEO_CC_VCODEC1_AXI_CLK>;
128             clock-names = "core", "bus";
129             power-domains = <&videocc VCODEC1_GDSC>;
130         };
131     };