0001 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
0002
0003 %YAML 1.2
0004 ---
0005 $id: "http://devicetree.org/schemas/media/qcom,sm8250-venus.yaml#"
0006 $schema: "http://devicetree.org/meta-schemas/core.yaml#"
0007
0008 title: Qualcomm Venus video encode and decode accelerators
0009
0010 maintainers:
0011 - Stanimir Varbanov <stanimir.varbanov@linaro.org>
0012
0013 description: |
0014 The Venus IP is a video encode and decode accelerator present
0015 on Qualcomm platforms
0016
0017 properties:
0018 compatible:
0019 const: qcom,sm8250-venus
0020
0021 reg:
0022 maxItems: 1
0023
0024 interrupts:
0025 maxItems: 1
0026
0027 power-domains:
0028 minItems: 2
0029 maxItems: 3
0030
0031 power-domain-names:
0032 minItems: 2
0033 items:
0034 - const: venus
0035 - const: vcodec0
0036 - const: mx
0037
0038 clocks:
0039 maxItems: 3
0040
0041 clock-names:
0042 items:
0043 - const: iface
0044 - const: core
0045 - const: vcodec0_core
0046
0047 iommus:
0048 maxItems: 1
0049
0050 memory-region:
0051 maxItems: 1
0052
0053 interconnects:
0054 maxItems: 2
0055
0056 interconnect-names:
0057 items:
0058 - const: cpu-cfg
0059 - const: video-mem
0060
0061 resets:
0062 maxItems: 2
0063
0064 reset-names:
0065 items:
0066 - const: bus
0067 - const: core
0068
0069 video-decoder:
0070 type: object
0071
0072 properties:
0073 compatible:
0074 const: venus-decoder
0075
0076 required:
0077 - compatible
0078
0079 additionalProperties: false
0080
0081 video-encoder:
0082 type: object
0083
0084 properties:
0085 compatible:
0086 const: venus-encoder
0087
0088 required:
0089 - compatible
0090
0091 additionalProperties: false
0092
0093 video-firmware:
0094 type: object
0095
0096 description: |
0097 Firmware subnode is needed when the platform does not
0098 have TrustZone.
0099
0100 properties:
0101 iommus:
0102 maxItems: 1
0103
0104 required:
0105 - iommus
0106
0107 required:
0108 - compatible
0109 - reg
0110 - interrupts
0111 - power-domains
0112 - power-domain-names
0113 - clocks
0114 - clock-names
0115 - interconnects
0116 - interconnect-names
0117 - iommus
0118 - memory-region
0119 - resets
0120 - reset-names
0121 - video-decoder
0122 - video-encoder
0123
0124 additionalProperties: false
0125
0126 examples:
0127 - |
0128 #include <dt-bindings/interrupt-controller/arm-gic.h>
0129 #include <dt-bindings/clock/qcom,videocc-sm8250.h>
0130 #include <dt-bindings/interconnect/qcom,sm8250.h>
0131 #include <dt-bindings/clock/qcom,gcc-sm8250.h>
0132 #include <dt-bindings/power/qcom-rpmpd.h>
0133
0134 venus: video-codec@aa00000 {
0135 compatible = "qcom,sm8250-venus";
0136 reg = <0x0aa00000 0xff000>;
0137 interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
0138 power-domains = <&videocc MVS0C_GDSC>,
0139 <&videocc MVS0_GDSC>,
0140 <&rpmhpd SM8250_MX>;
0141 power-domain-names = "venus", "vcodec0", "mx";
0142
0143 clocks = <&gcc GCC_VIDEO_AXI0_CLK>,
0144 <&videocc VIDEO_CC_MVS0C_CLK>,
0145 <&videocc VIDEO_CC_MVS0_CLK>;
0146 clock-names = "iface", "core", "vcodec0_core";
0147
0148 interconnects = <&gem_noc MASTER_AMPSS_M0 &config_noc SLAVE_VENUS_CFG>,
0149 <&mmss_noc MASTER_VIDEO_P0 &mc_virt SLAVE_EBI_CH0>;
0150 interconnect-names = "cpu-cfg", "video-mem";
0151
0152 iommus = <&apps_smmu 0x2100 0x0400>;
0153 memory-region = <&video_mem>;
0154
0155 resets = <&gcc GCC_VIDEO_AXI0_CLK_ARES>,
0156 <&videocc VIDEO_CC_MVS0C_CLK_ARES>;
0157 reset-names = "bus", "core";
0158
0159 video-decoder {
0160 compatible = "venus-decoder";
0161 };
0162
0163 video-encoder {
0164 compatible = "venus-encoder";
0165 };
0166 };