xref: /freebsd-src/sys/contrib/device-tree/Bindings/media/qcom,sdm660-venus.yaml (revision fac71e4e09885bb2afa3d984a0c239a52e1a7418)
18cc087a1SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
28cc087a1SEmmanuel Vadot%YAML 1.2
38cc087a1SEmmanuel Vadot---
4*fac71e4eSEmmanuel Vadot$id: http://devicetree.org/schemas/media/qcom,sdm660-venus.yaml#
5*fac71e4eSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
68cc087a1SEmmanuel Vadot
7*fac71e4eSEmmanuel Vadottitle: Qualcomm SDM660 Venus video encode and decode accelerators
88cc087a1SEmmanuel Vadot
98cc087a1SEmmanuel Vadotmaintainers:
108cc087a1SEmmanuel Vadot  - Stanimir Varbanov <stanimir.varbanov@linaro.org>
118cc087a1SEmmanuel Vadot  - AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
128cc087a1SEmmanuel Vadot
138cc087a1SEmmanuel Vadotdescription: |
148cc087a1SEmmanuel Vadot  The Venus IP is a video encode and decode accelerator present
158cc087a1SEmmanuel Vadot  on Qualcomm platforms
168cc087a1SEmmanuel Vadot
17*fac71e4eSEmmanuel VadotallOf:
18*fac71e4eSEmmanuel Vadot  - $ref: qcom,venus-common.yaml#
19*fac71e4eSEmmanuel Vadot
208cc087a1SEmmanuel Vadotproperties:
218cc087a1SEmmanuel Vadot  compatible:
228cc087a1SEmmanuel Vadot    const: qcom,sdm660-venus
238cc087a1SEmmanuel Vadot
248cc087a1SEmmanuel Vadot  clocks:
258cc087a1SEmmanuel Vadot    maxItems: 4
268cc087a1SEmmanuel Vadot
278cc087a1SEmmanuel Vadot  clock-names:
288cc087a1SEmmanuel Vadot    items:
298cc087a1SEmmanuel Vadot      - const: core
308cc087a1SEmmanuel Vadot      - const: iface
318cc087a1SEmmanuel Vadot      - const: bus
328cc087a1SEmmanuel Vadot      - const: bus_throttle
338cc087a1SEmmanuel Vadot
348cc087a1SEmmanuel Vadot  interconnects:
358cc087a1SEmmanuel Vadot    maxItems: 2
368cc087a1SEmmanuel Vadot
378cc087a1SEmmanuel Vadot  interconnect-names:
388cc087a1SEmmanuel Vadot    items:
398cc087a1SEmmanuel Vadot      - const: cpu-cfg
408cc087a1SEmmanuel Vadot      - const: video-mem
418cc087a1SEmmanuel Vadot
428cc087a1SEmmanuel Vadot  iommus:
438cc087a1SEmmanuel Vadot    maxItems: 20
448cc087a1SEmmanuel Vadot
458cc087a1SEmmanuel Vadot  power-domains:
468cc087a1SEmmanuel Vadot    maxItems: 1
478cc087a1SEmmanuel Vadot
488cc087a1SEmmanuel Vadot  video-decoder:
498cc087a1SEmmanuel Vadot    type: object
508cc087a1SEmmanuel Vadot
518cc087a1SEmmanuel Vadot    properties:
528cc087a1SEmmanuel Vadot      compatible:
538cc087a1SEmmanuel Vadot        const: venus-decoder
548cc087a1SEmmanuel Vadot
558cc087a1SEmmanuel Vadot      clocks:
568cc087a1SEmmanuel Vadot        maxItems: 1
578cc087a1SEmmanuel Vadot
588cc087a1SEmmanuel Vadot      clock-names:
598cc087a1SEmmanuel Vadot        items:
608cc087a1SEmmanuel Vadot          - const: vcodec0_core
618cc087a1SEmmanuel Vadot
628cc087a1SEmmanuel Vadot      power-domains:
638cc087a1SEmmanuel Vadot        maxItems: 1
648cc087a1SEmmanuel Vadot
658cc087a1SEmmanuel Vadot    required:
668cc087a1SEmmanuel Vadot      - compatible
678cc087a1SEmmanuel Vadot      - clocks
688cc087a1SEmmanuel Vadot      - clock-names
698cc087a1SEmmanuel Vadot      - power-domains
708cc087a1SEmmanuel Vadot
718cc087a1SEmmanuel Vadot    additionalProperties: false
728cc087a1SEmmanuel Vadot
738cc087a1SEmmanuel Vadot  video-encoder:
748cc087a1SEmmanuel Vadot    type: object
758cc087a1SEmmanuel Vadot
768cc087a1SEmmanuel Vadot    properties:
778cc087a1SEmmanuel Vadot      compatible:
788cc087a1SEmmanuel Vadot        const: venus-encoder
798cc087a1SEmmanuel Vadot
808cc087a1SEmmanuel Vadot      clocks:
818cc087a1SEmmanuel Vadot        maxItems: 1
828cc087a1SEmmanuel Vadot
838cc087a1SEmmanuel Vadot      clock-names:
848cc087a1SEmmanuel Vadot        items:
858cc087a1SEmmanuel Vadot          - const: vcodec0_core
868cc087a1SEmmanuel Vadot
878cc087a1SEmmanuel Vadot      power-domains:
888cc087a1SEmmanuel Vadot        maxItems: 1
898cc087a1SEmmanuel Vadot
908cc087a1SEmmanuel Vadot    required:
918cc087a1SEmmanuel Vadot      - compatible
928cc087a1SEmmanuel Vadot      - clocks
938cc087a1SEmmanuel Vadot      - clock-names
948cc087a1SEmmanuel Vadot      - power-domains
958cc087a1SEmmanuel Vadot
968cc087a1SEmmanuel Vadot    additionalProperties: false
978cc087a1SEmmanuel Vadot
988cc087a1SEmmanuel Vadotrequired:
998cc087a1SEmmanuel Vadot  - compatible
1008cc087a1SEmmanuel Vadot  - iommus
1018cc087a1SEmmanuel Vadot  - video-decoder
1028cc087a1SEmmanuel Vadot  - video-encoder
1038cc087a1SEmmanuel Vadot
104*fac71e4eSEmmanuel VadotunevaluatedProperties: false
1058cc087a1SEmmanuel Vadot
1068cc087a1SEmmanuel Vadotexamples:
1078cc087a1SEmmanuel Vadot  - |
1088cc087a1SEmmanuel Vadot    #include <dt-bindings/clock/qcom,mmcc-sdm660.h>
1098cc087a1SEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
1108cc087a1SEmmanuel Vadot
1118cc087a1SEmmanuel Vadot    video-codec@cc00000 {
1128cc087a1SEmmanuel Vadot        compatible = "qcom,sdm660-venus";
1138cc087a1SEmmanuel Vadot        reg = <0x0cc00000 0xff000>;
1148cc087a1SEmmanuel Vadot        clocks = <&mmcc VIDEO_CORE_CLK>,
1158cc087a1SEmmanuel Vadot                 <&mmcc VIDEO_AHB_CLK>,
1168cc087a1SEmmanuel Vadot                 <&mmcc VIDEO_AXI_CLK>,
1178cc087a1SEmmanuel Vadot                 <&mmcc THROTTLE_VIDEO_AXI_CLK>;
1188cc087a1SEmmanuel Vadot        clock-names = "core", "iface", "bus", "bus_throttle";
1198cc087a1SEmmanuel Vadot        interconnects = <&gnoc 0 &mnoc 13>,
1208cc087a1SEmmanuel Vadot                        <&mnoc 4 &bimc 5>;
1218cc087a1SEmmanuel Vadot        interconnect-names = "cpu-cfg", "video-mem";
1228cc087a1SEmmanuel Vadot        interrupts = <GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>;
1238cc087a1SEmmanuel Vadot        iommus = <&mmss_smmu 0x400>,
1248cc087a1SEmmanuel Vadot                 <&mmss_smmu 0x401>,
1258cc087a1SEmmanuel Vadot                 <&mmss_smmu 0x40a>,
1268cc087a1SEmmanuel Vadot                 <&mmss_smmu 0x407>,
1278cc087a1SEmmanuel Vadot                 <&mmss_smmu 0x40e>,
1288cc087a1SEmmanuel Vadot                 <&mmss_smmu 0x40f>,
1298cc087a1SEmmanuel Vadot                 <&mmss_smmu 0x408>,
1308cc087a1SEmmanuel Vadot                 <&mmss_smmu 0x409>,
1318cc087a1SEmmanuel Vadot                 <&mmss_smmu 0x40b>,
1328cc087a1SEmmanuel Vadot                 <&mmss_smmu 0x40c>,
1338cc087a1SEmmanuel Vadot                 <&mmss_smmu 0x40d>,
1348cc087a1SEmmanuel Vadot                 <&mmss_smmu 0x410>,
1358cc087a1SEmmanuel Vadot                 <&mmss_smmu 0x421>,
1368cc087a1SEmmanuel Vadot                 <&mmss_smmu 0x428>,
1378cc087a1SEmmanuel Vadot                 <&mmss_smmu 0x429>,
1388cc087a1SEmmanuel Vadot                 <&mmss_smmu 0x42b>,
1398cc087a1SEmmanuel Vadot                 <&mmss_smmu 0x42c>,
1408cc087a1SEmmanuel Vadot                 <&mmss_smmu 0x42d>,
1418cc087a1SEmmanuel Vadot                 <&mmss_smmu 0x411>,
1428cc087a1SEmmanuel Vadot                 <&mmss_smmu 0x431>;
1438cc087a1SEmmanuel Vadot        memory-region = <&venus_region>;
1448cc087a1SEmmanuel Vadot        power-domains = <&mmcc VENUS_GDSC>;
1458cc087a1SEmmanuel Vadot
1468cc087a1SEmmanuel Vadot        video-decoder {
1478cc087a1SEmmanuel Vadot            compatible = "venus-decoder";
1488cc087a1SEmmanuel Vadot            clocks = <&mmcc VIDEO_SUBCORE0_CLK>;
1498cc087a1SEmmanuel Vadot            clock-names = "vcodec0_core";
1508cc087a1SEmmanuel Vadot            power-domains = <&mmcc VENUS_CORE0_GDSC>;
1518cc087a1SEmmanuel Vadot        };
1528cc087a1SEmmanuel Vadot
1538cc087a1SEmmanuel Vadot        video-encoder {
1548cc087a1SEmmanuel Vadot            compatible = "venus-encoder";
1558cc087a1SEmmanuel Vadot            clocks = <&mmcc VIDEO_SUBCORE0_CLK>;
1568cc087a1SEmmanuel Vadot            clock-names = "vcodec0_core";
1578cc087a1SEmmanuel Vadot            power-domains = <&mmcc VENUS_CORE0_GDSC>;
1588cc087a1SEmmanuel Vadot        };
1598cc087a1SEmmanuel Vadot    };
160