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