xref: /linux/Documentation/devicetree/bindings/media/qcom,sc7280-venus.yaml (revision c532de5a67a70f8533d495f8f2aaa9a0491c3ad0)
1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/media/qcom,sc7280-venus.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm SC7280 Venus video encode and decode accelerators
8
9maintainers:
10  - Stanimir Varbanov <stanimir.varbanov@linaro.org>
11
12description: |
13  The Venus Iris2 IP is a video encode and decode accelerator present
14  on Qualcomm platforms
15
16allOf:
17  - $ref: qcom,venus-common.yaml#
18
19properties:
20  compatible:
21    const: qcom,sc7280-venus
22
23  power-domains:
24    minItems: 2
25    maxItems: 3
26
27  power-domain-names:
28    minItems: 2
29    items:
30      - const: venus
31      - const: vcodec0
32      - const: cx
33
34  clocks:
35    maxItems: 5
36
37  clock-names:
38    items:
39      - const: core
40      - const: bus
41      - const: iface
42      - const: vcodec_core
43      - const: vcodec_bus
44
45  iommus:
46    minItems: 1
47    maxItems: 2
48
49  interconnects:
50    maxItems: 2
51
52  interconnect-names:
53    items:
54      - const: cpu-cfg
55      - const: video-mem
56
57  operating-points-v2: true
58  opp-table:
59    type: object
60
61  video-decoder:
62    type: object
63
64    properties:
65      compatible:
66        const: venus-decoder
67
68    required:
69      - compatible
70
71    additionalProperties: false
72
73  video-encoder:
74    type: object
75
76    properties:
77      compatible:
78        const: venus-encoder
79
80    required:
81      - compatible
82
83    additionalProperties: false
84
85required:
86  - compatible
87  - power-domain-names
88  - iommus
89  - video-decoder
90  - video-encoder
91
92unevaluatedProperties: false
93
94examples:
95  - |
96    #include <dt-bindings/interrupt-controller/arm-gic.h>
97    #include <dt-bindings/clock/qcom,videocc-sc7280.h>
98    #include <dt-bindings/interconnect/qcom,sc7280.h>
99    #include <dt-bindings/power/qcom-rpmpd.h>
100
101    venus: video-codec@aa00000 {
102        compatible = "qcom,sc7280-venus";
103        reg = <0x0aa00000 0xd0600>;
104        interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
105
106        clocks = <&videocc VIDEO_CC_MVSC_CORE_CLK>,
107                 <&videocc VIDEO_CC_MVSC_CTL_AXI_CLK>,
108                 <&videocc VIDEO_CC_VENUS_AHB_CLK>,
109                 <&videocc VIDEO_CC_MVS0_CORE_CLK>,
110                 <&videocc VIDEO_CC_MVS0_AXI_CLK>;
111        clock-names = "core", "bus", "iface",
112                      "vcodec_core", "vcodec_bus";
113
114        power-domains = <&videocc MVSC_GDSC>,
115                        <&videocc MVS0_GDSC>,
116                        <&rpmhpd SC7280_CX>;
117        power-domain-names = "venus", "vcodec0", "cx";
118
119        interconnects = <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_VENUS_CFG 0>,
120                        <&mmss_noc MASTER_VIDEO_P0 0 &mc_virt SLAVE_EBI1 0>;
121        interconnect-names = "cpu-cfg", "video-mem";
122
123        iommus = <&apps_smmu 0x2180 0x20>,
124                 <&apps_smmu 0x2184 0x20>;
125
126        memory-region = <&video_mem>;
127
128        video-decoder {
129            compatible = "venus-decoder";
130        };
131
132        video-encoder {
133            compatible = "venus-encoder";
134        };
135
136        video-firmware {
137            iommus = <&apps_smmu 0x21a2 0x0>;
138        };
139    };
140