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