xref: /linux/Documentation/devicetree/bindings/media/qcom,msm8996-venus.yaml (revision f8cc21d454c50157a528c900b60aa9588b4066b3)
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
16*f8cc21d4SKrzysztof KozlowskiallOf:
17*f8cc21d4SKrzysztof Kozlowski  - $ref: qcom,venus-common.yaml#
18*f8cc21d4SKrzysztof Kozlowski
19df7acc7eSStanimir Varbanovproperties:
20df7acc7eSStanimir Varbanov  compatible:
21df7acc7eSStanimir Varbanov    const: qcom,msm8996-venus
22df7acc7eSStanimir Varbanov
23df7acc7eSStanimir Varbanov  power-domains:
24df7acc7eSStanimir Varbanov    maxItems: 1
25df7acc7eSStanimir Varbanov
26df7acc7eSStanimir Varbanov  clocks:
27df7acc7eSStanimir Varbanov    maxItems: 4
28df7acc7eSStanimir Varbanov
29df7acc7eSStanimir Varbanov  clock-names:
30df7acc7eSStanimir Varbanov    items:
31df7acc7eSStanimir Varbanov      - const: core
32df7acc7eSStanimir Varbanov      - const: iface
33df7acc7eSStanimir Varbanov      - const: bus
34df7acc7eSStanimir Varbanov      - const: mbus
35df7acc7eSStanimir Varbanov
36df7acc7eSStanimir Varbanov  iommus:
37df7acc7eSStanimir Varbanov    maxItems: 20
38df7acc7eSStanimir Varbanov
39df7acc7eSStanimir Varbanov  video-decoder:
40df7acc7eSStanimir Varbanov    type: object
41df7acc7eSStanimir Varbanov
42df7acc7eSStanimir Varbanov    properties:
43df7acc7eSStanimir Varbanov      compatible:
44df7acc7eSStanimir Varbanov        const: venus-decoder
45df7acc7eSStanimir Varbanov
46df7acc7eSStanimir Varbanov      clocks:
47df7acc7eSStanimir Varbanov        maxItems: 1
48df7acc7eSStanimir Varbanov
49df7acc7eSStanimir Varbanov      clock-names:
50df7acc7eSStanimir Varbanov        items:
51df7acc7eSStanimir Varbanov          - const: core
52df7acc7eSStanimir Varbanov
53df7acc7eSStanimir Varbanov      power-domains:
54df7acc7eSStanimir Varbanov        maxItems: 1
55df7acc7eSStanimir Varbanov
56df7acc7eSStanimir Varbanov    required:
57df7acc7eSStanimir Varbanov      - compatible
58df7acc7eSStanimir Varbanov      - clocks
59df7acc7eSStanimir Varbanov      - clock-names
60df7acc7eSStanimir Varbanov      - power-domains
61df7acc7eSStanimir Varbanov
62df7acc7eSStanimir Varbanov    additionalProperties: false
63df7acc7eSStanimir Varbanov
64df7acc7eSStanimir Varbanov  video-encoder:
65df7acc7eSStanimir Varbanov    type: object
66df7acc7eSStanimir Varbanov
67df7acc7eSStanimir Varbanov    properties:
68df7acc7eSStanimir Varbanov      compatible:
69df7acc7eSStanimir Varbanov        const: venus-encoder
70df7acc7eSStanimir Varbanov
71df7acc7eSStanimir Varbanov      clocks:
72df7acc7eSStanimir Varbanov        maxItems: 1
73df7acc7eSStanimir Varbanov
74df7acc7eSStanimir Varbanov      clock-names:
75df7acc7eSStanimir Varbanov        items:
76df7acc7eSStanimir Varbanov          - const: core
77df7acc7eSStanimir Varbanov
78df7acc7eSStanimir Varbanov      power-domains:
79df7acc7eSStanimir Varbanov        maxItems: 1
80df7acc7eSStanimir Varbanov
81df7acc7eSStanimir Varbanov    required:
82df7acc7eSStanimir Varbanov      - compatible
83df7acc7eSStanimir Varbanov      - clocks
84df7acc7eSStanimir Varbanov      - clock-names
85df7acc7eSStanimir Varbanov      - power-domains
86df7acc7eSStanimir Varbanov
87df7acc7eSStanimir Varbanov    additionalProperties: false
88df7acc7eSStanimir Varbanov
89df7acc7eSStanimir Varbanovrequired:
90df7acc7eSStanimir Varbanov  - compatible
91df7acc7eSStanimir Varbanov  - iommus
92df7acc7eSStanimir Varbanov  - video-decoder
93df7acc7eSStanimir Varbanov  - video-encoder
94df7acc7eSStanimir Varbanov
95*f8cc21d4SKrzysztof KozlowskiunevaluatedProperties: false
965be478f9SRob Herring
97df7acc7eSStanimir Varbanovexamples:
98df7acc7eSStanimir Varbanov  - |
99df7acc7eSStanimir Varbanov    #include <dt-bindings/interrupt-controller/arm-gic.h>
100df7acc7eSStanimir Varbanov    #include <dt-bindings/clock/qcom,mmcc-msm8996.h>
101df7acc7eSStanimir Varbanov
102df7acc7eSStanimir Varbanov    video-codec@c00000 {
103df7acc7eSStanimir Varbanov        compatible = "qcom,msm8996-venus";
104df7acc7eSStanimir Varbanov        reg = <0x00c00000 0xff000>;
105df7acc7eSStanimir Varbanov        interrupts = <GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>;
106df7acc7eSStanimir Varbanov        clocks = <&mmcc VIDEO_CORE_CLK>,
107df7acc7eSStanimir Varbanov                 <&mmcc VIDEO_AHB_CLK>,
108df7acc7eSStanimir Varbanov                 <&mmcc VIDEO_AXI_CLK>,
109df7acc7eSStanimir Varbanov                 <&mmcc VIDEO_MAXI_CLK>;
110df7acc7eSStanimir Varbanov        clock-names = "core", "iface", "bus", "mbus";
111df7acc7eSStanimir Varbanov        power-domains = <&mmcc VENUS_GDSC>;
112df7acc7eSStanimir Varbanov        iommus =  <&venus_smmu 0x00>,
113df7acc7eSStanimir Varbanov                  <&venus_smmu 0x01>,
114df7acc7eSStanimir Varbanov                  <&venus_smmu 0x0a>,
115df7acc7eSStanimir Varbanov                  <&venus_smmu 0x07>,
116df7acc7eSStanimir Varbanov                  <&venus_smmu 0x0e>,
117df7acc7eSStanimir Varbanov                  <&venus_smmu 0x0f>,
118df7acc7eSStanimir Varbanov                  <&venus_smmu 0x08>,
119df7acc7eSStanimir Varbanov                  <&venus_smmu 0x09>,
120df7acc7eSStanimir Varbanov                  <&venus_smmu 0x0b>,
121df7acc7eSStanimir Varbanov                  <&venus_smmu 0x0c>,
122df7acc7eSStanimir Varbanov                  <&venus_smmu 0x0d>,
123df7acc7eSStanimir Varbanov                  <&venus_smmu 0x10>,
124df7acc7eSStanimir Varbanov                  <&venus_smmu 0x11>,
125df7acc7eSStanimir Varbanov                  <&venus_smmu 0x21>,
126df7acc7eSStanimir Varbanov                  <&venus_smmu 0x28>,
127df7acc7eSStanimir Varbanov                  <&venus_smmu 0x29>,
128df7acc7eSStanimir Varbanov                  <&venus_smmu 0x2b>,
129df7acc7eSStanimir Varbanov                  <&venus_smmu 0x2c>,
130df7acc7eSStanimir Varbanov                  <&venus_smmu 0x2d>,
131df7acc7eSStanimir Varbanov                  <&venus_smmu 0x31>;
132df7acc7eSStanimir Varbanov        memory-region = <&venus_mem>;
133df7acc7eSStanimir Varbanov
134df7acc7eSStanimir Varbanov        video-decoder {
135df7acc7eSStanimir Varbanov            compatible = "venus-decoder";
136df7acc7eSStanimir Varbanov            clocks = <&mmcc VIDEO_SUBCORE0_CLK>;
137df7acc7eSStanimir Varbanov            clock-names = "core";
138df7acc7eSStanimir Varbanov            power-domains = <&mmcc VENUS_CORE0_GDSC>;
139df7acc7eSStanimir Varbanov        };
140df7acc7eSStanimir Varbanov
141df7acc7eSStanimir Varbanov        video-encoder {
142df7acc7eSStanimir Varbanov            compatible = "venus-encoder";
143df7acc7eSStanimir Varbanov            clocks = <&mmcc VIDEO_SUBCORE1_CLK>;
144df7acc7eSStanimir Varbanov            clock-names = "core";
145df7acc7eSStanimir Varbanov            power-domains = <&mmcc VENUS_CORE1_GDSC>;
146df7acc7eSStanimir Varbanov        };
147df7acc7eSStanimir Varbanov    };
148