xref: /linux/Documentation/devicetree/bindings/media/qcom,msm8996-venus.yaml (revision 5be478f9c24fbdf8162b8118b8da8cc685e2efb4)
1df7acc7eSStanimir Varbanov# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2df7acc7eSStanimir Varbanov
3df7acc7eSStanimir Varbanov%YAML 1.2
4df7acc7eSStanimir Varbanov---
5df7acc7eSStanimir Varbanov$id: "http://devicetree.org/schemas/media/qcom,msm8996-venus.yaml#"
6df7acc7eSStanimir Varbanov$schema: "http://devicetree.org/meta-schemas/core.yaml#"
7df7acc7eSStanimir Varbanov
8df7acc7eSStanimir Varbanovtitle: Qualcomm Venus video encode and decode accelerators
9df7acc7eSStanimir Varbanov
10df7acc7eSStanimir Varbanovmaintainers:
11df7acc7eSStanimir Varbanov  - Stanimir Varbanov <stanimir.varbanov@linaro.org>
12df7acc7eSStanimir Varbanov
13df7acc7eSStanimir Varbanovdescription: |
14df7acc7eSStanimir Varbanov  The Venus IP is a video encode and decode accelerator present
15df7acc7eSStanimir Varbanov  on Qualcomm platforms
16df7acc7eSStanimir Varbanov
17df7acc7eSStanimir Varbanovproperties:
18df7acc7eSStanimir Varbanov  compatible:
19df7acc7eSStanimir Varbanov    const: qcom,msm8996-venus
20df7acc7eSStanimir Varbanov
21df7acc7eSStanimir Varbanov  reg:
22df7acc7eSStanimir Varbanov    maxItems: 1
23df7acc7eSStanimir Varbanov
24df7acc7eSStanimir Varbanov  interrupts:
25df7acc7eSStanimir Varbanov    maxItems: 1
26df7acc7eSStanimir Varbanov
27df7acc7eSStanimir Varbanov  power-domains:
28df7acc7eSStanimir Varbanov    maxItems: 1
29df7acc7eSStanimir Varbanov
30df7acc7eSStanimir Varbanov  clocks:
31df7acc7eSStanimir Varbanov    maxItems: 4
32df7acc7eSStanimir Varbanov
33df7acc7eSStanimir Varbanov  clock-names:
34df7acc7eSStanimir Varbanov    items:
35df7acc7eSStanimir Varbanov      - const: core
36df7acc7eSStanimir Varbanov      - const: iface
37df7acc7eSStanimir Varbanov      - const: bus
38df7acc7eSStanimir Varbanov      - const: mbus
39df7acc7eSStanimir Varbanov
40df7acc7eSStanimir Varbanov  iommus:
41df7acc7eSStanimir Varbanov    maxItems: 20
42df7acc7eSStanimir Varbanov
43df7acc7eSStanimir Varbanov  memory-region:
44df7acc7eSStanimir Varbanov    maxItems: 1
45df7acc7eSStanimir Varbanov
46df7acc7eSStanimir Varbanov  video-decoder:
47df7acc7eSStanimir Varbanov    type: object
48df7acc7eSStanimir Varbanov
49df7acc7eSStanimir Varbanov    properties:
50df7acc7eSStanimir Varbanov      compatible:
51df7acc7eSStanimir Varbanov        const: venus-decoder
52df7acc7eSStanimir Varbanov
53df7acc7eSStanimir Varbanov      clocks:
54df7acc7eSStanimir Varbanov        maxItems: 1
55df7acc7eSStanimir Varbanov
56df7acc7eSStanimir Varbanov      clock-names:
57df7acc7eSStanimir Varbanov        items:
58df7acc7eSStanimir Varbanov          - const: core
59df7acc7eSStanimir Varbanov
60df7acc7eSStanimir Varbanov      power-domains:
61df7acc7eSStanimir Varbanov        maxItems: 1
62df7acc7eSStanimir Varbanov
63df7acc7eSStanimir Varbanov    required:
64df7acc7eSStanimir Varbanov      - compatible
65df7acc7eSStanimir Varbanov      - clocks
66df7acc7eSStanimir Varbanov      - clock-names
67df7acc7eSStanimir Varbanov      - power-domains
68df7acc7eSStanimir Varbanov
69df7acc7eSStanimir Varbanov    additionalProperties: false
70df7acc7eSStanimir Varbanov
71df7acc7eSStanimir Varbanov  video-encoder:
72df7acc7eSStanimir Varbanov    type: object
73df7acc7eSStanimir Varbanov
74df7acc7eSStanimir Varbanov    properties:
75df7acc7eSStanimir Varbanov      compatible:
76df7acc7eSStanimir Varbanov        const: venus-encoder
77df7acc7eSStanimir Varbanov
78df7acc7eSStanimir Varbanov      clocks:
79df7acc7eSStanimir Varbanov        maxItems: 1
80df7acc7eSStanimir Varbanov
81df7acc7eSStanimir Varbanov      clock-names:
82df7acc7eSStanimir Varbanov        items:
83df7acc7eSStanimir Varbanov          - const: core
84df7acc7eSStanimir Varbanov
85df7acc7eSStanimir Varbanov      power-domains:
86df7acc7eSStanimir Varbanov        maxItems: 1
87df7acc7eSStanimir Varbanov
88df7acc7eSStanimir Varbanov    required:
89df7acc7eSStanimir Varbanov      - compatible
90df7acc7eSStanimir Varbanov      - clocks
91df7acc7eSStanimir Varbanov      - clock-names
92df7acc7eSStanimir Varbanov      - power-domains
93df7acc7eSStanimir Varbanov
94df7acc7eSStanimir Varbanov    additionalProperties: false
95df7acc7eSStanimir Varbanov
96df7acc7eSStanimir Varbanov  video-firmware:
97df7acc7eSStanimir Varbanov    type: object
98df7acc7eSStanimir Varbanov
99df7acc7eSStanimir Varbanov    description: |
100df7acc7eSStanimir Varbanov      Firmware subnode is needed when the platform does not
101df7acc7eSStanimir Varbanov      have TrustZone.
102df7acc7eSStanimir Varbanov
103df7acc7eSStanimir Varbanov    properties:
104df7acc7eSStanimir Varbanov      iommus:
105df7acc7eSStanimir Varbanov        maxItems: 1
106df7acc7eSStanimir Varbanov
107df7acc7eSStanimir Varbanov    required:
108df7acc7eSStanimir Varbanov      - iommus
109df7acc7eSStanimir Varbanov
110df7acc7eSStanimir Varbanovrequired:
111df7acc7eSStanimir Varbanov  - compatible
112df7acc7eSStanimir Varbanov  - reg
113df7acc7eSStanimir Varbanov  - interrupts
114df7acc7eSStanimir Varbanov  - power-domains
115df7acc7eSStanimir Varbanov  - clocks
116df7acc7eSStanimir Varbanov  - clock-names
117df7acc7eSStanimir Varbanov  - iommus
118df7acc7eSStanimir Varbanov  - memory-region
119df7acc7eSStanimir Varbanov  - video-decoder
120df7acc7eSStanimir Varbanov  - video-encoder
121df7acc7eSStanimir Varbanov
122*5be478f9SRob HerringadditionalProperties: false
123*5be478f9SRob Herring
124df7acc7eSStanimir Varbanovexamples:
125df7acc7eSStanimir Varbanov  - |
126df7acc7eSStanimir Varbanov        #include <dt-bindings/interrupt-controller/arm-gic.h>
127df7acc7eSStanimir Varbanov        #include <dt-bindings/clock/qcom,mmcc-msm8996.h>
128df7acc7eSStanimir Varbanov
129df7acc7eSStanimir Varbanov        video-codec@c00000 {
130df7acc7eSStanimir Varbanov                compatible = "qcom,msm8996-venus";
131df7acc7eSStanimir Varbanov                reg = <0x00c00000 0xff000>;
132df7acc7eSStanimir Varbanov                interrupts = <GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>;
133df7acc7eSStanimir Varbanov                clocks = <&mmcc VIDEO_CORE_CLK>,
134df7acc7eSStanimir Varbanov                         <&mmcc VIDEO_AHB_CLK>,
135df7acc7eSStanimir Varbanov                         <&mmcc VIDEO_AXI_CLK>,
136df7acc7eSStanimir Varbanov                         <&mmcc VIDEO_MAXI_CLK>;
137df7acc7eSStanimir Varbanov                clock-names = "core", "iface", "bus", "mbus";
138df7acc7eSStanimir Varbanov                power-domains = <&mmcc VENUS_GDSC>;
139df7acc7eSStanimir Varbanov                iommus =  <&venus_smmu 0x00>,
140df7acc7eSStanimir Varbanov                          <&venus_smmu 0x01>,
141df7acc7eSStanimir Varbanov                          <&venus_smmu 0x0a>,
142df7acc7eSStanimir Varbanov                          <&venus_smmu 0x07>,
143df7acc7eSStanimir Varbanov                          <&venus_smmu 0x0e>,
144df7acc7eSStanimir Varbanov                          <&venus_smmu 0x0f>,
145df7acc7eSStanimir Varbanov                          <&venus_smmu 0x08>,
146df7acc7eSStanimir Varbanov                          <&venus_smmu 0x09>,
147df7acc7eSStanimir Varbanov                          <&venus_smmu 0x0b>,
148df7acc7eSStanimir Varbanov                          <&venus_smmu 0x0c>,
149df7acc7eSStanimir Varbanov                          <&venus_smmu 0x0d>,
150df7acc7eSStanimir Varbanov                          <&venus_smmu 0x10>,
151df7acc7eSStanimir Varbanov                          <&venus_smmu 0x11>,
152df7acc7eSStanimir Varbanov                          <&venus_smmu 0x21>,
153df7acc7eSStanimir Varbanov                          <&venus_smmu 0x28>,
154df7acc7eSStanimir Varbanov                          <&venus_smmu 0x29>,
155df7acc7eSStanimir Varbanov                          <&venus_smmu 0x2b>,
156df7acc7eSStanimir Varbanov                          <&venus_smmu 0x2c>,
157df7acc7eSStanimir Varbanov                          <&venus_smmu 0x2d>,
158df7acc7eSStanimir Varbanov                          <&venus_smmu 0x31>;
159df7acc7eSStanimir Varbanov                memory-region = <&venus_mem>;
160df7acc7eSStanimir Varbanov
161df7acc7eSStanimir Varbanov                video-decoder {
162df7acc7eSStanimir Varbanov                        compatible = "venus-decoder";
163df7acc7eSStanimir Varbanov                        clocks = <&mmcc VIDEO_SUBCORE0_CLK>;
164df7acc7eSStanimir Varbanov                        clock-names = "core";
165df7acc7eSStanimir Varbanov                        power-domains = <&mmcc VENUS_CORE0_GDSC>;
166df7acc7eSStanimir Varbanov                };
167df7acc7eSStanimir Varbanov
168df7acc7eSStanimir Varbanov                video-encoder {
169df7acc7eSStanimir Varbanov                        compatible = "venus-encoder";
170df7acc7eSStanimir Varbanov                        clocks = <&mmcc VIDEO_SUBCORE1_CLK>;
171df7acc7eSStanimir Varbanov                        clock-names = "core";
172df7acc7eSStanimir Varbanov                        power-domains = <&mmcc VENUS_CORE1_GDSC>;
173df7acc7eSStanimir Varbanov                };
174df7acc7eSStanimir Varbanov        };
175