xref: /linux/Documentation/devicetree/bindings/media/qcom,sdm845-venus.yaml (revision 49a3797aa51623f9891a832eff9dea89fb00c1c1)
1*49a3797aSStanimir Varbanov# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2*49a3797aSStanimir Varbanov
3*49a3797aSStanimir Varbanov%YAML 1.2
4*49a3797aSStanimir Varbanov---
5*49a3797aSStanimir Varbanov$id: "http://devicetree.org/schemas/media/qcom,sdm845-venus.yaml#"
6*49a3797aSStanimir Varbanov$schema: "http://devicetree.org/meta-schemas/core.yaml#"
7*49a3797aSStanimir Varbanov
8*49a3797aSStanimir Varbanovtitle: Qualcomm Venus video encode and decode accelerators
9*49a3797aSStanimir Varbanov
10*49a3797aSStanimir Varbanovmaintainers:
11*49a3797aSStanimir Varbanov  - Stanimir Varbanov <stanimir.varbanov@linaro.org>
12*49a3797aSStanimir Varbanov
13*49a3797aSStanimir Varbanovdescription: |
14*49a3797aSStanimir Varbanov  The Venus IP is a video encode and decode accelerator present
15*49a3797aSStanimir Varbanov  on Qualcomm platforms
16*49a3797aSStanimir Varbanov
17*49a3797aSStanimir Varbanovproperties:
18*49a3797aSStanimir Varbanov  compatible:
19*49a3797aSStanimir Varbanov    const: qcom,sdm845-venus
20*49a3797aSStanimir Varbanov
21*49a3797aSStanimir Varbanov  reg:
22*49a3797aSStanimir Varbanov    maxItems: 1
23*49a3797aSStanimir Varbanov
24*49a3797aSStanimir Varbanov  interrupts:
25*49a3797aSStanimir Varbanov    maxItems: 1
26*49a3797aSStanimir Varbanov
27*49a3797aSStanimir Varbanov  power-domains:
28*49a3797aSStanimir Varbanov    maxItems: 1
29*49a3797aSStanimir Varbanov
30*49a3797aSStanimir Varbanov  clocks:
31*49a3797aSStanimir Varbanov    maxItems: 3
32*49a3797aSStanimir Varbanov
33*49a3797aSStanimir Varbanov  clock-names:
34*49a3797aSStanimir Varbanov    items:
35*49a3797aSStanimir Varbanov      - const: core
36*49a3797aSStanimir Varbanov      - const: iface
37*49a3797aSStanimir Varbanov      - const: bus
38*49a3797aSStanimir Varbanov
39*49a3797aSStanimir Varbanov  iommus:
40*49a3797aSStanimir Varbanov    maxItems: 2
41*49a3797aSStanimir Varbanov
42*49a3797aSStanimir Varbanov  memory-region:
43*49a3797aSStanimir Varbanov    maxItems: 1
44*49a3797aSStanimir Varbanov
45*49a3797aSStanimir Varbanov  video-core0:
46*49a3797aSStanimir Varbanov    type: object
47*49a3797aSStanimir Varbanov
48*49a3797aSStanimir Varbanov    properties:
49*49a3797aSStanimir Varbanov      compatible:
50*49a3797aSStanimir Varbanov        const: venus-decoder
51*49a3797aSStanimir Varbanov
52*49a3797aSStanimir Varbanov      clocks:
53*49a3797aSStanimir Varbanov        maxItems: 2
54*49a3797aSStanimir Varbanov
55*49a3797aSStanimir Varbanov      clock-names:
56*49a3797aSStanimir Varbanov        items:
57*49a3797aSStanimir Varbanov          - const: core
58*49a3797aSStanimir Varbanov          - const: bus
59*49a3797aSStanimir Varbanov
60*49a3797aSStanimir Varbanov      power-domains:
61*49a3797aSStanimir Varbanov        maxItems: 1
62*49a3797aSStanimir Varbanov
63*49a3797aSStanimir Varbanov    required:
64*49a3797aSStanimir Varbanov      - compatible
65*49a3797aSStanimir Varbanov      - clocks
66*49a3797aSStanimir Varbanov      - clock-names
67*49a3797aSStanimir Varbanov      - power-domains
68*49a3797aSStanimir Varbanov
69*49a3797aSStanimir Varbanov    additionalProperties: false
70*49a3797aSStanimir Varbanov
71*49a3797aSStanimir Varbanov  video-core1:
72*49a3797aSStanimir Varbanov    type: object
73*49a3797aSStanimir Varbanov
74*49a3797aSStanimir Varbanov    properties:
75*49a3797aSStanimir Varbanov      compatible:
76*49a3797aSStanimir Varbanov        const: venus-encoder
77*49a3797aSStanimir Varbanov
78*49a3797aSStanimir Varbanov      clocks:
79*49a3797aSStanimir Varbanov        maxItems: 2
80*49a3797aSStanimir Varbanov
81*49a3797aSStanimir Varbanov      clock-names:
82*49a3797aSStanimir Varbanov        items:
83*49a3797aSStanimir Varbanov          - const: core
84*49a3797aSStanimir Varbanov          - const: bus
85*49a3797aSStanimir Varbanov
86*49a3797aSStanimir Varbanov      power-domains:
87*49a3797aSStanimir Varbanov        maxItems: 1
88*49a3797aSStanimir Varbanov
89*49a3797aSStanimir Varbanov    required:
90*49a3797aSStanimir Varbanov      - compatible
91*49a3797aSStanimir Varbanov      - clocks
92*49a3797aSStanimir Varbanov      - clock-names
93*49a3797aSStanimir Varbanov      - power-domains
94*49a3797aSStanimir Varbanov
95*49a3797aSStanimir Varbanov    additionalProperties: false
96*49a3797aSStanimir Varbanov
97*49a3797aSStanimir Varbanov  video-firmware:
98*49a3797aSStanimir Varbanov    type: object
99*49a3797aSStanimir Varbanov
100*49a3797aSStanimir Varbanov    description: |
101*49a3797aSStanimir Varbanov      Firmware subnode is needed when the platform does not
102*49a3797aSStanimir Varbanov      have TrustZone.
103*49a3797aSStanimir Varbanov
104*49a3797aSStanimir Varbanov    properties:
105*49a3797aSStanimir Varbanov      iommus:
106*49a3797aSStanimir Varbanov        maxItems: 1
107*49a3797aSStanimir Varbanov
108*49a3797aSStanimir Varbanov    required:
109*49a3797aSStanimir Varbanov      - iommus
110*49a3797aSStanimir Varbanov
111*49a3797aSStanimir Varbanovrequired:
112*49a3797aSStanimir Varbanov  - compatible
113*49a3797aSStanimir Varbanov  - reg
114*49a3797aSStanimir Varbanov  - interrupts
115*49a3797aSStanimir Varbanov  - power-domains
116*49a3797aSStanimir Varbanov  - clocks
117*49a3797aSStanimir Varbanov  - clock-names
118*49a3797aSStanimir Varbanov  - iommus
119*49a3797aSStanimir Varbanov  - memory-region
120*49a3797aSStanimir Varbanov  - video-core0
121*49a3797aSStanimir Varbanov  - video-core1
122*49a3797aSStanimir Varbanov
123*49a3797aSStanimir Varbanovexamples:
124*49a3797aSStanimir Varbanov  - |
125*49a3797aSStanimir Varbanov        #include <dt-bindings/interrupt-controller/arm-gic.h>
126*49a3797aSStanimir Varbanov        #include <dt-bindings/clock/qcom,videocc-sdm845.h>
127*49a3797aSStanimir Varbanov
128*49a3797aSStanimir Varbanov        video-codec@aa00000 {
129*49a3797aSStanimir Varbanov                compatible = "qcom,sdm845-venus";
130*49a3797aSStanimir Varbanov                reg = <0 0x0aa00000 0 0xff000>;
131*49a3797aSStanimir Varbanov                interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
132*49a3797aSStanimir Varbanov                clocks = <&videocc VIDEO_CC_VENUS_CTL_CORE_CLK>,
133*49a3797aSStanimir Varbanov                         <&videocc VIDEO_CC_VENUS_AHB_CLK>,
134*49a3797aSStanimir Varbanov                         <&videocc VIDEO_CC_VENUS_CTL_AXI_CLK>;
135*49a3797aSStanimir Varbanov                clock-names = "core", "iface", "bus";
136*49a3797aSStanimir Varbanov                power-domains = <&videocc VENUS_GDSC>;
137*49a3797aSStanimir Varbanov                iommus = <&apps_smmu 0x10a0 0x8>,
138*49a3797aSStanimir Varbanov                         <&apps_smmu 0x10b0 0x0>;
139*49a3797aSStanimir Varbanov                memory-region = <&venus_mem>;
140*49a3797aSStanimir Varbanov
141*49a3797aSStanimir Varbanov                video-core0 {
142*49a3797aSStanimir Varbanov                        compatible = "venus-decoder";
143*49a3797aSStanimir Varbanov                        clocks = <&videocc VIDEO_CC_VCODEC0_CORE_CLK>,
144*49a3797aSStanimir Varbanov                                 <&videocc VIDEO_CC_VCODEC0_AXI_CLK>;
145*49a3797aSStanimir Varbanov                        clock-names = "core", "bus";
146*49a3797aSStanimir Varbanov                        power-domains = <&videocc VCODEC0_GDSC>;
147*49a3797aSStanimir Varbanov                };
148*49a3797aSStanimir Varbanov
149*49a3797aSStanimir Varbanov                video-core1 {
150*49a3797aSStanimir Varbanov                        compatible = "venus-encoder";
151*49a3797aSStanimir Varbanov                        clocks = <&videocc VIDEO_CC_VCODEC1_CORE_CLK>,
152*49a3797aSStanimir Varbanov                                 <&videocc VIDEO_CC_VCODEC1_AXI_CLK>;
153*49a3797aSStanimir Varbanov                        clock-names = "core", "bus";
154*49a3797aSStanimir Varbanov                        power-domains = <&videocc VCODEC1_GDSC>;
155*49a3797aSStanimir Varbanov                };
156*49a3797aSStanimir Varbanov        };
157