1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 2 3%YAML 1.2 4--- 5$id: "http://devicetree.org/schemas/media/qcom,msm8996-venus.yaml#" 6$schema: "http://devicetree.org/meta-schemas/core.yaml#" 7 8title: Qualcomm Venus video encode and decode accelerators 9 10maintainers: 11 - Stanimir Varbanov <stanimir.varbanov@linaro.org> 12 13description: | 14 The Venus IP is a video encode and decode accelerator present 15 on Qualcomm platforms 16 17properties: 18 compatible: 19 const: qcom,msm8996-venus 20 21 reg: 22 maxItems: 1 23 24 interrupts: 25 maxItems: 1 26 27 power-domains: 28 maxItems: 1 29 30 clocks: 31 maxItems: 4 32 33 clock-names: 34 items: 35 - const: core 36 - const: iface 37 - const: bus 38 - const: mbus 39 40 iommus: 41 maxItems: 20 42 43 memory-region: 44 maxItems: 1 45 46 video-decoder: 47 type: object 48 49 properties: 50 compatible: 51 const: venus-decoder 52 53 clocks: 54 maxItems: 1 55 56 clock-names: 57 items: 58 - const: core 59 60 power-domains: 61 maxItems: 1 62 63 required: 64 - compatible 65 - clocks 66 - clock-names 67 - power-domains 68 69 additionalProperties: false 70 71 video-encoder: 72 type: object 73 74 properties: 75 compatible: 76 const: venus-encoder 77 78 clocks: 79 maxItems: 1 80 81 clock-names: 82 items: 83 - const: core 84 85 power-domains: 86 maxItems: 1 87 88 required: 89 - compatible 90 - clocks 91 - clock-names 92 - power-domains 93 94 additionalProperties: false 95 96 video-firmware: 97 type: object 98 additionalProperties: false 99 100 description: | 101 Firmware subnode is needed when the platform does not 102 have TrustZone. 103 104 properties: 105 iommus: 106 maxItems: 1 107 108 required: 109 - iommus 110 111required: 112 - compatible 113 - reg 114 - interrupts 115 - power-domains 116 - clocks 117 - clock-names 118 - iommus 119 - memory-region 120 - video-decoder 121 - video-encoder 122 123additionalProperties: false 124 125examples: 126 - | 127 #include <dt-bindings/interrupt-controller/arm-gic.h> 128 #include <dt-bindings/clock/qcom,mmcc-msm8996.h> 129 130 video-codec@c00000 { 131 compatible = "qcom,msm8996-venus"; 132 reg = <0x00c00000 0xff000>; 133 interrupts = <GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>; 134 clocks = <&mmcc VIDEO_CORE_CLK>, 135 <&mmcc VIDEO_AHB_CLK>, 136 <&mmcc VIDEO_AXI_CLK>, 137 <&mmcc VIDEO_MAXI_CLK>; 138 clock-names = "core", "iface", "bus", "mbus"; 139 power-domains = <&mmcc VENUS_GDSC>; 140 iommus = <&venus_smmu 0x00>, 141 <&venus_smmu 0x01>, 142 <&venus_smmu 0x0a>, 143 <&venus_smmu 0x07>, 144 <&venus_smmu 0x0e>, 145 <&venus_smmu 0x0f>, 146 <&venus_smmu 0x08>, 147 <&venus_smmu 0x09>, 148 <&venus_smmu 0x0b>, 149 <&venus_smmu 0x0c>, 150 <&venus_smmu 0x0d>, 151 <&venus_smmu 0x10>, 152 <&venus_smmu 0x11>, 153 <&venus_smmu 0x21>, 154 <&venus_smmu 0x28>, 155 <&venus_smmu 0x29>, 156 <&venus_smmu 0x2b>, 157 <&venus_smmu 0x2c>, 158 <&venus_smmu 0x2d>, 159 <&venus_smmu 0x31>; 160 memory-region = <&venus_mem>; 161 162 video-decoder { 163 compatible = "venus-decoder"; 164 clocks = <&mmcc VIDEO_SUBCORE0_CLK>; 165 clock-names = "core"; 166 power-domains = <&mmcc VENUS_CORE0_GDSC>; 167 }; 168 169 video-encoder { 170 compatible = "venus-encoder"; 171 clocks = <&mmcc VIDEO_SUBCORE1_CLK>; 172 clock-names = "core"; 173 power-domains = <&mmcc VENUS_CORE1_GDSC>; 174 }; 175 }; 176