Back to home page

OSCL-LXR

 
 

    


0001 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
0002 
0003 %YAML 1.2
0004 ---
0005 $id: "http://devicetree.org/schemas/media/qcom,msm8996-venus.yaml#"
0006 $schema: "http://devicetree.org/meta-schemas/core.yaml#"
0007 
0008 title: Qualcomm Venus video encode and decode accelerators
0009 
0010 maintainers:
0011   - Stanimir Varbanov <stanimir.varbanov@linaro.org>
0012 
0013 description: |
0014   The Venus IP is a video encode and decode accelerator present
0015   on Qualcomm platforms
0016 
0017 properties:
0018   compatible:
0019     const: qcom,msm8996-venus
0020 
0021   reg:
0022     maxItems: 1
0023 
0024   interrupts:
0025     maxItems: 1
0026 
0027   power-domains:
0028     maxItems: 1
0029 
0030   clocks:
0031     maxItems: 4
0032 
0033   clock-names:
0034     items:
0035       - const: core
0036       - const: iface
0037       - const: bus
0038       - const: mbus
0039 
0040   iommus:
0041     maxItems: 20
0042 
0043   memory-region:
0044     maxItems: 1
0045 
0046   video-decoder:
0047     type: object
0048 
0049     properties:
0050       compatible:
0051         const: venus-decoder
0052 
0053       clocks:
0054         maxItems: 1
0055 
0056       clock-names:
0057         items:
0058           - const: core
0059 
0060       power-domains:
0061         maxItems: 1
0062 
0063     required:
0064       - compatible
0065       - clocks
0066       - clock-names
0067       - power-domains
0068 
0069     additionalProperties: false
0070 
0071   video-encoder:
0072     type: object
0073 
0074     properties:
0075       compatible:
0076         const: venus-encoder
0077 
0078       clocks:
0079         maxItems: 1
0080 
0081       clock-names:
0082         items:
0083           - const: core
0084 
0085       power-domains:
0086         maxItems: 1
0087 
0088     required:
0089       - compatible
0090       - clocks
0091       - clock-names
0092       - power-domains
0093 
0094     additionalProperties: false
0095 
0096   video-firmware:
0097     type: object
0098 
0099     description: |
0100       Firmware subnode is needed when the platform does not
0101       have TrustZone.
0102 
0103     properties:
0104       iommus:
0105         maxItems: 1
0106 
0107     required:
0108       - iommus
0109 
0110 required:
0111   - compatible
0112   - reg
0113   - interrupts
0114   - power-domains
0115   - clocks
0116   - clock-names
0117   - iommus
0118   - memory-region
0119   - video-decoder
0120   - video-encoder
0121 
0122 additionalProperties: false
0123 
0124 examples:
0125   - |
0126         #include <dt-bindings/interrupt-controller/arm-gic.h>
0127         #include <dt-bindings/clock/qcom,mmcc-msm8996.h>
0128 
0129         video-codec@c00000 {
0130                 compatible = "qcom,msm8996-venus";
0131                 reg = <0x00c00000 0xff000>;
0132                 interrupts = <GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>;
0133                 clocks = <&mmcc VIDEO_CORE_CLK>,
0134                          <&mmcc VIDEO_AHB_CLK>,
0135                          <&mmcc VIDEO_AXI_CLK>,
0136                          <&mmcc VIDEO_MAXI_CLK>;
0137                 clock-names = "core", "iface", "bus", "mbus";
0138                 power-domains = <&mmcc VENUS_GDSC>;
0139                 iommus =  <&venus_smmu 0x00>,
0140                           <&venus_smmu 0x01>,
0141                           <&venus_smmu 0x0a>,
0142                           <&venus_smmu 0x07>,
0143                           <&venus_smmu 0x0e>,
0144                           <&venus_smmu 0x0f>,
0145                           <&venus_smmu 0x08>,
0146                           <&venus_smmu 0x09>,
0147                           <&venus_smmu 0x0b>,
0148                           <&venus_smmu 0x0c>,
0149                           <&venus_smmu 0x0d>,
0150                           <&venus_smmu 0x10>,
0151                           <&venus_smmu 0x11>,
0152                           <&venus_smmu 0x21>,
0153                           <&venus_smmu 0x28>,
0154                           <&venus_smmu 0x29>,
0155                           <&venus_smmu 0x2b>,
0156                           <&venus_smmu 0x2c>,
0157                           <&venus_smmu 0x2d>,
0158                           <&venus_smmu 0x31>;
0159                 memory-region = <&venus_mem>;
0160 
0161                 video-decoder {
0162                         compatible = "venus-decoder";
0163                         clocks = <&mmcc VIDEO_SUBCORE0_CLK>;
0164                         clock-names = "core";
0165                         power-domains = <&mmcc VENUS_CORE0_GDSC>;
0166                 };
0167 
0168                 video-encoder {
0169                         compatible = "venus-encoder";
0170                         clocks = <&mmcc VIDEO_SUBCORE1_CLK>;
0171                         clock-names = "core";
0172                         power-domains = <&mmcc VENUS_CORE1_GDSC>;
0173                 };
0174         };