Merge tag 'locking-urgent-2020-11-01' of git://git.kernel.org/pub/scm/linux/kernel...
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / media / qcom,msm8996-venus.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,msm8996-venus.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,msm8996-venus
20
21   reg:
22     maxItems: 1
23
24   interrupts:
25     maxItems: 1
26
27   power-domains:
28     maxItems: 1
29
30   clocks:
31     maxItems: 4
32
33   clock-names:
34     items:
35       - const: core
36       - const: iface
37       - const: bus
38       - const: mbus
39
40   iommus:
41     maxItems: 20
42
43   memory-region:
44     maxItems: 1
45
46   video-decoder:
47     type: object
48
49     properties:
50       compatible:
51         const: venus-decoder
52
53       clocks:
54         maxItems: 1
55
56       clock-names:
57         items:
58           - const: core
59
60       power-domains:
61         maxItems: 1
62
63     required:
64       - compatible
65       - clocks
66       - clock-names
67       - power-domains
68
69     additionalProperties: false
70
71   video-encoder:
72     type: object
73
74     properties:
75       compatible:
76         const: venus-encoder
77
78       clocks:
79         maxItems: 1
80
81       clock-names:
82         items:
83           - const: core
84
85       power-domains:
86         maxItems: 1
87
88     required:
89       - compatible
90       - clocks
91       - clock-names
92       - power-domains
93
94     additionalProperties: false
95
96   video-firmware:
97     type: object
98
99     description: |
100       Firmware subnode is needed when the platform does not
101       have TrustZone.
102
103     properties:
104       iommus:
105         maxItems: 1
106
107     required:
108       - iommus
109
110 required:
111   - compatible
112   - reg
113   - interrupts
114   - power-domains
115   - clocks
116   - clock-names
117   - iommus
118   - memory-region
119   - video-decoder
120   - video-encoder
121
122 additionalProperties: false
123
124 examples:
125   - |
126         #include <dt-bindings/interrupt-controller/arm-gic.h>
127         #include <dt-bindings/clock/qcom,mmcc-msm8996.h>
128
129         video-codec@c00000 {
130                 compatible = "qcom,msm8996-venus";
131                 reg = <0x00c00000 0xff000>;
132                 interrupts = <GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>;
133                 clocks = <&mmcc VIDEO_CORE_CLK>,
134                          <&mmcc VIDEO_AHB_CLK>,
135                          <&mmcc VIDEO_AXI_CLK>,
136                          <&mmcc VIDEO_MAXI_CLK>;
137                 clock-names = "core", "iface", "bus", "mbus";
138                 power-domains = <&mmcc VENUS_GDSC>;
139                 iommus =  <&venus_smmu 0x00>,
140                           <&venus_smmu 0x01>,
141                           <&venus_smmu 0x0a>,
142                           <&venus_smmu 0x07>,
143                           <&venus_smmu 0x0e>,
144                           <&venus_smmu 0x0f>,
145                           <&venus_smmu 0x08>,
146                           <&venus_smmu 0x09>,
147                           <&venus_smmu 0x0b>,
148                           <&venus_smmu 0x0c>,
149                           <&venus_smmu 0x0d>,
150                           <&venus_smmu 0x10>,
151                           <&venus_smmu 0x11>,
152                           <&venus_smmu 0x21>,
153                           <&venus_smmu 0x28>,
154                           <&venus_smmu 0x29>,
155                           <&venus_smmu 0x2b>,
156                           <&venus_smmu 0x2c>,
157                           <&venus_smmu 0x2d>,
158                           <&venus_smmu 0x31>;
159                 memory-region = <&venus_mem>;
160
161                 video-decoder {
162                         compatible = "venus-decoder";
163                         clocks = <&mmcc VIDEO_SUBCORE0_CLK>;
164                         clock-names = "core";
165                         power-domains = <&mmcc VENUS_CORE0_GDSC>;
166                 };
167
168                 video-encoder {
169                         compatible = "venus-encoder";
170                         clocks = <&mmcc VIDEO_SUBCORE1_CLK>;
171                         clock-names = "core";
172                         power-domains = <&mmcc VENUS_CORE1_GDSC>;
173                 };
174         };