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