1146b5bbfSStanimir Varbanov# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2146b5bbfSStanimir Varbanov
3146b5bbfSStanimir Varbanov%YAML 1.2
4146b5bbfSStanimir Varbanov---
5146b5bbfSStanimir Varbanov$id: "http://devicetree.org/schemas/media/qcom,msm8916-venus.yaml#"
6146b5bbfSStanimir Varbanov$schema: "http://devicetree.org/meta-schemas/core.yaml#"
7146b5bbfSStanimir Varbanov
8146b5bbfSStanimir Varbanovtitle: Qualcomm Venus video encode and decode accelerators
9146b5bbfSStanimir Varbanov
10146b5bbfSStanimir Varbanovmaintainers:
11146b5bbfSStanimir Varbanov  - Stanimir Varbanov <stanimir.varbanov@linaro.org>
12146b5bbfSStanimir Varbanov
13146b5bbfSStanimir Varbanovdescription: |
14146b5bbfSStanimir Varbanov  The Venus IP is a video encode and decode accelerator present
15146b5bbfSStanimir Varbanov  on Qualcomm platforms
16146b5bbfSStanimir Varbanov
17146b5bbfSStanimir Varbanovproperties:
18146b5bbfSStanimir Varbanov  compatible:
19146b5bbfSStanimir Varbanov    const: qcom,msm8916-venus
20146b5bbfSStanimir Varbanov
21146b5bbfSStanimir Varbanov  reg:
22146b5bbfSStanimir Varbanov    maxItems: 1
23146b5bbfSStanimir Varbanov
24146b5bbfSStanimir Varbanov  interrupts:
25146b5bbfSStanimir Varbanov    maxItems: 1
26146b5bbfSStanimir Varbanov
27146b5bbfSStanimir Varbanov  power-domains:
28146b5bbfSStanimir Varbanov    maxItems: 1
29146b5bbfSStanimir Varbanov
30146b5bbfSStanimir Varbanov  clocks:
31146b5bbfSStanimir Varbanov    maxItems: 3
32146b5bbfSStanimir Varbanov
33146b5bbfSStanimir Varbanov  clock-names:
34146b5bbfSStanimir Varbanov    items:
35146b5bbfSStanimir Varbanov      - const: core
36146b5bbfSStanimir Varbanov      - const: iface
37146b5bbfSStanimir Varbanov      - const: bus
38146b5bbfSStanimir Varbanov
39146b5bbfSStanimir Varbanov  iommus:
40146b5bbfSStanimir Varbanov    maxItems: 1
41146b5bbfSStanimir Varbanov
42146b5bbfSStanimir Varbanov  memory-region:
43146b5bbfSStanimir Varbanov    maxItems: 1
44146b5bbfSStanimir Varbanov
45146b5bbfSStanimir Varbanov  video-decoder:
46146b5bbfSStanimir Varbanov    type: object
47146b5bbfSStanimir Varbanov
48146b5bbfSStanimir Varbanov    properties:
49146b5bbfSStanimir Varbanov      compatible:
50146b5bbfSStanimir Varbanov        const: "venus-decoder"
51146b5bbfSStanimir Varbanov
52146b5bbfSStanimir Varbanov    required:
53146b5bbfSStanimir Varbanov      - compatible
54146b5bbfSStanimir Varbanov
55146b5bbfSStanimir Varbanov    additionalProperties: false
56146b5bbfSStanimir Varbanov
57146b5bbfSStanimir Varbanov  video-encoder:
58146b5bbfSStanimir Varbanov    type: object
59146b5bbfSStanimir Varbanov
60146b5bbfSStanimir Varbanov    properties:
61146b5bbfSStanimir Varbanov      compatible:
62146b5bbfSStanimir Varbanov        const: "venus-encoder"
63146b5bbfSStanimir Varbanov
64146b5bbfSStanimir Varbanov    required:
65146b5bbfSStanimir Varbanov      - compatible
66146b5bbfSStanimir Varbanov
67146b5bbfSStanimir Varbanov    additionalProperties: false
68146b5bbfSStanimir Varbanov
69146b5bbfSStanimir Varbanov  video-firmware:
70146b5bbfSStanimir Varbanov    type: object
71146b5bbfSStanimir Varbanov
72146b5bbfSStanimir Varbanov    description: |
73146b5bbfSStanimir Varbanov      Firmware subnode is needed when the platform does not
74146b5bbfSStanimir Varbanov      have TrustZone.
75146b5bbfSStanimir Varbanov
76146b5bbfSStanimir Varbanov    properties:
77146b5bbfSStanimir Varbanov      iommus:
78146b5bbfSStanimir Varbanov        maxItems: 1
79146b5bbfSStanimir Varbanov
80146b5bbfSStanimir Varbanov    required:
81146b5bbfSStanimir Varbanov      - iommus
82146b5bbfSStanimir Varbanov
83146b5bbfSStanimir Varbanovrequired:
84146b5bbfSStanimir Varbanov  - compatible
85146b5bbfSStanimir Varbanov  - reg
86146b5bbfSStanimir Varbanov  - interrupts
87146b5bbfSStanimir Varbanov  - power-domains
88146b5bbfSStanimir Varbanov  - clocks
89146b5bbfSStanimir Varbanov  - clock-names
90146b5bbfSStanimir Varbanov  - iommus
91146b5bbfSStanimir Varbanov  - memory-region
92146b5bbfSStanimir Varbanov  - video-decoder
93146b5bbfSStanimir Varbanov  - video-encoder
94146b5bbfSStanimir Varbanov
955be478f9SRob HerringadditionalProperties: false
965be478f9SRob Herring
97146b5bbfSStanimir Varbanovexamples:
98146b5bbfSStanimir Varbanov  - |
99146b5bbfSStanimir Varbanov        #include <dt-bindings/interrupt-controller/arm-gic.h>
100146b5bbfSStanimir Varbanov        #include <dt-bindings/clock/qcom,gcc-msm8916.h>
101146b5bbfSStanimir Varbanov
102146b5bbfSStanimir Varbanov        video-codec@1d00000 {
103146b5bbfSStanimir Varbanov                compatible = "qcom,msm8916-venus";
104146b5bbfSStanimir Varbanov                reg = <0x01d00000 0xff000>;
105146b5bbfSStanimir Varbanov                interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
106146b5bbfSStanimir Varbanov                clocks = <&gcc GCC_VENUS0_VCODEC0_CLK>,
107146b5bbfSStanimir Varbanov                        <&gcc GCC_VENUS0_AHB_CLK>,
108146b5bbfSStanimir Varbanov                        <&gcc GCC_VENUS0_AXI_CLK>;
109146b5bbfSStanimir Varbanov                clock-names = "core", "iface", "bus";
110146b5bbfSStanimir Varbanov                power-domains = <&gcc VENUS_GDSC>;
111146b5bbfSStanimir Varbanov                iommus = <&apps_iommu 5>;
112146b5bbfSStanimir Varbanov                memory-region = <&venus_mem>;
113146b5bbfSStanimir Varbanov
114146b5bbfSStanimir Varbanov                video-decoder {
115146b5bbfSStanimir Varbanov                        compatible = "venus-decoder";
116146b5bbfSStanimir Varbanov                };
117146b5bbfSStanimir Varbanov
118146b5bbfSStanimir Varbanov                video-encoder {
119146b5bbfSStanimir Varbanov                        compatible = "venus-encoder";
120146b5bbfSStanimir Varbanov                };
121146b5bbfSStanimir Varbanov        };
122