Linux 6.7-rc7
[linux-modified.git] / Documentation / devicetree / bindings / media / qcom,sc7280-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,sc7280-venus.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Qualcomm SC7280 Venus video encode and decode accelerators
8
9 maintainers:
10   - Stanimir Varbanov <stanimir.varbanov@linaro.org>
11
12 description: |
13   The Venus Iris2 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,sc7280-venus
22
23   power-domains:
24     minItems: 2
25     maxItems: 3
26
27   power-domain-names:
28     minItems: 2
29     items:
30       - const: venus
31       - const: vcodec0
32       - const: cx
33
34   clocks:
35     maxItems: 5
36
37   clock-names:
38     items:
39       - const: core
40       - const: bus
41       - const: iface
42       - const: vcodec_core
43       - const: vcodec_bus
44
45   iommus:
46     maxItems: 2
47
48   interconnects:
49     maxItems: 2
50
51   interconnect-names:
52     items:
53       - const: cpu-cfg
54       - const: video-mem
55
56   operating-points-v2: true
57   opp-table:
58     type: object
59
60   video-decoder:
61     type: object
62
63     properties:
64       compatible:
65         const: venus-decoder
66
67     required:
68       - compatible
69
70     additionalProperties: false
71
72   video-encoder:
73     type: object
74
75     properties:
76       compatible:
77         const: venus-encoder
78
79     required:
80       - compatible
81
82     additionalProperties: false
83
84 required:
85   - compatible
86   - power-domain-names
87   - iommus
88   - video-decoder
89   - video-encoder
90
91 unevaluatedProperties: false
92
93 examples:
94   - |
95     #include <dt-bindings/interrupt-controller/arm-gic.h>
96     #include <dt-bindings/clock/qcom,videocc-sc7280.h>
97     #include <dt-bindings/interconnect/qcom,sc7280.h>
98     #include <dt-bindings/power/qcom-rpmpd.h>
99
100     venus: video-codec@aa00000 {
101         compatible = "qcom,sc7280-venus";
102         reg = <0x0aa00000 0xd0600>;
103         interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
104
105         clocks = <&videocc VIDEO_CC_MVSC_CORE_CLK>,
106                  <&videocc VIDEO_CC_MVSC_CTL_AXI_CLK>,
107                  <&videocc VIDEO_CC_VENUS_AHB_CLK>,
108                  <&videocc VIDEO_CC_MVS0_CORE_CLK>,
109                  <&videocc VIDEO_CC_MVS0_AXI_CLK>;
110         clock-names = "core", "bus", "iface",
111                       "vcodec_core", "vcodec_bus";
112
113         power-domains = <&videocc MVSC_GDSC>,
114                         <&videocc MVS0_GDSC>,
115                         <&rpmhpd SC7280_CX>;
116         power-domain-names = "venus", "vcodec0", "cx";
117
118         interconnects = <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_VENUS_CFG 0>,
119                         <&mmss_noc MASTER_VIDEO_P0 0 &mc_virt SLAVE_EBI1 0>;
120         interconnect-names = "cpu-cfg", "video-mem";
121
122         iommus = <&apps_smmu 0x2180 0x20>,
123                  <&apps_smmu 0x2184 0x20>;
124
125         memory-region = <&video_mem>;
126
127         video-decoder {
128             compatible = "venus-decoder";
129         };
130
131         video-encoder {
132             compatible = "venus-encoder";
133         };
134
135         video-firmware {
136             iommus = <&apps_smmu 0x21a2 0x0>;
137         };
138     };