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