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,msm8996-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,msm8996-venus
0020
0021 reg:
0022 maxItems: 1
0023
0024 interrupts:
0025 maxItems: 1
0026
0027 power-domains:
0028 maxItems: 1
0029
0030 clocks:
0031 maxItems: 4
0032
0033 clock-names:
0034 items:
0035 - const: core
0036 - const: iface
0037 - const: bus
0038 - const: mbus
0039
0040 iommus:
0041 maxItems: 20
0042
0043 memory-region:
0044 maxItems: 1
0045
0046 video-decoder:
0047 type: object
0048
0049 properties:
0050 compatible:
0051 const: venus-decoder
0052
0053 clocks:
0054 maxItems: 1
0055
0056 clock-names:
0057 items:
0058 - const: core
0059
0060 power-domains:
0061 maxItems: 1
0062
0063 required:
0064 - compatible
0065 - clocks
0066 - clock-names
0067 - power-domains
0068
0069 additionalProperties: false
0070
0071 video-encoder:
0072 type: object
0073
0074 properties:
0075 compatible:
0076 const: venus-encoder
0077
0078 clocks:
0079 maxItems: 1
0080
0081 clock-names:
0082 items:
0083 - const: core
0084
0085 power-domains:
0086 maxItems: 1
0087
0088 required:
0089 - compatible
0090 - clocks
0091 - clock-names
0092 - power-domains
0093
0094 additionalProperties: false
0095
0096 video-firmware:
0097 type: object
0098
0099 description: |
0100 Firmware subnode is needed when the platform does not
0101 have TrustZone.
0102
0103 properties:
0104 iommus:
0105 maxItems: 1
0106
0107 required:
0108 - iommus
0109
0110 required:
0111 - compatible
0112 - reg
0113 - interrupts
0114 - power-domains
0115 - clocks
0116 - clock-names
0117 - iommus
0118 - memory-region
0119 - video-decoder
0120 - video-encoder
0121
0122 additionalProperties: false
0123
0124 examples:
0125 - |
0126 #include <dt-bindings/interrupt-controller/arm-gic.h>
0127 #include <dt-bindings/clock/qcom,mmcc-msm8996.h>
0128
0129 video-codec@c00000 {
0130 compatible = "qcom,msm8996-venus";
0131 reg = <0x00c00000 0xff000>;
0132 interrupts = <GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>;
0133 clocks = <&mmcc VIDEO_CORE_CLK>,
0134 <&mmcc VIDEO_AHB_CLK>,
0135 <&mmcc VIDEO_AXI_CLK>,
0136 <&mmcc VIDEO_MAXI_CLK>;
0137 clock-names = "core", "iface", "bus", "mbus";
0138 power-domains = <&mmcc VENUS_GDSC>;
0139 iommus = <&venus_smmu 0x00>,
0140 <&venus_smmu 0x01>,
0141 <&venus_smmu 0x0a>,
0142 <&venus_smmu 0x07>,
0143 <&venus_smmu 0x0e>,
0144 <&venus_smmu 0x0f>,
0145 <&venus_smmu 0x08>,
0146 <&venus_smmu 0x09>,
0147 <&venus_smmu 0x0b>,
0148 <&venus_smmu 0x0c>,
0149 <&venus_smmu 0x0d>,
0150 <&venus_smmu 0x10>,
0151 <&venus_smmu 0x11>,
0152 <&venus_smmu 0x21>,
0153 <&venus_smmu 0x28>,
0154 <&venus_smmu 0x29>,
0155 <&venus_smmu 0x2b>,
0156 <&venus_smmu 0x2c>,
0157 <&venus_smmu 0x2d>,
0158 <&venus_smmu 0x31>;
0159 memory-region = <&venus_mem>;
0160
0161 video-decoder {
0162 compatible = "venus-decoder";
0163 clocks = <&mmcc VIDEO_SUBCORE0_CLK>;
0164 clock-names = "core";
0165 power-domains = <&mmcc VENUS_CORE0_GDSC>;
0166 };
0167
0168 video-encoder {
0169 compatible = "venus-encoder";
0170 clocks = <&mmcc VIDEO_SUBCORE1_CLK>;
0171 clock-names = "core";
0172 power-domains = <&mmcc VENUS_CORE1_GDSC>;
0173 };
0174 };