Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
[linux-2.6-microblaze.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
85     description: |
86       Firmware subnode is needed when the platform does not
87       have TrustZone.
88
89     properties:
90       iommus:
91         maxItems: 1
92
93     required:
94       - iommus
95
96 required:
97   - compatible
98   - reg
99   - interrupts
100   - power-domains
101   - power-domain-names
102   - clocks
103   - clock-names
104   - iommus
105   - memory-region
106   - video-core0
107   - video-core1
108
109 additionalProperties: false
110
111 examples:
112   - |
113         #include <dt-bindings/interrupt-controller/arm-gic.h>
114         #include <dt-bindings/clock/qcom,videocc-sdm845.h>
115
116         video-codec@aa00000 {
117                 compatible = "qcom,sdm845-venus-v2";
118                 reg = <0x0aa00000 0xff000>;
119                 interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
120                 clocks = <&videocc VIDEO_CC_VENUS_CTL_CORE_CLK>,
121                          <&videocc VIDEO_CC_VENUS_AHB_CLK>,
122                          <&videocc VIDEO_CC_VENUS_CTL_AXI_CLK>,
123                          <&videocc VIDEO_CC_VCODEC0_CORE_CLK>,
124                          <&videocc VIDEO_CC_VCODEC0_AXI_CLK>,
125                          <&videocc VIDEO_CC_VCODEC1_CORE_CLK>,
126                          <&videocc VIDEO_CC_VCODEC1_AXI_CLK>;
127                 clock-names = "core", "iface", "bus",
128                               "vcodec0_core", "vcodec0_bus",
129                               "vcodec1_core", "vcodec1_bus";
130                 power-domains = <&videocc VENUS_GDSC>,
131                                 <&videocc VCODEC0_GDSC>,
132                                 <&videocc VCODEC1_GDSC>;
133                 power-domain-names = "venus", "vcodec0", "vcodec1";
134                 iommus = <&apps_smmu 0x10a0 0x8>,
135                          <&apps_smmu 0x10b0 0x0>;
136                 memory-region = <&venus_mem>;
137
138                 video-core0 {
139                         compatible = "venus-decoder";
140                 };
141
142                 video-core1 {
143                         compatible = "venus-encoder";
144                 };
145         };