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