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