1*96fbc6c5SAngeloGioacchino Del Regno# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2*96fbc6c5SAngeloGioacchino Del Regno
3*96fbc6c5SAngeloGioacchino Del Regno%YAML 1.2
4*96fbc6c5SAngeloGioacchino Del Regno---
5*96fbc6c5SAngeloGioacchino Del Regno$id: "http://devicetree.org/schemas/media/qcom,sdm660-venus.yaml#"
6*96fbc6c5SAngeloGioacchino Del Regno$schema: "http://devicetree.org/meta-schemas/core.yaml#"
7*96fbc6c5SAngeloGioacchino Del Regno
8*96fbc6c5SAngeloGioacchino Del Regnotitle: Qualcomm Venus video encode and decode accelerators
9*96fbc6c5SAngeloGioacchino Del Regno
10*96fbc6c5SAngeloGioacchino Del Regnomaintainers:
11*96fbc6c5SAngeloGioacchino Del Regno  - Stanimir Varbanov <stanimir.varbanov@linaro.org>
12*96fbc6c5SAngeloGioacchino Del Regno  - AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
13*96fbc6c5SAngeloGioacchino Del Regno
14*96fbc6c5SAngeloGioacchino Del Regnodescription: |
15*96fbc6c5SAngeloGioacchino Del Regno  The Venus IP is a video encode and decode accelerator present
16*96fbc6c5SAngeloGioacchino Del Regno  on Qualcomm platforms
17*96fbc6c5SAngeloGioacchino Del Regno
18*96fbc6c5SAngeloGioacchino Del Regnoproperties:
19*96fbc6c5SAngeloGioacchino Del Regno  compatible:
20*96fbc6c5SAngeloGioacchino Del Regno    const: qcom,sdm660-venus
21*96fbc6c5SAngeloGioacchino Del Regno
22*96fbc6c5SAngeloGioacchino Del Regno  reg:
23*96fbc6c5SAngeloGioacchino Del Regno    maxItems: 1
24*96fbc6c5SAngeloGioacchino Del Regno
25*96fbc6c5SAngeloGioacchino Del Regno  clocks:
26*96fbc6c5SAngeloGioacchino Del Regno    maxItems: 4
27*96fbc6c5SAngeloGioacchino Del Regno
28*96fbc6c5SAngeloGioacchino Del Regno  clock-names:
29*96fbc6c5SAngeloGioacchino Del Regno    items:
30*96fbc6c5SAngeloGioacchino Del Regno      - const: core
31*96fbc6c5SAngeloGioacchino Del Regno      - const: iface
32*96fbc6c5SAngeloGioacchino Del Regno      - const: bus
33*96fbc6c5SAngeloGioacchino Del Regno      - const: bus_throttle
34*96fbc6c5SAngeloGioacchino Del Regno
35*96fbc6c5SAngeloGioacchino Del Regno  interconnects:
36*96fbc6c5SAngeloGioacchino Del Regno    maxItems: 2
37*96fbc6c5SAngeloGioacchino Del Regno
38*96fbc6c5SAngeloGioacchino Del Regno  interconnect-names:
39*96fbc6c5SAngeloGioacchino Del Regno    items:
40*96fbc6c5SAngeloGioacchino Del Regno      - const: cpu-cfg
41*96fbc6c5SAngeloGioacchino Del Regno      - const: video-mem
42*96fbc6c5SAngeloGioacchino Del Regno
43*96fbc6c5SAngeloGioacchino Del Regno  interrupts:
44*96fbc6c5SAngeloGioacchino Del Regno    maxItems: 1
45*96fbc6c5SAngeloGioacchino Del Regno
46*96fbc6c5SAngeloGioacchino Del Regno  iommus:
47*96fbc6c5SAngeloGioacchino Del Regno    maxItems: 20
48*96fbc6c5SAngeloGioacchino Del Regno
49*96fbc6c5SAngeloGioacchino Del Regno  memory-region:
50*96fbc6c5SAngeloGioacchino Del Regno    maxItems: 1
51*96fbc6c5SAngeloGioacchino Del Regno
52*96fbc6c5SAngeloGioacchino Del Regno  power-domains:
53*96fbc6c5SAngeloGioacchino Del Regno    maxItems: 1
54*96fbc6c5SAngeloGioacchino Del Regno
55*96fbc6c5SAngeloGioacchino Del Regno  video-decoder:
56*96fbc6c5SAngeloGioacchino Del Regno    type: object
57*96fbc6c5SAngeloGioacchino Del Regno
58*96fbc6c5SAngeloGioacchino Del Regno    properties:
59*96fbc6c5SAngeloGioacchino Del Regno      compatible:
60*96fbc6c5SAngeloGioacchino Del Regno        const: venus-decoder
61*96fbc6c5SAngeloGioacchino Del Regno
62*96fbc6c5SAngeloGioacchino Del Regno      clocks:
63*96fbc6c5SAngeloGioacchino Del Regno        maxItems: 1
64*96fbc6c5SAngeloGioacchino Del Regno
65*96fbc6c5SAngeloGioacchino Del Regno      clock-names:
66*96fbc6c5SAngeloGioacchino Del Regno        items:
67*96fbc6c5SAngeloGioacchino Del Regno          - const: vcodec0_core
68*96fbc6c5SAngeloGioacchino Del Regno
69*96fbc6c5SAngeloGioacchino Del Regno      power-domains:
70*96fbc6c5SAngeloGioacchino Del Regno        maxItems: 1
71*96fbc6c5SAngeloGioacchino Del Regno
72*96fbc6c5SAngeloGioacchino Del Regno    required:
73*96fbc6c5SAngeloGioacchino Del Regno      - compatible
74*96fbc6c5SAngeloGioacchino Del Regno      - clocks
75*96fbc6c5SAngeloGioacchino Del Regno      - clock-names
76*96fbc6c5SAngeloGioacchino Del Regno      - power-domains
77*96fbc6c5SAngeloGioacchino Del Regno
78*96fbc6c5SAngeloGioacchino Del Regno    additionalProperties: false
79*96fbc6c5SAngeloGioacchino Del Regno
80*96fbc6c5SAngeloGioacchino Del Regno  video-encoder:
81*96fbc6c5SAngeloGioacchino Del Regno    type: object
82*96fbc6c5SAngeloGioacchino Del Regno
83*96fbc6c5SAngeloGioacchino Del Regno    properties:
84*96fbc6c5SAngeloGioacchino Del Regno      compatible:
85*96fbc6c5SAngeloGioacchino Del Regno        const: venus-encoder
86*96fbc6c5SAngeloGioacchino Del Regno
87*96fbc6c5SAngeloGioacchino Del Regno      clocks:
88*96fbc6c5SAngeloGioacchino Del Regno        maxItems: 1
89*96fbc6c5SAngeloGioacchino Del Regno
90*96fbc6c5SAngeloGioacchino Del Regno      clock-names:
91*96fbc6c5SAngeloGioacchino Del Regno        items:
92*96fbc6c5SAngeloGioacchino Del Regno          - const: vcodec0_core
93*96fbc6c5SAngeloGioacchino Del Regno
94*96fbc6c5SAngeloGioacchino Del Regno      power-domains:
95*96fbc6c5SAngeloGioacchino Del Regno        maxItems: 1
96*96fbc6c5SAngeloGioacchino Del Regno
97*96fbc6c5SAngeloGioacchino Del Regno    required:
98*96fbc6c5SAngeloGioacchino Del Regno      - compatible
99*96fbc6c5SAngeloGioacchino Del Regno      - clocks
100*96fbc6c5SAngeloGioacchino Del Regno      - clock-names
101*96fbc6c5SAngeloGioacchino Del Regno      - power-domains
102*96fbc6c5SAngeloGioacchino Del Regno
103*96fbc6c5SAngeloGioacchino Del Regno    additionalProperties: false
104*96fbc6c5SAngeloGioacchino Del Regno
105*96fbc6c5SAngeloGioacchino Del Regno  video-firmware:
106*96fbc6c5SAngeloGioacchino Del Regno    type: object
107*96fbc6c5SAngeloGioacchino Del Regno
108*96fbc6c5SAngeloGioacchino Del Regno    description: |
109*96fbc6c5SAngeloGioacchino Del Regno      Firmware subnode is needed when the platform does not
110*96fbc6c5SAngeloGioacchino Del Regno      have TrustZone.
111*96fbc6c5SAngeloGioacchino Del Regno
112*96fbc6c5SAngeloGioacchino Del Regno    properties:
113*96fbc6c5SAngeloGioacchino Del Regno      iommus:
114*96fbc6c5SAngeloGioacchino Del Regno        maxItems: 1
115*96fbc6c5SAngeloGioacchino Del Regno
116*96fbc6c5SAngeloGioacchino Del Regno    required:
117*96fbc6c5SAngeloGioacchino Del Regno      - iommus
118*96fbc6c5SAngeloGioacchino Del Regno
119*96fbc6c5SAngeloGioacchino Del Regnorequired:
120*96fbc6c5SAngeloGioacchino Del Regno  - compatible
121*96fbc6c5SAngeloGioacchino Del Regno  - reg
122*96fbc6c5SAngeloGioacchino Del Regno  - clocks
123*96fbc6c5SAngeloGioacchino Del Regno  - clock-names
124*96fbc6c5SAngeloGioacchino Del Regno  - interrupts
125*96fbc6c5SAngeloGioacchino Del Regno  - iommus
126*96fbc6c5SAngeloGioacchino Del Regno  - memory-region
127*96fbc6c5SAngeloGioacchino Del Regno  - power-domains
128*96fbc6c5SAngeloGioacchino Del Regno  - video-decoder
129*96fbc6c5SAngeloGioacchino Del Regno  - video-encoder
130*96fbc6c5SAngeloGioacchino Del Regno
131*96fbc6c5SAngeloGioacchino Del RegnoadditionalProperties: false
132*96fbc6c5SAngeloGioacchino Del Regno
133*96fbc6c5SAngeloGioacchino Del Regnoexamples:
134*96fbc6c5SAngeloGioacchino Del Regno  - |
135*96fbc6c5SAngeloGioacchino Del Regno        #include <dt-bindings/clock/qcom,mmcc-sdm660.h>
136*96fbc6c5SAngeloGioacchino Del Regno        #include <dt-bindings/interrupt-controller/arm-gic.h>
137*96fbc6c5SAngeloGioacchino Del Regno
138*96fbc6c5SAngeloGioacchino Del Regno        video-codec@cc00000 {
139*96fbc6c5SAngeloGioacchino Del Regno                compatible = "qcom,sdm660-venus";
140*96fbc6c5SAngeloGioacchino Del Regno                reg = <0x0cc00000 0xff000>;
141*96fbc6c5SAngeloGioacchino Del Regno                clocks = <&mmcc VIDEO_CORE_CLK>,
142*96fbc6c5SAngeloGioacchino Del Regno                         <&mmcc VIDEO_AHB_CLK>,
143*96fbc6c5SAngeloGioacchino Del Regno                         <&mmcc VIDEO_AXI_CLK>,
144*96fbc6c5SAngeloGioacchino Del Regno                         <&mmcc THROTTLE_VIDEO_AXI_CLK>;
145*96fbc6c5SAngeloGioacchino Del Regno                clock-names = "core", "iface", "bus", "bus_throttle";
146*96fbc6c5SAngeloGioacchino Del Regno                interconnects = <&gnoc 0 &mnoc 13>,
147*96fbc6c5SAngeloGioacchino Del Regno                                <&mnoc 4 &bimc 5>;
148*96fbc6c5SAngeloGioacchino Del Regno                interconnect-names = "cpu-cfg", "video-mem";
149*96fbc6c5SAngeloGioacchino Del Regno                interrupts = <GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>;
150*96fbc6c5SAngeloGioacchino Del Regno                iommus = <&mmss_smmu 0x400>,
151*96fbc6c5SAngeloGioacchino Del Regno                         <&mmss_smmu 0x401>,
152*96fbc6c5SAngeloGioacchino Del Regno                         <&mmss_smmu 0x40a>,
153*96fbc6c5SAngeloGioacchino Del Regno                         <&mmss_smmu 0x407>,
154*96fbc6c5SAngeloGioacchino Del Regno                         <&mmss_smmu 0x40e>,
155*96fbc6c5SAngeloGioacchino Del Regno                         <&mmss_smmu 0x40f>,
156*96fbc6c5SAngeloGioacchino Del Regno                         <&mmss_smmu 0x408>,
157*96fbc6c5SAngeloGioacchino Del Regno                         <&mmss_smmu 0x409>,
158*96fbc6c5SAngeloGioacchino Del Regno                         <&mmss_smmu 0x40b>,
159*96fbc6c5SAngeloGioacchino Del Regno                         <&mmss_smmu 0x40c>,
160*96fbc6c5SAngeloGioacchino Del Regno                         <&mmss_smmu 0x40d>,
161*96fbc6c5SAngeloGioacchino Del Regno                         <&mmss_smmu 0x410>,
162*96fbc6c5SAngeloGioacchino Del Regno                         <&mmss_smmu 0x421>,
163*96fbc6c5SAngeloGioacchino Del Regno                         <&mmss_smmu 0x428>,
164*96fbc6c5SAngeloGioacchino Del Regno                         <&mmss_smmu 0x429>,
165*96fbc6c5SAngeloGioacchino Del Regno                         <&mmss_smmu 0x42b>,
166*96fbc6c5SAngeloGioacchino Del Regno                         <&mmss_smmu 0x42c>,
167*96fbc6c5SAngeloGioacchino Del Regno                         <&mmss_smmu 0x42d>,
168*96fbc6c5SAngeloGioacchino Del Regno                         <&mmss_smmu 0x411>,
169*96fbc6c5SAngeloGioacchino Del Regno                         <&mmss_smmu 0x431>;
170*96fbc6c5SAngeloGioacchino Del Regno                memory-region = <&venus_region>;
171*96fbc6c5SAngeloGioacchino Del Regno                power-domains = <&mmcc VENUS_GDSC>;
172*96fbc6c5SAngeloGioacchino Del Regno
173*96fbc6c5SAngeloGioacchino Del Regno                video-decoder {
174*96fbc6c5SAngeloGioacchino Del Regno                        compatible = "venus-decoder";
175*96fbc6c5SAngeloGioacchino Del Regno                        clocks = <&mmcc VIDEO_SUBCORE0_CLK>;
176*96fbc6c5SAngeloGioacchino Del Regno                        clock-names = "vcodec0_core";
177*96fbc6c5SAngeloGioacchino Del Regno                        power-domains = <&mmcc VENUS_CORE0_GDSC>;
178*96fbc6c5SAngeloGioacchino Del Regno                };
179*96fbc6c5SAngeloGioacchino Del Regno
180*96fbc6c5SAngeloGioacchino Del Regno                video-encoder {
181*96fbc6c5SAngeloGioacchino Del Regno                        compatible = "venus-encoder";
182*96fbc6c5SAngeloGioacchino Del Regno                        clocks = <&mmcc VIDEO_SUBCORE0_CLK>;
183*96fbc6c5SAngeloGioacchino Del Regno                        clock-names = "vcodec0_core";
184*96fbc6c5SAngeloGioacchino Del Regno                        power-domains = <&mmcc VENUS_CORE0_GDSC>;
185*96fbc6c5SAngeloGioacchino Del Regno                };
186*96fbc6c5SAngeloGioacchino Del Regno        };
187