xref: /freebsd/sys/contrib/device-tree/Bindings/media/qcom,sc7280-venus.yaml (revision 535af610a4fdace6d50960c0ad9be0597eea7a1b)
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    maxItems: 2
47
48  interconnects:
49    maxItems: 2
50
51  interconnect-names:
52    items:
53      - const: cpu-cfg
54      - const: video-mem
55
56  operating-points-v2: true
57  opp-table:
58    type: object
59
60  video-decoder:
61    type: object
62
63    properties:
64      compatible:
65        const: venus-decoder
66
67    required:
68      - compatible
69
70    additionalProperties: false
71
72  video-encoder:
73    type: object
74
75    properties:
76      compatible:
77        const: venus-encoder
78
79    required:
80      - compatible
81
82    additionalProperties: false
83
84required:
85  - compatible
86  - power-domain-names
87  - iommus
88  - video-decoder
89  - video-encoder
90
91unevaluatedProperties: false
92
93examples:
94  - |
95    #include <dt-bindings/interrupt-controller/arm-gic.h>
96    #include <dt-bindings/clock/qcom,videocc-sc7280.h>
97    #include <dt-bindings/interconnect/qcom,sc7280.h>
98    #include <dt-bindings/power/qcom-rpmpd.h>
99
100    venus: video-codec@aa00000 {
101        compatible = "qcom,sc7280-venus";
102        reg = <0x0aa00000 0xd0600>;
103        interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
104
105        clocks = <&videocc VIDEO_CC_MVSC_CORE_CLK>,
106                 <&videocc VIDEO_CC_MVSC_CTL_AXI_CLK>,
107                 <&videocc VIDEO_CC_VENUS_AHB_CLK>,
108                 <&videocc VIDEO_CC_MVS0_CORE_CLK>,
109                 <&videocc VIDEO_CC_MVS0_AXI_CLK>;
110        clock-names = "core", "bus", "iface",
111                      "vcodec_core", "vcodec_bus";
112
113        power-domains = <&videocc MVSC_GDSC>,
114                        <&videocc MVS0_GDSC>,
115                        <&rpmhpd SC7280_CX>;
116        power-domain-names = "venus", "vcodec0", "cx";
117
118        interconnects = <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_VENUS_CFG 0>,
119                        <&mmss_noc MASTER_VIDEO_P0 0 &mc_virt SLAVE_EBI1 0>;
120        interconnect-names = "cpu-cfg", "video-mem";
121
122        iommus = <&apps_smmu 0x2180 0x20>,
123                 <&apps_smmu 0x2184 0x20>;
124
125        memory-region = <&video_mem>;
126
127        video-decoder {
128            compatible = "venus-decoder";
129        };
130
131        video-encoder {
132            compatible = "venus-encoder";
133        };
134
135        video-firmware {
136            iommus = <&apps_smmu 0x21a2 0x0>;
137        };
138    };
139