1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/media/qcom,sc7180-venus.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm SC7180 Venus video encode and decode accelerators
8
9maintainers:
10  - Stanimir Varbanov <stanimir.varbanov@linaro.org>
11
12description: |
13  The Venus 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,sc7180-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: iface
41      - const: bus
42      - const: vcodec0_core
43      - const: vcodec0_bus
44
45  iommus:
46    maxItems: 1
47
48  memory-region:
49    maxItems: 1
50
51  interconnects:
52    maxItems: 2
53
54  interconnect-names:
55    items:
56      - const: video-mem
57      - const: cpu-cfg
58
59  video-decoder:
60    type: object
61
62    properties:
63      compatible:
64        const: venus-decoder
65
66    required:
67      - compatible
68
69    additionalProperties: false
70
71  video-encoder:
72    type: object
73
74    properties:
75      compatible:
76        const: venus-encoder
77
78    required:
79      - compatible
80
81    additionalProperties: false
82
83required:
84  - compatible
85  - power-domain-names
86  - iommus
87  - video-decoder
88  - video-encoder
89
90unevaluatedProperties: false
91
92examples:
93  - |
94    #include <dt-bindings/interrupt-controller/arm-gic.h>
95    #include <dt-bindings/clock/qcom,videocc-sc7180.h>
96
97    venus: video-codec@aa00000 {
98        compatible = "qcom,sc7180-venus";
99        reg = <0x0aa00000 0xff000>;
100        interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
101        power-domains = <&videocc VENUS_GDSC>,
102                        <&videocc VCODEC0_GDSC>;
103        power-domain-names = "venus", "vcodec0";
104        clocks = <&videocc VIDEO_CC_VENUS_CTL_CORE_CLK>,
105                 <&videocc VIDEO_CC_VENUS_AHB_CLK>,
106                 <&videocc VIDEO_CC_VENUS_CTL_AXI_CLK>,
107                 <&videocc VIDEO_CC_VCODEC0_CORE_CLK>,
108                 <&videocc VIDEO_CC_VCODEC0_AXI_CLK>;
109        clock-names = "core", "iface", "bus",
110                      "vcodec0_core", "vcodec0_bus";
111        iommus = <&apps_smmu 0x0c00 0x60>;
112        memory-region = <&venus_mem>;
113
114        video-decoder {
115            compatible = "venus-decoder";
116        };
117
118        video-encoder {
119            compatible = "venus-encoder";
120        };
121    };
122