1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/media/qcom,sdm845-venus.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm SDM845 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,sdm845-venus
22
23  power-domains:
24    maxItems: 1
25
26  clocks:
27    maxItems: 3
28
29  clock-names:
30    items:
31      - const: core
32      - const: iface
33      - const: bus
34
35  iommus:
36    maxItems: 2
37
38  video-core0:
39    type: object
40
41    properties:
42      compatible:
43        const: venus-decoder
44
45      clocks:
46        maxItems: 2
47
48      clock-names:
49        items:
50          - const: core
51          - const: bus
52
53      power-domains:
54        maxItems: 1
55
56    required:
57      - compatible
58      - clocks
59      - clock-names
60      - power-domains
61
62    additionalProperties: false
63
64  video-core1:
65    type: object
66
67    properties:
68      compatible:
69        const: venus-encoder
70
71      clocks:
72        maxItems: 2
73
74      clock-names:
75        items:
76          - const: core
77          - const: bus
78
79      power-domains:
80        maxItems: 1
81
82    required:
83      - compatible
84      - clocks
85      - clock-names
86      - power-domains
87
88    additionalProperties: false
89
90required:
91  - compatible
92  - iommus
93  - video-core0
94  - video-core1
95
96unevaluatedProperties: false
97
98examples:
99  - |
100    #include <dt-bindings/interrupt-controller/arm-gic.h>
101    #include <dt-bindings/clock/qcom,videocc-sdm845.h>
102
103    video-codec@aa00000 {
104        compatible = "qcom,sdm845-venus";
105        reg = <0x0aa00000 0xff000>;
106        interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
107        clocks = <&videocc VIDEO_CC_VENUS_CTL_CORE_CLK>,
108                 <&videocc VIDEO_CC_VENUS_AHB_CLK>,
109                 <&videocc VIDEO_CC_VENUS_CTL_AXI_CLK>;
110        clock-names = "core", "iface", "bus";
111        power-domains = <&videocc VENUS_GDSC>;
112        iommus = <&apps_smmu 0x10a0 0x8>,
113                 <&apps_smmu 0x10b0 0x0>;
114        memory-region = <&venus_mem>;
115
116        video-core0 {
117            compatible = "venus-decoder";
118            clocks = <&videocc VIDEO_CC_VCODEC0_CORE_CLK>,
119                     <&videocc VIDEO_CC_VCODEC0_AXI_CLK>;
120            clock-names = "core", "bus";
121            power-domains = <&videocc VCODEC0_GDSC>;
122        };
123
124        video-core1 {
125            compatible = "venus-encoder";
126            clocks = <&videocc VIDEO_CC_VCODEC1_CORE_CLK>,
127                     <&videocc VIDEO_CC_VCODEC1_AXI_CLK>;
128            clock-names = "core", "bus";
129            power-domains = <&videocc VCODEC1_GDSC>;
130        };
131    };
132