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